Benutzer-Werkzeuge

Webseiten-Werkzeuge


powershell:allgemein:credentials

Dies ist eine alte Version des Dokuments!


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.

# 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.

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
powershell/allgemein/credentials.1645443252.txt.gz · Zuletzt geändert: 2024/05/27 08:34 (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki