Powershell: Verschüsseltes Passwort verwenden
Hallo zusammen,
das Passwort eines Domain-Benutzers, welcher Daten vom Dateisystem kopiert, soll verschlüsselt werden. Derzeit steht es in den Skripts immer als Klartext.
Das Passwort wurde wie folgt mit PowerShell verschlüsselt:Anschließend lese ich die Datei als Passwort ein, um mich an das Dateisystem anzumelden:Leider erhalte ich immer, dass das Netzwerkkennwort falsch ist.
Verwendet jemand in seinen Scripts verschlüsselte Passwörter inklusive Anmeldung per net use?
Danke und Gruß, Sascha
das Passwort eines Domain-Benutzers, welcher Daten vom Dateisystem kopiert, soll verschlüsselt werden. Derzeit steht es in den Skripts immer als Klartext.
Das Passwort wurde wie folgt mit PowerShell verschlüsselt:
'mypassword' | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File $File
$User = 'mydomain\testuser'
$UserPass = Get-Content $File | ConvertTo-SecureString
net use Z: $Z /user:$User $UserPass
Verwendet jemand in seinen Scripts verschlüsselte Passwörter inklusive Anmeldung per net use?
Danke und Gruß, Sascha
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 291521
Url: https://administrator.de/forum/powershell-verschuesseltes-passwort-verwenden-291521.html
Ausgedruckt am: 22.12.2024 um 12:12 Uhr
5 Kommentare
Neuester Kommentar
Ja nee das geht so nicht, weil $userpass im Format Secure-String ist was du ja gerade mit ConvertTo-SecureString machst, also kein Plaintext sondern ein Object und netuse erwartet hier ja kein Object sondern einen String !
Wenn du das reine Passwort aus dem Secure-String brauchst musst du es zurückwandeln
Hier ein Beispiel
oder man macht es über ein Credential Object und dem Securestring-Object um an das Plaintextpasswort zu kommen:
Gruß grexit
Wenn du das reine Passwort aus dem Secure-String brauchst musst du es zurückwandeln
Hier ein Beispiel
<#
Ver- und Entschlüsselung eines Passwortes mit Hilfe eines Secure-Strings
(Wichtiger Hinweis: verwendet werden kann der verschlüsselte String nur auf dem selben Rechner mit dem selben Account)
#>
$password = read-host -prompt "Passwort eingeben"
# Password verschlüsselt als String speichern
$securetext = ConvertTo-SecureString $password -force -asPlainText | ConvertFrom-SecureString
write-host "Der Verschlüsselungs-String des Passwortes lautet:`r`n" -ForegroundColor Green
write-host $securetext -ForegroundColor Yellow
# Passwort aus dem String entschlüsseln
$decrypted = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR((ConvertTo-SecureString -String $securetext)))
write-host "`r`nDecrypte das Password aus dem Verschlüsselungs-String ... das Passwort lautet: " -ForegroundColor Green -NoNewline
write-host "$decrypted" -ForegroundColor Red -BackgroundColor White
$cred = New-Object PSCredential("USERNAME",$DEINSECURESTRINGOBJECT)
$cred.GetNetworkCredential().Password
Moin,
p.s. es gibt in Powershell auch New-PSDrive dem man Credentials übergeben kann
Frohes Fest
Gruß jodel32
p.s. es gibt in Powershell auch New-PSDrive dem man Credentials übergeben kann
$File = "C:\pass.txt"
$cred = New-Object PSCredential("USERNAME",(Get-Content $File | ConvertTo-SecureString))
New-PSDrive -Name Z -Root "\\SERVER\FREIGABE" -Credential $cred -PSProvider FileSystem
Gruß jodel32
> net use Z: $Z /user:$User $UserPassDecrypted
>
Hallo,
aber so kann doch jeder der dies ausführen darf sich eine Kopie der Batchdatei machen und dort ein
echo $UserPassDecrypted
Stefan
aber so kann doch jeder der dies ausführen darf sich eine Kopie der Batchdatei machen und dort ein
@StefanKittel Falsch, das stimmt so eben nicht, denn an das Passwort kommt man nur, wenn das Skript mit dem Benutzer mit dem der SecureString erstellt wurde ausgeführt wird, und auch nur auf dem selben Rechner... So leicht ist es also nicht.Der Part zum anlegen des SecureStrings kommt natürlich nicht ins Finale Skript sondern dient nur einmalig dazu den SecureString zu erstellen.
Der SecureString ist also an Account und Client gebunden auf dem er erstellt wurde!
http://social.technet.microsoft.com/wiki/contents/articles/4546.working ...
Eine echte starke Verschlüsselung ersetzt das sicher nicht, aber es erhöht den Aufwand, und ist allemal besser als das PW im Klartext einzupflanzen, noch besser wäre es wenn er dem Account die entsprechenden Rechte auf das Netzlaufwerk vergibt dann wäre es obsolet.
Gruß jodel32