Psexec ツールを使用してリモート デスクトップに接続すると、Powershell と Cmd では機能しますが、PowerShell ISE では機能しません。

Psexec ツールを使用してリモート デスクトップに接続すると、Powershell と Cmd では機能しますが、PowerShell ISE では機能しません。

このコマンドを使用して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 リリース以降に文書化されています。

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

  1. コールオペレーターと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

関連情報