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

Kategorie: Powershell

Powershell: Attribut „LogonWorkstations“ verwalten

Posted on 12. Juli 202111. Juli 2021 By Daniel Lensing Keine Kommentare zu Powershell: Attribut „LogonWorkstations“ verwalten

Manchmal müssen auch selten genutzte Attribute gepflegt werden. In einem Fall aus der Vergangenheit mussten Probleme mit Verbindungen auf verschiedene Systeme analysiert werden. Dabei ist aufgefallen, dass der Wert „LogonWorkstations“ bei dem Anwender gefüllt war.

Daraufhin habe ich mir dieses Skript erstellt, mit dem man einiges mit dem Aufruf anpassen kann:

# LogonsWorkstation.ps1


# Das Skript kann unterschiedliche Modi:
# s = search 
# Es wird der aktuelle Eintrag angezeigt
# a = add 
# Es wird der aktuelle Eintrag hinzugefügt
# Alle weiteren Einträge werden entfernt
# m = modify
# Es wird der aktuelle Eintrag hinzugefügt
# Alle weiteren Einträge werden übernommen.
# r = replace
# Alle Einträge werden gelöscht
$mode=$args[0]

# Benutzer der angepasst werden soll
$User = $args[1]

# Bezeichnung des neuen Systems
$Workstation = $args[2]

# Gesamter Befehlssatz:
# .\logonWorkstation.ps1 m test01 WKSWin110001
# Dem User test01 wird das System WKSWin110001 zu den vorhandenen Systemen hinzugefügt.
# Sollte kein Eintrag vorhanden sein, wir dieser aks erster gesetzt.


# Ermittlung des aktuellen Wertes
$LogonWorkstations = Get-AdUser -Identity $User -Properties LogonWorkstations | select -ExpandProperty LogonWorkstations


if ($args[0] = "s")
{
$LogonWorkstations
}

if ($args[0] = "a")
{
Set-ADUser -Identity $User -LogonWorkstations "$Workstation"
}


if ($args[0] = "m")
{
Set-ADUser -Identity $User -LogonWorkstations "$LogonWorkstations,$Workstation"
}


if ($args[0] = "r")
{
Set-ADUser -Identity $User -LogonWorkstations $null
}

Hiermit können die üblichen Szenarien einfach umgesetzt werden.

Powershell

Powershell: Zeitelemente berechnen

Posted on 10. Juli 202110. Juli 2021 By Daniel Lensing Keine Kommentare zu Powershell: Zeitelemente berechnen

Ein Tick entspricht 100 Nanosekunden. Die Ticks werden im Normalfall ab dem 01.01.0000 00:00:00 berechnet.

$tick=636763462457113590
$tickcalc=[datetime]($tick)
$tickcalc.tostring("g")

Im Active Directory werden Werte im FileTime-Format gespeichert. Bei diesem Format werden ebenfalls die Ticks verwendet. Das Startdatum ist allerdings der 01.01.1601.

$tick=131296540203012408
$tickcalc=[datetime]::FromFileTime($tick)
$tickcalc.tostring("g")

Eine weitere Art für Ticks nutzt für Unix. Bei diesem Zeitstempel gilt der 01.01.1970 als Startdatum:

$tick=1537615930
$Date = (Get-Date 01.01.1970).AddSeconds($tick)
$Date.tostring("g")

Powershell

Port-Test ohne Ping per Powershell

Posted on 18. März 202117. März 2021 By Daniel Lensing Keine Kommentare zu Port-Test ohne Ping per Powershell

Viele kennen das Cmdlet Test-Connection oder Test-NetConnection um Verbindungen zu testen. Dort kann per -TcpPort bzw. -Port kann auch ein Port geprüft werden. Allerdings wird in beiden Varianten ein Ping vorausgesandt.

Es kann aber sein, dass die „Internet Control Message Protocol (ICMP) Echo Requests“ zu denen auch Pings gehören, in Firewalls gesperrt ist. Trotzdem möchte man aber vielleicht den direkten Port testen.

Dabei hilft das unten stehende Skript:

$destination = "192.168.2.1"
$port ="443"

$connection = new-object Net.Sockets.TcpClient
try{
    $connection.Connect($destination, $port)
} catch {}
 
if($connection.Connected)
    {
        $connection.Close()
        $object = [pscustomobject] @{
                        IP = $destination
                        TCPPort = $port
                        Result = $True }
        Write-Output $object
    }
    else
    {
        $object = [pscustomobject] @{
                        IP = $destination
                        TCPPort = $port
                        Result = $False }
        Write-Output $object

    }
    Write-Host $msg
Powershell, Windows 10, Windows Server

Powershell: Zip-Dateien erstellen und entpacken

Posted on 15. März 202114. März 2021 By Daniel Lensing Keine Kommentare zu Powershell: Zip-Dateien erstellen und entpacken

In manchen Exporten werden viele Dateien erstellt. Zum Versand oder weiteren Ablage kann es sinnvoller sein diese zu bündeln. Im Skripting-Umfeld kann eine ZIP-Datei eine einfache Lösung sein.

Dafür kann der folgende Befehl genutzt werden:

Compress-Archive -Path 'C:\Quelle' -DestinationPath 'C:\Ablage\Dokumente.zip'

Dabei wird automatisch die optimale Kompression im Standard verwandt. Bei einer großen Anzahl an Daten kann dieses über das Argument „-CompressionLevel“ editiert werden:

  • NoCompression
  • Fastest
  • Optimal

Bei „Fastest“ wird schneller verschlüsselt aber auch die Zieldatei wird größer. Bei „NoCompresssion“ werden die Dateien nur zu einer zusammengefasst.

