このコマンドを使用してpsexec \\ip_address -u user_name -p psw cmd
リモート デスクトップに接続し、コマンドを実行します。Power Shell またはコマンド プロンプトでこれを使用すると機能しますが、Power Shell ISE では機能しません。ISE ではエラーは発生しませんが、実行が開始されると、停止するまで終了しません。
実行が開始されると、終了することはなく、リモート デスクトップに接続されません。エラーも発生しませんが、PowerShell または CMD では完全に動作します。
答え1
まず、コードのスクリーンショットは、私たちにとってはまったく役に立ちません。スクリーンショットは、あなたが行った操作を再度入力することを強制しますが、ほとんどの人はそれを望みません。
psexec は対話型コマンド ツールであるため、ISE で使用できますが、必要なすべてのパラメータを渡す必要があります。
これは psexec の制限ではありません。たとえば、nslookup を試して同じ問題を確認してください。cmd/console の場合のように、ISE コンソールまたは IDE スクリプト ペインで多くの対話型 DOS/CMD コマンドを使用することはできません。これは設計上の問題ではありません。
これは ISE リリース以降に文書化されています。
FTP や netsh などのアプリの場合、ISE がコンソール アプリケーションと対話する方法にはいくつかの制限があるので、注意が必要です。
まず、ISE はユーザー入力を必要としないコンソール アプリを問題なく実行します。たとえば、「ping www.microsoft.com」や「cmd /c dir /s」などです。
パイプは ISE でも正常に機能します。たとえば、PS C:\Users\ibrar> “show mode” | netsh netsh>online
ユーザーの介入を必要としないスクリプトの自動化は問題ありません。
ただし、入力を必要とする「cmd /k」を実行すると、ISE が停止し、Ctrl + Break キーを使用するか、停止ボタンを押してパイプラインを停止する必要があります。
必要に応じてコンソールホストにシェルアウトして、Start-Process コマンドレット。または他の開始方法のいずれか。
見る:
PowerShell で実行可能ファイルを実行する | IT Pro
- コールオペレーターとTechnet
理由: 文字列を単一のコマンドとして扱うために使用されます。スペースの処理に便利です。
PowerShell V2.0 では、7z.exe (7-Zip.exe) または数字で始まる別のコマンドを実行する場合、コマンド呼び出し演算子 & を使用する必要があります。
PowerShell V3.0 パーサーはよりスマートに動作するようになりました。この場合、 & は不要になります。
詳細: コマンド、スクリプト、またはスクリプト ブロックを実行します。呼び出し演算子 (「呼び出し演算子」とも呼ばれます) を使用すると、変数に格納され、文字列で表されるコマンドを実行できます。呼び出し演算子はコマンドを解析しないため、コマンド パラメータを解釈できません。
Example:
& 'C:\Program Files\Windows Media Player\wmplayer.exe' "c:\videos\my home video.avi" /fullscreen
つまり、あなたの psexec は...
& 'C:\Tools\psexec.exe' "Your command arguments" /accepteula