Skip to content

Daniels Tagesmeldungen

Kleine IT-Episoden, der Diabetes & das wahre Leben

  • Startseite
  • About me…
    • Lebenslauf
    • Weiterbildung
  • Diabetes melitus
    • Diabetes melitus – Definition/Typen
    • Diabetes melitus – Podcasts
    • Diabetes Typ-2 – Erläuterung
    • Medikament – Metformin
    • IVOM – Präzise Medikamentengabe ins Auge
      • Medikament – Eylea (Aflibercept)
      • Medikament – Lucentis (Ranibizumab )
      • Medikament – Vabysmo (Faricimab)
    • Medikament – Forxiga (Dapagliflozin)
  • Disclaimer
  • Toggle search form

E-Mail mit Anhang versenden über VBA & mit Signatur

Posted on 4. April 20194. April 2019 By Daniel Lensing 4 Kommentare zu E-Mail mit Anhang versenden über VBA & mit Signatur

Zu meinem Artikel „E-Mail mit Anhang versenden über VBA“ gab es gestern einen Kommentar.

In diesem wurde ein Problem aufgebracht, welches sich nicht ganz so einfach lösen lies. Es sollte eine Funktion genutzt werden, die seit Office 2013 nicht mehr zur Verfügung steht. Der Befehlsaufruf hätte die vordefinierte Signatur an das Ende der E-Mail gesetzt werden sollen. Dieses habe ich wie folgt gelöst:

Sub MailversandSignatur()
 
Dim sPath As String
Dim strUser As String
Dim strPfad As String
Dim strSignatur As String
Dim Body As String
Dim Nachricht As Object, OutlookApplication As Object
Set OutlookApplication = CreateObject("Outlook.Application")
Dim Anhang As String
Anhang = ThisWorkbook.FullName
Set Nachricht = OutlookApplication.CreateItem(0)
With Nachricht
.To = "testuser@testdomain.de"
.Subject = "Test"
.Attachments.Add Anhang
 
'Namen der Signatur definieren
strSignatur = "TestSignatur"
 
strUser = Environ("Userprofile")
strPfad = strUser & "\AppData\Roaming\Microsoft\Signatures\" & strSignatur & ".htm"
.htmlBody = "<html><body><p>Sehr geehrte Damen und Herren,</p><p>im Anhang erhalten Sie die Liste.</p><p></p>" & test(strPfad) & "</body></html>"
 
.Display
'.Mail.Send
 
End With
Set OutlookApplication = Nothing
Set Nachricht = Nothing
End Sub
 
 
Function test(sPath As String)
    test = CreateObject("Scripting.FileSystemObject").OpenTextFile(sPath).ReadAll()
End Function

Ich lese die Signatur aus dem Standard-Ablagepfad in Form der gespeicherten HTML-Datei aus. Diese wird an das Ende des „HTMLBody“ der E-Mail angehangen.
Mit der Formatierung benötige ich die „SendKeys“-Methode nicht. Dieses wird in einigen Sicherheitsrelevanten Programmen wie Antiviren-Lösungen als problematisch deklariert.

Office, VBA

Samsung Galaxy Buds – Keine direkte Beigabe beim Kauf

Posted on 4. März 20194. März 2019 By Daniel Lensing Keine Kommentare zu Samsung Galaxy Buds – Keine direkte Beigabe beim Kauf

Aktuell wird das S10 sowie das S10+ vom Hersteller Samsung mit der kostenlosen Beigabe von Galaxy Buds beworben. Diese erhält man allerdings nicht direkt bei der Übergabe des Handys.

Wenn man sich das Handy bei seinem Netz-Provider wie der Telekom, Vodafone oder Telefónica als Neuvertrag bzw. Vertragsupgrade bestellt muss man dieses bis zum 07.03.2019 tun. Des Weiteren muss man einen Samsung-Account. Mit diesem muss eine Geräte Registrierung im Zeitraum zwischen dem 08.03.2019 und dem 05.04.2019 erfolgen. Im Anschluss erhält man das Zubehör per Post.

