PowerShell und der Secure String
Wenn man,wie in meinen letzen Blogeinträgen ([1] und [2]) gezeigt, Benutzer im AD per PowerShell anlegen möchte, ist es durchaus sinnvoll bei jedem Benutzer ein zufälliges Passwort zu vergeben. Die PowerShell verwendet für Passwörter den sogenannten Secure String. Um das Erzeugen eines zufälligen SecureString mit fester länge soll es im Folgenden gehen.
Der Secure String
Will man den Befehl New-Aduser ... -Accountpassword $Password ausführen, will die PowerShell die Variable $Password als Secure String übergeben bekommen.
Eine einfache Möglichkeit aus einem gewöhnlichen String $String einen Secure String $Secure zu erstellen ist folgender Befehl:
$Secure = $String | ConvertTo-SecureString -AsPlainText -Force
-AsPlainText gibt an, dass es sich um einen einfachen String handelt, -Force vermeidet unnötige Bestätigungsfragen der PowerShell
Der Zufall
Das Erzeugen eines zufälligen Strings erfolgt über das mehrfache, zufällige Ziehen aus einem char-Array. Erzeugen wir uns zunächst ein char-Array mit allen ASCII-Zeichen von 33 - 127 (Buchstaben, Zahlen und einige Sonderzeichen):
[char[]](33..127)
Der Befehl Get-Random zieht aus einem übergebenen Array zufällig einen Eintrag. Mit dem Parameter -Count kann man festlegen, wie oft gezogen werden soll.
Get-Random -Count 8 zieht also 8 mal.
Um nun ein zufälliges Passwort der Länge 8 zu erstellen, erzeugen wir uns zunächst 8 zufällige chars und konkatenieren diese über -join:
$String = (-join ([char[]](33..127)) | Get-Random -Count 8 )
Nun wandeln wir die Variable $String noch in einen Secure String um und schon haben wir das zufällige Passwort:
$Password = $String | ConvertTo-SecureString -AsPlainText -Force
[1] https://www.escde.net/blog/benutzerverwaltung-im-ad-uber-powershell-skripte?rq=Benutzerverwaltung%20im%20AD [2] https://www.escde.net/blog/benutzerverwaltung-per-powershell-mit-gui?rq=Benutzerverwaltung%20im%20AD
- ASP.NET 1
- Active Directory 41
- Administration Tools 1
- Allgemein 60
- Backup 4
- ChatBots 5
- Configuration Manager 3
- DNS 1
- Data Protection Manager 1
- Deployment 24
- Endpoint Protection 1
- Exchange Server 62
- Gruppenrichtlinien 4
- Hyper-V 18
- Intune 1
- Konferenz 1
- Künstliche Intelligenz 7
- Linux 3
- Microsoft Office 11
- Microsoft Teams 1
- Office 365 11
- Office Web App Server 1
- Powershell 21
- Remote Desktop Server 1
- Remote Server 1
- SQL Server 8
- Sharepoint Server 12
- Sicherheit 1
- System Center 10
- Training 1
- Verschlüsselung 2
- Virtual Machine Manager 1
- Visual Studio 1
- WSUS 7
- Windows 10 12
- Windows 8 9
- Windows Azure 4
- Windows Client 1
- Windows Server 24
- Windows Server 2012 7
- Windows Server 2012R2 15
- Windows Server 2016 7
- Windows Server 2019 2
- Windows Server 2022 1
- Zertifikate 4