これを理解するのに苦労しています。ユーザー名とパスワードを要求する vbscript があります。次に、スクリプトは PSExec.exe を実行し、これらを次のようにコマンド ラインに渡します。
strUser = Inputbox("Username:","Username")
strPassword = Inputbox("Password:","Password")
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "%comspec% /K psexec.exe \\workstation -u " & struser _
& " -p " & strPassword & " -d calc.exe", 1, false
パスワードにキャレットが含まれていない場合、これは正常に機能します。しかし、パスワードが「Pass)(*&^%$#@!」の場合など、パスワードがある場合は、psexec から次のエラーが表示されます。
'%$#@!' is not recognized as an internal or external command,
operable program or batch file.
キャレットはコマンドラインによってスペースとして読み取られているため、このコマンドを実行しようとしていると考えられます。
psexec.exe \\workstation64 -u User -p Pass)(*& %$#@! -d Calc.exe
ご覧のとおり、キャレットの代わりにスペースがあるため、psexec は %$#@! を参照します。コマンドとして。
バッチ ファイルを使用するときにそれを渡す例を見てきましたが、この場合は機能しません。エクストラ ^ を追加すると、このように ^^ バットファイルで機能します。
コマンドラインにキャレットを渡すにはどうすればよいですか????
アップデート......
今日、職場で約 45 分間これに取り組みましたが、うまくいきませんでした。最初に試したのは、パスワードに引用符を追加することでしたが、それでも機能しませんでした。ここの家でテストしたところ、問題なく動作しました.......職場のOSはWindows XPで、家ではWindows 7を実行しています。Windows 7で自宅で動作させるために私がしたことは次のとおりです。
strUser = Inputbox("Username:","Username")
strPassword = Inputbox("Password:","Password")
strPassword = chr(34) & strPassword & chr(34)
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "%comspec% /K psexec.exe \\workstation -u " & struser _
& " -p " & strPassword & " -d calc.exe", 1, false