Um an der Aktion generell teilzunehmen muss es sich um ein Aktionsgerät handeln, welches für den deutschen Markt bestimmt ist. Dieses wird über definierte EAN-Codes gewährleistet, welche auch auf den Verpackungen der Geräte abgedruckt ist. Der Käufer eines solchen Gerätes ist selber dafür verantwortlich zu prüfen, ob er ein entsprechendes Gerät beim Händler erhalten hat.

Im Regelwerk zur Aktion ist ebenfalls definiert, dass die Zustellung der Zugabe in der Regel innerhalb von 45 Tagen nach der Registrierung innerhalb der App zur Verfügung gestellt wird.
Genaueres ist aus den Teilnahmebedingungen zu entnehmen.

Mobilfunk

Exchange – Besprechungsanfragen zentral entfernen

Posted on 3. März 20193. März 2019 By Daniel Lensing Keine Kommentare zu Exchange – Besprechungsanfragen zentral entfernen

Es passiert immer mal wieder, dass Mitarbeiter Firmen verlassen oder eine längere Zeit nicht verfügbar sind. Entsprechend sind aber noch Kollegen und Besprechungsräume durch Termin-Serien blockiert. So kann es sinnvoll sein, diese zu entfernen.

Über den folgenden Befehl werden alle Termine ab einschließlich dem heutigen Datum entfernt:

Remove-CalendarEvents -Identity Leaver@testdomain.onmicrosoft.com -CancelOrganizedMeetings

Dieses funktioniert allerdings nur, wenn die Identität noch nicht gelöscht wurde.

Es gibt auch die Möglichkeit ein Start-Datum und eine Zeitspanne zu definieren. Damit können zum Beispiel alle Termin vom 01.04.2019 innerhalb der kommenden 90 Tage gelöscht werden:

Remove-CalendarEvents -Identity Sabatical@testdomain.onmicrosoft.com -CancelOrganizedMeetings -QueryStartDate 4-1-2019 -QueryWindowInDays 90

So kann der Befehl zum Beispiel für „Sabatical“ oder Mutterschutz-Zeiträume genutzt werden

Über das Argument „-PreviewOnly“ ist auch eine Vorschau möglich. Diese kann zum Beispiel dem Manager des Mitarbeiters zur Verfügung gestellt werden. Damit ist eine Übergabe von Terminen leichter zu koordinieren.

Dieser Befehlssatz kann unter Nutzung von Exchange 2019 und Office 365 angewandt werden.
Genauere Informationen sind bei Microsoft zu finden.

Exchange Server, Office 365

Zertifizierung – Labs in Microsoft Prüfungen

Posted on 2. März 20192. März 2019 By Daniel Lensing Keine Kommentare zu Zertifizierung – Labs in Microsoft Prüfungen

Bei technischen Prüfungen aus dem Hause Microsoft stehen einem unterschiedliche Arten von Beantwortungsmöglichkeiten wie zum Beispiel Multiple Choice zur Verfügung.

Bei den Prüfungen für Azure sind nun auch „Labs“ hinzugekommen. Man erhält mehrere Aufgaben die innerhalb des Azure-Portals gelöst werden müssen. Zur Zeit sind die Prüfungen nur in englischer Straße abzulegen. Dabei ist zu beachten, dass die bereitgestellte Umgebung mit einem englischen Tastatur-Layout ausgestattet ist.

Somit ist es wichtig, dass das Prüfungscenter eine Tastatur-Schablone mit dem erforderlichen Layout zur Verfügung stellt. Ich persönlich stelle mir mit der zur Prüfung bereitgelegten „Löschtafel“ eine Liste selber zur Verfügung. Über das Eingabefeld des Benutzernamens kann recht schnell die Tastaturbelegung geprüft werden.

