Die folgenden beiden Skripte erledigen die gewünschte Aufgabe, wenn Sie ein anderes, unter Windows frei verfügbares Tool sinnvoll einsetzen.
Erstens: GetPwd.cmd:
@echo off
:: GetPwd.cmd - Get password with no echo.
<nul: set /p passwd=Password:
for /f "delims=" %%i in ('cscript /nologo GetPwd.vbs') do set passwd=%%i
echo.
:: This bit's just to prove we have the password.
echo %passwd%
Dann: GetPwd.vbs:
' GetPwd.vbs - Get password with no echo then echo it. '
Set oScriptPW = CreateObject("ScriptPW.Password")
strPassword = oScriptPW.GetPassword()
Wscript.StdOut.WriteLine strPassword
Erläuterung:
GetPwd.vbs verwendet einfach das Passwort-Objekt, um das Passwort des Benutzers einzugeben und es dann auf der Standardausgabe auszugeben (im nächsten Abschnitt wird erklärt, warum es nicht im Terminal angezeigt wird).
GetPwd.cmd ist etwas komplizierter (aber das sind Befehlsskripte in der Regel).
El "<nul: set /p passwd=Password: "
Befehl gibt einfach die Eingabeaufforderung ohne CR/LF am Ende aus - ein raffinierter Weg, die bash-eigene "echo -n"
. Sie setzt passwd
zu einer leeren Zeichenkette als Nebeneffekt und wartet nicht auf eine Eingabe, da es seine Eingabe vom nul: Gerät erhält.
El "for /f "delims=" %%i in ('cscript /nologo GetPwd.vbs') do set passwd=%%i"
Aussage ist der schwierigste Teil. Sie führt das vbscript ohne Microsoft-Werbung aus ( /nologo
), so dass die einzige Ausgabezeile das Passwort ist (aus dem vbscript "Wscript.StdOut.WriteLine strPassword"
.
Um Eingabezeilen mit Leerzeichen zu erfassen, müssen die Begrenzungszeichen auf Null gesetzt werden, da sonst nur das erste Wort ausgegeben wird. Die "for ... do set ..."
establece passwd
ist das tatsächliche Kennwort, das vom Vbscript ausgegeben wird.
Dann geben wir eine Leerzeile aus (beenden also die "Password: "
Zeile) und geben Sie das Passwort ein, damit Sie überprüfen können, ob es funktioniert:
C:\Pax> GetPwd
Password:
this is my password
C:\Pax>
Die scriptpw.dll ist mit XP und 2K3 verfügbar, aber nicht unbedingt mit späteren Versionen.
Anleitungen für Vista und vermutlich auch für Win7 finden Sie unten, probieren Sie sie aus:
Um das Passwort zu maskieren, nutzt das Skript das COM-Objekt ScriptPW. ScriptPW ist unter Windows XP und Windows 2003 standardmäßig geladen. Wenn Sie mit Windows 2000 oder Windows Vista arbeiten, müssen Sie das scriptpw.dll
Datei aus der Windows\System32
eines XP-Systems oder eines Windows 2003-Systems in den Ordner Winnt\System32
o Windows\System32
Ordner auf Ihrem Windows 2000- oder Vista-System. Sobald die DLL kopiert wurde, müssen Sie sie registrieren, indem Sie den Befehl ausführen:
regsvr32 scriptpw.dll
Um die DLL auf einem Vista-Rechner erfolgreich zu registrieren, müssen Sie die Eingabeaufforderung als Administrator öffnen. Klicken Sie dazu auf Start | Alle Programme | Zubehör. Klicken Sie dann mit der rechten Maustaste auf die Verknüpfung mit der Eingabeaufforderung und wählen Sie "Als Administrator ausführen". Sobald Sie die Eingabeaufforderung als Administrator geöffnet haben, können Sie die DLL erfolgreich ausführen. regsvr32 scriptpw.dll
Befehl, um die DLL zu registrieren.
0 Stimmen
Können Sie ein wenig mehr Kontext zur Verfügung stellen; ist dies für Mapping/Zugriff auf eine Freigabe, Anmeldung bei einem Remotecomputer oder etwas anderes?
0 Stimmen
Grundsätzlich sollten Benutzer ihre Anmeldedaten angeben, um sich gegenüber einem Subversion-Repository zu authentifizieren. Inzwischen haben wir einen Workaround implementiert, der auf einigen Konventionen basiert, aber es wäre großartig, eine Lösung zu implementieren, ohne solche Beschränkungen aufstellen zu müssen, die die Sicherheitsstärke deutlich verringern.
0 Stimmen
Eine sehr wichtige Frage. Wir brauchen Skripte zum Starten von Anwendungen, solche Skripte müssen archiviert werden, aber Passwörter dürfen nicht in Skripten gespeichert werden, nicht in Skripten archiviert werden und bei der Eingabe nicht auf dem Bildschirm erscheinen