Batch script in Powershell umschreiben um Kennwortverschlüsselung gewährleisten zu können
Edit:
Sorry hatte den letzten Post zu schnell rein gepresst.
Moin zusammen,
Es geht um folgendes Skript:
Ausgabe eines Batchbefehls in Variable setzen und dann mit Systemzeit vergleichen
:repeat
@echo
set "storageArraytime="
for /f "tokens=5" %%i in ('"C:\Program Files (x86)\Dell\MD Storage Software\MD Storage Manager\client\SMcli.exe" 192.168.17.245 192.168.17.246 -c "show storageArray time;" -p Passwort ^| findstr /c:"Date/Time:"') do if not defined storageArraytime set "storageArraytime=%%i"
if %storageArraytime% NEQ %time:~0,8% goto :TIMESET
else goto :repeat
:TIMESET
"C:\Program Files (x86)\Dell\MD Storage Software\MD Storage Manager\client\SMcli.exe" 192.168.17.245 192.168.17.246 -c "set storageArray time;" -p Passwort
Skript läuft soweit, aber das Kennwort soll nicht im Klartext zu sehen sein.
Daher würde ich es gern in Powershell übersetzen, da hier ja die Möglichkeit besteht, Kennwörter verschlüsselt zu hinterlegen.
Ich habe wenig Lust alles neu zu schreiben, daher die Frage nach der Übersetzung.
Vielen Dank
Sorry hatte den letzten Post zu schnell rein gepresst.
Moin zusammen,
Es geht um folgendes Skript:
Ausgabe eines Batchbefehls in Variable setzen und dann mit Systemzeit vergleichen
:repeat
@echo
set "storageArraytime="
for /f "tokens=5" %%i in ('"C:\Program Files (x86)\Dell\MD Storage Software\MD Storage Manager\client\SMcli.exe" 192.168.17.245 192.168.17.246 -c "show storageArray time;" -p Passwort ^| findstr /c:"Date/Time:"') do if not defined storageArraytime set "storageArraytime=%%i"
if %storageArraytime% NEQ %time:~0,8% goto :TIMESET
else goto :repeat
:TIMESET
"C:\Program Files (x86)\Dell\MD Storage Software\MD Storage Manager\client\SMcli.exe" 192.168.17.245 192.168.17.246 -c "set storageArray time;" -p Passwort
Skript läuft soweit, aber das Kennwort soll nicht im Klartext zu sehen sein.
Daher würde ich es gern in Powershell übersetzen, da hier ja die Möglichkeit besteht, Kennwörter verschlüsselt zu hinterlegen.
Ich habe wenig Lust alles neu zu schreiben, daher die Frage nach der Übersetzung.
Vielen Dank
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 281196
Url: https://administrator.de/forum/batch-script-in-powershell-umschreiben-um-kennwortverschluesselung-gewaehrleisten-zu-koennen-281196.html
Ausgedruckt am: 08.01.2025 um 07:01 Uhr
5 Kommentare
Neuester Kommentar
Moin,
Wenn man jetzt noch wüsste wie deine Textdatei aussieht und was du daraus extrahieren willst, kann man dir helfen...
Wie man Kennwörter mit SecureString einließt kannst du hier sehen:
PowerShell 2.0 sendMail Skript
Gruß jodel32
Ich habe wenig Lust alles neu zu schreiben, daher die Frage nach der Übersetzung.
und hier hat keiner Lust so einen Beitrag überhaupt mal zu lesen der noch nicht mal ein Hallo geschweige denn einen Gruß enthält , hier arbeiten keine Roboter sondern immer noch Menschen! Danke.Wenn man jetzt noch wüsste wie deine Textdatei aussieht und was du daraus extrahieren willst, kann man dir helfen...
Wie man Kennwörter mit SecureString einließt kannst du hier sehen:
PowerShell 2.0 sendMail Skript
Gruß jodel32
So biddeschön:
Bitte unbedingt die Hinweise in den Kommentaren des Codes beachten.
Das Skript Fragt beim ersten mal das Kennwort in einem Dialog ab, dieses wird dann verschlüsselt in einer Textdatei gespeichert.
WICHTIG ! Dieses verschlüsselte Passwort kann nur auf dem selben Rechner und mit dem selben Benutzeraccount genutzt werden unter dem das Skript hinterher läuft !!! Sobald versucht wird es mit der erzeugten Textdatei auf einem anderen Rechner oder einem anderen Benutzeraccount zu benutzen wird dies ein falsches Kennwort zum Ergebnis haben!
Gruß jodel32
Bitte unbedingt die Hinweise in den Kommentaren des Codes beachten.
Das Skript Fragt beim ersten mal das Kennwort in einem Dialog ab, dieses wird dann verschlüsselt in einer Textdatei gespeichert.
WICHTIG ! Dieses verschlüsselte Passwort kann nur auf dem selben Rechner und mit dem selben Benutzeraccount genutzt werden unter dem das Skript hinterher läuft !!! Sobald versucht wird es mit der erzeugten Textdatei auf einem anderen Rechner oder einem anderen Benutzeraccount zu benutzen wird dies ein falsches Kennwort zum Ergebnis haben!
<#
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 Useraccount der den Schlüssel generiert)
#>
# Pfad zur Datei in der das verschlüsselte Passwort gespeichert wird
$securepass = 'C:\temp\pass.txt'
# Existiert das Passwortfile noch nicht erzeuge es
if (!(Test-Path $securepass)){
(Get-Credential).Password | ConvertFrom-SecureString | out-file $securepass
}
# Passwort aus Securestring extrahieren
$pass = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR((ConvertTo-SecureString -String (gc $securepass))))
# Pfad zur Storage Manager EXE
$storagemanager = 'C:\Program Files (x86)\Dell\MD Storage Software\MD Storage Manager\client\SMcli.exe'
# Dauerschleife
while($true){
# aktuelle Zeit
$now = get-date -F 'HH:mm:ss'
# Ausgabe des Befehls speichern
$result = start-process -FilePath $storagemanager -ArgumentList "192.168.17.245 192.168.17.246 -c `"show storageArray time;`" -p $pass" -Wait -NoNewWindow
# Zeit extrahieren
$script_time = [regex]::match($result,'\d{2}:\d{2}:\d{2}').Value
# Wenn Zeit nicht übereinstimmt setze Zeit
if ($now -ne $script_time){
Start-Process -FilePath $storagemanager -ArgumentList "192.168.17.245 192.168.17.246 -c `"set storageArray time;`" -p $pass" -wait -NoNewWindow
}
# 1 Sekunde warten bevor die nächste Prüfung stattfindet
sleep(1)
}
Dann bitte noch auf gelöst setzen. Danke.
Gruß jodel32
Gruß jodel32