Generell läuft keine besondere Zeiteinschränkung für die Labs. Aktuell werden ca. 70% vor und 30% der herkömmlichen Frageformen nach den Labs. Die Einteilung der Prüfungszeit liegt bei einem selber. Auch hier nutze ich die Löschtafel, so dass ich mir die Anzahl der beantworteten Fragen notiere. Das gibt mir ein ganzes Stück mehr Sicherheit bei der Zeiteinteilung.

Generell kenne ich allerdings die Situation Prüfungen in der entsprechenden Umgebung zu absolvieren. In den Zertifizierungen für den „Microsoft Office Specialist“ arbeitet im jeweiligen Office-Produkt und kann „alle“ Funktionen der Applikationen nutzen. Die Hilfe ist selbstverständlich deaktiviert.

Ich finde diese Art der Wissensabfrage sehr gut, da man sein Wissen viel besser darstellen kann und zusätzlich wird die Wissenserlangung über Braindumps erschwert. Was mir dabei immer wieder auffällt, ist die Möglichkeit sich in den Funktionen zu verlieren und somit in ein potentielles Zeitproblem zu geraten.

Zur Erläuterung: Die Löschtafel ist ein eingeschweißtes Blatt, welches mit einem wasserlöslichen Stift beschrieben wird. Dieses wird vor der Prüfung vom Testcenter-Leiter zur Verfügung gestellt und nach dieser wieder übergeben.

Zertifizierung

Telekom Mobilfunk – 500 MB Datenvolumen im März

Posted on 1. März 201912. Dezember 2023 By Daniel Lensing Keine Kommentare zu Telekom Mobilfunk – 500 MB Datenvolumen im März

Im Februar 2019 wurden Nutzern der „Mein Magenta“-App des Mobilfunkanbieters Deutsche Telekom AG 300 MB Datenvolumen geschenkt. Für den März wurde dieses noch einmal aufgestockt. So werden nun 500 MB zusätzliches HighSpeed-Internet angeboten.

Diese Aufstockung gilt auch für die Prepaid-Reihe Xtra. Es muss allerdings bereits ein Datentarif gebucht sein. Altverträge ohne festes Datenkontigent können von diesem Angebot nicht partizipieren.

App für Android-Nutzer:

MeinMagenta: Handy & Festnetz
MeinMagenta: Handy & Festnetz
Download QR-Code
MeinMagenta: Handy & Festnetz
Entwickler: Telekom Deutschland GmbH
Preis: Kostenlos

App für iPhone-Nutzer

MeinMagenta: Handy & Festnetz
MeinMagenta: Handy & Festnetz
Download QR-Code
MeinMagenta: Handy & Festnetz
Entwickler: Telekom Deutschland GmbH
Preis: Kostenlos

Wenn man sich die App nicht auf sein Handy installieren möchte, kann man die Vergrößerung des Volumen auch über das Kundencenter im Internet buchen.

Am 31.03. endet die Aktion und nicht verbrauchtes Volumen verfällt. Generell wird nach Aktivierung des Daten-Geschenks erst dieses Kontingent genutzt und anschließend auf das HighSpeed-Volumen des Vertrages zugegriffen.

 

Mobilfunk

Powershell: Abfrage des AD-User-Passwortalters

Posted on 19. Februar 201919. Februar 2019 By Daniel Lensing Keine Kommentare zu Powershell: Abfrage des AD-User-Passwortalters

Im Rahmen einer Entstörung von AD-Benutzeraccounts benötigte ich die aktuelle Passwort-Daten beim Anruf der Benutzer. Dazu habe ich mir ein kleines Skript geschrieben. Dieses berücksichtigt die folgenden Szenarien:

  • AD-Benutzer gibt es nicht
  • AD-Benutzer ist deaktiviert
  • AD-Benutzer hat ein Ablaufdatum und dieses ist überschritten
  • AD-Benutzer muss sein Kennwort bei der nächsten Anmeldung ändern
  • AD-Benutzer hat keinen Passwort-Ablauf
  • AD-Benutzer ist gesperrt

