Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Logon-Credentials
Zur Anmeldung von einem System an einem anderen ohne aktive Kennworteingabe, können Logon-Credentials in einer Datei gespeichert und dann als Parameter in einem Skript mitgegeben werden.
Die erzeugte Credential-Datei funktioniert nur im Kontext des Benutzers auf dem System, auf dem sie erzeugt wurde!
Interaktive Anmeldung
Bei der interaktiven Anmeldung kann über den Befehl Get-Credential eine Eingabe der Anmeldedaten abgefragt werden.
Automatische Anmeldung in einem Skript
Speichern eines Kennwortes in einer Datei
Das Speichern eines Klartext-Kennwortes in einer Datei ist aus Sicherheitsgründen problematisch. Um das zu umgehen, verwendet die PowerShell das Format des „Secure String“. Ein Kennwort kann in einer interaktiven PowerShell-Sitzung mit dem folgenden Verfahren als „Secure String“ in einer Datei abgelegt werden. Die Anmeldedaten werden in einer XML-Datei gespeichert, wobei das Kennwort Base64-codiert abgelegt wird.
Get-Credential | Export-CliXml -Path 'C:\ProgramData\Skripte\etc\cred.xml'
Der in der Datei gespeicherte Inhalt kann dann in Skripten verwendet werden.
$credential=Import-CliXml -Path C:\ProgramData\Skripte\etc\cred.xml
Zusammensetzen des Credential-Objektes in einem Skript
# Benutzername und Secure String des Kennworts eingeben: [string]$userName = 'admin' [string]$passwordText = Get-Content 'C:\ProgramData\Skripte\etc\creds.txt' # Convert to secure string [SecureString]$securePassword = $passwordText | ConvertTo-SecureString # Create credential object [PSCredential]$credObject = New-Object System.Management.Automation.PSCredential -ArgumentList $userName, $securePassword
Wichtig
- Auch wenn das Kennwort nur schwer zurückzurechnen ist, kann es im Kontext des Benutzers auf dem System, auf dem es erzeugt wurde, in anderen Skripten verwendet werden. Jemand mit Zugriff auf ein automatisiert laufendes Skript im entsprechenden Kontext könnte das Skript verändern und dabei das Kennwort benutzen.
- Die Credentials lassen sich nur im Kontext des Benutzers auf dem System verwenden, in dem die Datei erzeugt wurde. Sie müssen auf jedem anderen System und in jedem anderen Kontext neu erzeugt werden.
Erzeugen der Credential-Datei
Die PowerShell muss als der Benutzer gestartet werden, in dessen Kontext die Datei genutzt werden soll.
read-host -assecurestring | convertfrom-securestring | out-file C:\ProgramData\Skripte\etc\creds.txt
Das Kennwort des Benutzers eingeben.
Zusammensetzen von Credentials in einem Skript
$smtpServer = smtp.office365.com $smtpFrom = admin@domain.com $smtpTo = logs@domain.com $sender = admin@domain.com $password = Get-Content 'C:\ProgramData\Skripte\etc\creds.txt' |ConvertTo-SecureString $Creds = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $sender $password Send-MailMessage -From $smtpFrom -To $smtpTo -Subject $messagesubject -Body $messagebody -SmtpServer $smtpServer -Credential $Creds -UseSsl -Port 587
