Shell

Powershell – Passwort in einer Datei Abspeichern

cropped Profilbild JoergKarstenVeröffentlicht von

Mit der Powershell funktion ConvertFrom-SecureString und der Windows Data Protection API (DPAPI) kann man Passwörter oder andere wichtige Informationen Rechnerbezogen sicher verschlüsseln und in einer Datei abspeichern.

Alternativ kann man auch ein Key übergeben. Wird kein Key übergeben wird per DPAPI verschlüsselt. Damit ist die verschlüsselte Zeichenkette aber nur auf dem Rechner verwendbar und kann nicht ausgetauscht werden. Dies ist natürlich auch der große Vorteil.

Ausführliche Dokumentation über: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.security/convertfrom-securestring?view=powershell-7.3&viewFallbackFrom=powershell-7.1&WT.mc_id=email

Abspeichern

Ablauf um ein Passwort abzufragen und unter Documents abzuspeichern ist wie folgt:

  1. Abfrage des Dokumentenpfads aus der Registry
  2. Einlesen des Passworts
  3. Konvertierung und Abspeichern in einer Datei
$documentpath = (Get-ItemProperty -Path Registry::"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name Personal).Personal
$password = Read-Host "Bitte Passwort eingeben" -AsSecureString
$password | ConvertFrom-SecureString | Out-File $documentpath\password.txt

Auslesen

Ablauf um ein Passwort aus einer Datei auszulesen und in $credentials abzuspeichern.

  1. Abfrage des Dokumentenpfads aus der Registry
  2. Benutzernamen in Variable schreiben
  3. Passworts aus Datei Auslesen
  4. Benutzername und Passwort in ein Credential Objekt abspeichern
$documentpath = (Get-ItemProperty -Path Registry::"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name Personal).Personal
$username = "Name@domain.de"
$password = Get-Content $documentpath\password.txt | ConvertTo-SecureString
$credentials = New-Object System.Management.Automation.PSCredential ($username, $password)

Wofür das ganze?

Um zum Beispiel in einem Powershellsript eine Mail per SMTP zu versenden.

Send-MailMessage –From <O365 email address> –To <Recipient email address> –Subject "Test Email" –Body "Test SMTP Service from Powershell on Port 587" -SmtpServer smtp.office365.com -Credential $credentials -UseSsl -Port 587

Kommentar hinterlassen