Wenn dieses alles nicht zutrifft werden folgende 2 Definitionen zur Berechnung des Passwortalters herangezogen:

  • AD-Benutzer nutzt die Default Domain Policy
  • AD-Benutzer nutzt eine Fine-grained Password Policy
Import-Module ActiveDirectory -Force
 
If ($args)
{
$Userlogin = $args[0]
}
 
else
 
{
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
 
$form = New-Object System.Windows.Forms.Form
$form.Text = 'Passwort-Display'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'
 
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Point(75,120)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = 'OK'
$OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $OKButton
$form.Controls.Add($OKButton)
 
$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Point(150,120)
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$CancelButton.Text = 'Cancel'
$CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.CancelButton = $CancelButton
$form.Controls.Add($CancelButton)
 
$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,20)
$label.Size = New-Object System.Drawing.Size(280,20)
$label.Text = 'Bitte sAMAccountName eingeben:'
$form.Controls.Add($label)
 
$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Location = New-Object System.Drawing.Point(10,40)
$textBox.Size = New-Object System.Drawing.Size(260,20)
$form.Controls.Add($textBox)
 
$form.Topmost = $true
 
$form.Add_Shown({$textBox.Select()})
$result = $form.ShowDialog()
 
if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
    $Userlogin = $textBox.Text
}
 
if ($result -eq [System.Windows.Forms.DialogResult]::Cancel)
{
    exit
}
 
}
 
$Usercheck = Get-Aduser -filter {samaccountname -eq $userlogin}
 
If ($usercheck -eq $NULL)
{
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[System.Windows.Forms.MessageBox]::Show("Der Benutzer existiert nicht.","User " +$Userlogin,0,[System.Windows.Forms.MessageBoxIcon]::Error)
exit
}
 
$employee = Get-AdUser $Userlogin -Properties enabled,PasswordNeverExpires,PasswordLastSet,Displayname,LockedOut,"msDS-UserPasswordExpiryTimeComputed",AccountExpirationDate
 
If ($employee.enabled -like "False")
{
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[System.Windows.Forms.MessageBox]::Show("Benutzer "+$employee.displayname+" ist deaktiviert","User " +$Userlogin,0,[System.Windows.Forms.MessageBoxIcon]::Error)
exit
}
 
If (($employee.AccountExpirationDate) -eq $null)
{
}
else
{
 
$Ablaufdatum = ((get-date) - ($employee.AccountExpirationDate))
$Ablauftage=$Ablaufdatum.days
 
If ($Ablauftage -gt "0")
{
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[System.Windows.Forms.MessageBox]::Show("Benutzer: "+$employee.displayname+"  `n`n"+ "Ablaufdatum des Accounts: "+$employee.AccountExpirationDate,"User " +$Userlogin,0,[System.Windows.Forms.MessageBoxIcon]::Error)
exit
}
 
}
 
 
If ($employee.PasswordLastSet -eq $null)
{
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[System.Windows.Forms.MessageBox]::Show("Benutzer: "+$employee.displayname+"  `n`n"+"Das Passwort des Accounts muss bei der nächsten Anmeldung geändert werden.","User " +$Userlogin,0,[System.Windows.Forms.MessageBoxIcon]::Error)
exit
}
 
If ($employee.passwordneverexpires -like "True")
{
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[System.Windows.Forms.MessageBox]::Show("Benutzer: "+$employee.displayname+"  `n`n"+"Das Passwort des Accounts läuft nicht ab.","User " +$Userlogin,0,[System.Windows.Forms.MessageBoxIcon]::Error)
exit
}
 
If ($employee.LockedOut -like "True")
{
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[System.Windows.Forms.MessageBox]::Show("Benutzer: "+$employee.displayname+"  `n`n"+"Der Account ist gesperrt.","User " +$Userlogin,0,[System.Windows.Forms.MessageBoxIcon]::Error)
exit
}
 
