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.
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.
# Kennwort in einer Variable speichern [string]$userPassword = 'wichtiges und geheimes Kennwort 123' # Credential-Objekt aus dem Kennwort erzeugen [SecureString]$secureString = $userPassword | ConvertTo-SecureString -AsPlainText -Force # Den "Secure String" des Kennworts in eine Variable speichern [string]$stringObject = ConvertFrom-SecureString $secureString # Den "Secure String" in einer Datei speichern $stringObject | Set-Content -Path 'C:\ProgramData\Skripte\etc\creds.txt'
Es wird ein Base64-codiertes Objekt vom Typ „Secure String“ erzeugt, dessen Inhalt in einer Datei gespeichert wird. Dieser Inhalt kann dann in Skripten verwendet werden.
Zusammenbau des Credential-Objektes
# 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.
«code powershell»read-host -assecurestring | convertfrom-securestring | out-file C:\ProgramData\Skripte\etc\creds.txt</code>
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