Mit „-Update“ können weitere Dateien einer vorhandenen ZIP-Datei hinzugefügt werden. Zum Beispiel könnte man so eine Monatsdatei erstellt werden.

Selbstverständlich gibt es auch einen Befehl zum entpacken:

Expand-Archive -LiteralPath 'C:\Ablage\Dokumente.zip' -DestinationPath 'C:\Zielordner'

Dabei wird die Zip-Datei an den definierten Zielordner entpackt.
Leider gibt es bei diesen Verfahren keine Möglichkeit die Zip-Datei mit einem Passwort zu schützen.

Zu den Commandlets gibt es natürlich Beschreibungen in den Microsoft Docs

  • Compress-Archive bei Microsoft Docs15
  • Expand-Archive bei Microsoft Docs
Powershell

Powershell: AD-Gruppen zweier Benutzer vergleichen

Posted on 3. März 202128. Februar 2021 By Daniel Lensing Keine Kommentare zu Powershell: AD-Gruppen zweier Benutzer vergleichen

Manchmal benötigt man einen schnellen Vergleich über die AD-Gruppen zweier Benutzer-Accounts. Dieses kann einem im Fehlerfall schnell eine Idee für ein Problem identifizieren.

#Samaccountname der zu vergleichen
 
$user1 = "user1"
$user2 = "user2"
 
Compare-Object -ReferenceObject (Get-AdPrincipalGroupMembership $user1 | select name | sort-object -Property name) -DifferenceObject (Get-AdPrincipalGroupMembership $User2 | select name | sort-object -Property name) -property name -passthru |
 
ForEach-Object {
 
if ($_.SideIndicator -eq '=>') {
 
$_.SideIndicator = 'Group is not assigned to ' +$User1
 
} elseif ($_.SideIndicator -eq '<=') {
 
$_.SideIndicator = 'Group is not assigned to ' +$User2
 
}
 
$_
 
}

Es konnte sehr schnell die fehlende AD-Gruppe ermittelt werden. Manuell hätten dieses definitiv mehr Arbeitszeit gekostet.

Powershell

AD: Existiert zum Nebenbenutzer noch ein Hauptbenutzer

Posted on 26. Februar 202125. Februar 2021 By Daniel Lensing Keine Kommentare zu AD: Existiert zum Nebenbenutzer noch ein Hauptbenutzer

In einigen Active Directory-Umgebungen gibt es neben dem Haupt-Benutzer auch Funktionsbenutzer für administrative Berechtigungen oder auch Software-Lösungen. Dabei kann es interessant sein, ob der Hauptaccount überhaupt existiert.

$Prefix_users = get-aduser -filter "samaccountname -like 'pre_*'"
 
Foreach ($u in $Prefix_users.samaccountname)
 
{
 
$query = $(try {get-aduser $u.split('_')[1]} catch {$null})
 
  if ($query -ne $null) {
 
  write-host $u " - "$u.split('_')[1]" - existiert"
 
  } else {
 
  write-host $u " - "$u.split('_')[1]" - existiert nicht"
 
  }
 
}

Die Darstellung des Status ist nur eine der vielen Möglichkeiten. Die Daten können selbstverständlich auch anders verarbeitet werden. Ein Möglichkeit wäre, den Hauptaccount als Manager des Nebenaccounts einzutragen.

Powershell

Powershell: Ordner nach Dateinamen umbenennen

Posted on 13. Januar 202113. Januar 2021 By Daniel Lensing Keine Kommentare zu Powershell: Ordner nach Dateinamen umbenennen

Ein Tweet einer Person, der ich bei Twitter folge, hatte die folgende Aufgabenstellung:

Kennt jemand ein Tool, mit dem man Ordner in Windows genauso benennen kann wie die Datei, die darin liegt, nur ohne Endung?
Bsp: Ordner heißt Data
Datei heisst 12.10.2020 File.mp3
Ordner soll also 12.10.2020 File heißen.

Das Ganze natürlich für viele Ordner auf einmal.

Ich wusste, dass ich so etwas ähnliches in meiner Skript-Sammlung habe.
Nach einer kurzen Anpassung sind die folgenden Code-Zeilen in Powershell entstanden:

$Folder = "E:\Startordner"
 
$items = get-childitem $Folder -Recurse | where { $_.GetType().Name -eq "FileInfo" }
 
foreach ($item in $items) 
{
$folder = $item.DirectoryName
$file= $item.BaseName
 
Rename-Item -path $folder -Newname $file
}

Es wird rekursiv durch $Folder benannten Ordner nach Dateien gesucht.
Der letzte Ordnername des Dateipfades wird nach dem Namen der Datei benannt.

Powershell

Seitennummerierung der Beiträge

Vorherige 1 … 3 4 5 … 10 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 (244)
    • Android (8)
    • Fedora (Linux) (5)
    • iOS (6)
    • Mac OS X (6)
    • Peripherie (5)
    • Ubuntu (Linux) (9)
    • Windows 10 (63)
    • Windows 11 (30)
    • 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 (218)
    • #t2dhero (59)
    • Arbeitszimmer (38)
    • Audio (22)
    • Film / Kino (7)
    • Gedanken (81)
    • Gesundheit (38)
    • Internet (7)
    • Lebensmittel & Essen (23)
    • Lesestoff (20)
    • Sport (11)
    • Veranstaltung (3)
  • Lehren & Lernen (50)
    • Forschung (2)
    • Konferenzen (3)
    • Lehre (1)
    • Präsentation (4)
    • Zertifizierung (42)
  • Programme (333)
    • Android-Apps (28)
    • Eigene Tools (13)
    • iOS-Apps (7)
    • Office (88)
    • 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 (164)
    • 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 (21)
    • Windows Server 2022 (20)
    • Windows Server 2025 (13)
  • 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