$FGPP=(Get-ADUserResultantPasswordPolicy $Userlogin)
 
If($fgpp.name -eq $null) 
{
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$expireDate=((Get-adUser($Userlogin) -Properties PassWordLastSet).PasswordLastSet + (Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.Ticks)
$daysleft=($expireDate-(get-date)).Days
 
if($daysleft-le "0")
 
{
$daysnegative =-$daysleft
[System.Windows.Forms.MessageBox]::Show("Benutzer: "+$employee.displayname+"  `n`n"+"Regelwerk: Default Domain Policy `n`n"+"Das Passwort ist seit "+<span style="display: inline !important; float: none; background-color: transparent; color: #2b2b2b; cursor: text; font-family: 'Philosopher',sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">$daysnegative</span>+" Tagen abgelaufen. `n`n"+"Genauer Zeitstempel: "+$expireDate+"","User " +$Userlogin,0,[System.Windows.Forms.MessageBoxIcon]::Warning)
}
 
else{
[System.Windows.Forms.MessageBox]::Show("Benutzer: "+$employee.displayname+"  `n`n"+"Regelwerk: Default Domain Policy `n`n"+"Das Passwort muss in "+$daysleft+" Tagen geändert werden. `n`n"+"Genauer Zeitstempel: "+$expireDate+"","User " +$Userlogin,0,[System.Windows.Forms.MessageBoxIcon]::Information)
}
exit
}
 
else{
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$expireDate=((Get-adUser($Userlogin) -Properties PassWordLastSet).PasswordLastSet + (Get-ADUserResultantPasswordPolicy -Identity $Userlogin).MaxPasswordAge.Ticks)
$daysleft=($expireDate-(get-date)).Days
 
if($daysleft-le "0")
 
{
$daysnegative =-$daysleft
[System.Windows.Forms.MessageBox]::Show("Benutzer: "+$employee.displayname+"  `n`n"+"Regelwerk: "+$fgpp.Name+" `n`n"+"Das Passwort ist seit "+$daysnegative+" Tagen abgelaufen. `n`n"+"Genauer Zeitstempel: "+$expireDate+"","User " +$Userlogin,0,[System.Windows.Forms.MessageBoxIcon]::Warning)
}
 
else{
[System.Windows.Forms.MessageBox]::Show("Benutzer: "+$employee.displayname+"  `n`n"+"Regelwerk: "+$fgpp.Name+" `n`n"+"Das Passwort muss in "+$daysleft+" Tagen geändert werden. `n`n"+"Genauer Zeitstempel: "+$expireDate+"","User " +$Userlogin,0,[System.Windows.Forms.MessageBoxIcon]::Information)
}
exit

Damit die Daten ordnungsgemäß abgefragt werden können, benötigt der Ausführende die Leseberechtigungen auf den Container „Password Setting Objects“ im System-Ordner der Domäne.

Das Skript kann per GUI sowie per Skript gestartet werden.

Powershell

Excel – Zellen mit Inhalt zählen

Posted on 15. Februar 201915. Februar 2019 By Daniel Lensing Keine Kommentare zu Excel – Zellen mit Inhalt zählen

Im Rahmen einer Konfigurationsanpassung bei NTFS-Rechten musste festgestellt werden, in welchen Ordnerebenen Änderungen vorgenommen werden müssen. Nach der Ermittlung der Ordnerstruktur in einer Log-Datei habe ich diese in Excel importiert. Zur Erkennung der Ebenen habe ich die Standard-Funktionalität „Text in Spalten“ genutzt. Entsprechend wurden mir die Pfade in den Spalten verteilt.

Die Zählung dieser konnte ich mit der folgenden Formel realisieren:

=ZÄHLENWENN(C2:M2;“*“)

Mit „C2:M2“ sind die Zellen in der Zeile 2 gemeint und somit der Ermittlungsbereich. Durch „*“ wird definiert, dass die Zelle mindestens 1 Zeichen beinhaltet.

Selbstverständlich ist dieses auch mit Spalten möglich. Hier ist ein Beispiel abgebildet:

=ZÄHLENWENN(A2:A9;“*“)

Mit „A2:A9“ sind die Zellen in der Spalte A gemeint.

Eine weitere Funktionalität ist das Zählen definierter Begriffe. Dazu muss das Sternchen in der Formel gegen das gewünschte Wort getauscht werden.

Weitere Informationen zur Funktion „ZÄHLENWENN“ findet man bei Microsoft.

Office

Seitennummerierung der Beiträge

Vorherige 1 … 35 36 37 … 157 Nächste

Daniel Lensing

Ich betreibe diesen Blog, bei dem ich meine Erfahrungen aus der IT & dem Berufsalltag sowie dem Wahnsinn des Lebens mit Höhen und Tiefen. Darunter meine „Erlebnisreise“ zum Planeten „Diabetes mellitus Typ-2“.

Translate:

Follow us

Kategorien

  • Allgemein (1)
  • Client (245)
    • Android (8)
    • Fedora (Linux) (5)
    • iOS (6)
    • Mac OS X (6)
    • Peripherie (5)
    • Ubuntu (Linux) (9)
    • Windows 10 (63)
    • Windows 11 (31)
    • Windows 7 (100)
    • Windows 8 (36)
    • Windows 8.1 (28)
    • Windows Mobile (2)
    • Windows Vista (65)
    • Windows XP (21)
  • Cloud (15)
    • Amazon AWS (1)
    • Microsoft Azure (7)
    • Office 365 (9)
  • Fortbewegung (59)
    • Auto (19)
    • Bahn (19)
    • Beinarbeit (6)
    • Flugzeug (4)
    • Zweirad (15)
  • IT-Nachrichten (37)
  • Leben Beruf und Gesundheit (219)
    • #t2dhero (60)
    • Arbeitszimmer (39)
    • Audio (22)
    • Film / Kino (7)
    • Gedanken (81)
    • Gesundheit (39)
    • Internet (7)
    • Lebensmittel & Essen (23)
    • Lesestoff (21)
    • Sport (11)
    • Veranstaltung (3)
  • Lehren & Lernen (50)
    • Forschung (2)
    • Konferenzen (3)
    • Lehre (1)
    • Präsentation (4)
    • Zertifizierung (42)
  • Programme (334)
    • Android-Apps (28)
    • Eigene Tools (13)
    • iOS-Apps (7)
    • Office (89)
    • Patchday+Updates (77)
    • Software (155)
    • Spiele (3)
    • Windows Phone-Apps (2)
  • Programmierung (97)
    • AutoIT (2)
    • KiXtart (2)
    • PHP (3)
    • Power Automate (1)
    • Powershell (66)
    • VB.NET (11)
    • VBA (10)
    • VBS (10)
  • Server (165)
    • Citrix XenServer (2)
    • Exchange Server (27)
    • Lync Server (1)
    • System Center (4)
    • Ubuntu Server (2)
    • Windows Home Server (2)
    • Windows Server (92)
    • Windows Server 2012 (45)
    • Windows Server 2016 (15)
    • Windows Server 2019 (22)
    • Windows Server 2022 (21)
    • Windows Server 2025 (14)
  • Telekommunikation (38)
    • Festnetz (3)
    • Internet (13)
    • Mobilfunk (23)
  • Verkauf & Verlosung (1)
  • Web-Installationen (37)
    • Joomla (4)
    • Mastodon (1)
    • MediaWiki (10)
    • phpMyAdmin (2)
    • Piwik (4)
    • Wordpress (20)
Mastodon

Copyright © 2026 Daniels Tagesmeldungen.

Powered by PressBook WordPress theme