The estimated reading time 2 minutes
HINWEIS: bitte auf jeden Fall meine anderen beiden Artikel Passwörter in PowerShell Skripten benutzen – Prolog und Passwörter in PowerShell Skripten benutzen Verschlüsselung anschauen.
Nachdem man nun beide Dateien erstellt hat, gibt es natürlich auch die Möglichkeit das Passwort wieder zurückrechnen zu lassen und dieses dann auszugeben.
Zunächst wird das Passwort wieder in einen „Secure.String“ konvertiert, sodass die PowerShell damit arbeiten kann.
DOWNLOAD password reconvert script
Das Skript unterstützt auch allgemeine Parameter, speziell den „verbose“ Parameter.
Grundlagen:
mit diesen Linien können die beiden Dateien wieder zu einem Passwort zusammengefügt werden.
$key = (Get-Content "C:\temp\credtest\aeskey.key") $password = Get-Content "C:\temp\credtest\password.txt" | ConvertTo-SecureString -Key $key $temp = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($password) $PlainPassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($temp) $PlainPassword
Funktion Het-ClearPassword
function Get-ClearPassword { [CmdletBinding(SupportsShouldProcess = $True)] param ( [Parameter(Mandatory= $true)] [string] $credfile, [Parameter(Mandatory= $true)] [string] $encryptfile, [Parameter(Mandatory = $false)] [ValidateSet("YES","NO")] [string]$StorePWClipboard ) #whatif case If ($WhatIfPreference) { Write-Verbose "Getting content from file: $encryptfile" Write-output "password = Get-Content "$credfile" | ConvertTo-SecureString -Key (Get-Content "$encryptfile")" Write-Verbose "Showing plain password in console" Write-Output "plain password:<< SHOWING YOUR PLAIN TRANSLATED PASSWORD >>" Write-Verbose "Clearing variable with plain password" } else { Write-Verbose "Getting content from file: $encryptfile" #loading key $key = (Get-Content "$encryptfile") Write-Verbose "Encypting $credfile with encryption file $encryptfile to secure string." #loading password $password = Get-Content "$credfile" | ConvertTo-SecureString -Key $key #see also https://techibee.com/powershell/convert-system-security-securestring-to-plain-text-using-powershell/2599 Write-Verbose "Converting securestring to plain password" #converting securestring back to plain $temp = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($password) $PlainPassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($temp) Write-Verbose "Showing plain password in console" Write-Output "plain password:<< $PlainPassword >>" #storing password in clipboard if ($StorePWClipboard -eq "YES") { #https://www.powershellmagazine.com/2013/11/13/pstip-clear-clipboard-content/ Set-Clipboard -Value "$PlainPassword" Write-Verbose "Clearing variable with plain password" $PlainPassword = $null $temp = $null $password = $null $key = $null Write-Output "Waiting 60 seconds for clearing password from clipboard..., please do NOT terminate the script!" Start-Sleep -Seconds 60 #clear clipboard after 30 seconds Write-Verbose "Clearing Clipboard after 60 seconds" Add-Type -AssemblyName System.Windows.Forms [System.Windows.Forms.Clipboard]::Clear() } #clearing all variables Write-Verbose "Clearing variable with plain password" $PlainPassword = $null $temp = $null $password = $null $key = $null }
Solltet ihr das Passwort also mal händisch eingeben müssen, könnt ihr das mit diesem Skript direkt erledigen. Wenn euch dieser Artikel oder das Skript gefallen hat, dann drückt auf „helpful“. Lasst mir auch gerne Kommentare da.
Super Artikel, vielen Dank dafür!!
Salut
Ich finde deine Doku superbe. danke auch dafür.
Ich versuche mit ein verschlüsseln Password dieses Script auszuführen in ein Programme, wenn ich es im Powershell ausführe geht es ohne Problem.
.\Powershell.exe -noninteractive -executionpolicy unrestricted -file C:\scripts\WLC_Secure.ps1 -Configfile C:\scripts\controller -Volume MasterTest -Minutes 3. Das Problem bei dieses Programme, es wird mit dem SystemUser ausgeführt. Habe es auch mit PsExec64 ausprobiert leider ohne Erfolg.
Meine Frage an dich, was mache ich Falch, oder besser gesagt wie muss ich das im Progamme ausführen.
Lg Dani
Hallo Dani,
kannst du mal näher beschreiben, was du damit genau machen willst? Geht es um die Ausführung eines PS Skriptes mit einer speziellen Konfigdatei? Stimmt der Pfad zur Konfigdatei? „C:\scripts\controller“ ist keine absoluter Pfad zu den Konfidateien. Andere Möglichkeit wäre das Thema Berechtigungen (hat System Zugriff auf Skript und Konfig Datei(en)? Schon mal mit erhöhten Rechten versucht? Wenn du einen Benutzer (lokaler Adminbenutzer) nimmst?
Kannst du mal ein Log in das Skript einbauen um zu sehen ob dieses überhaupt gestartet wird?
Viele Grüße
Alex