数日間これに苦しんでいます。
次のエラーが発生します。
PS C:\> get-process -ComputerName Win2012r2
get-process : Couldn't connect to remote machine.
At line:1 char:1
+ get-process -ComputerName 10.10.1.54
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Get-Process], InvalidOperationException
+ FullyQualifiedErrorId : System.InvalidOperationException,Microsoft.PowerShell.Commands.GetProcessCommand
サーバーでリモートレジストリサービスが実行されていることを確認しました(再起動も試みました)。
さらに、ポート5985および&5986でのRCP接続を許可するカスタムファイアウォールルールを作成しました https://stackoverflow.com/questions/22357063/get-process-to-remote-computer-doesnt-work- but-invoke-command-does
また、ユーザー名を再確認しました Powershell Get-Process cannot connect to remote computer
注
invoke-command -ComputerName Win2012r2 -ScriptBlock {Get-Process}
は正常に機能しますが、他の人が使用している別のスクリプト内で失敗するため、get-process -computername
プロセスを直接機能させる必要があります
ようやくあきらめて、Get-Process
を直接呼び出すのではなく、次のコードを使用する新しいスクリプトを作成しました。
invoke-command -ComputerName Win2012r2 -ScriptBlock {param($procName) Get-Process -Name $processName} -ArgumentList $ProcName
LocalHostをテストするWin7クライアントでPS2を教え始めたときに、同様のエラーが発生しました。リモートレジストリサービスを開始して解決しました。
-ComputerName
のGet-Process
は、WinRMではなくRPCを使用します。 WinRMは、RPCではなく5985および5986を使用するものです。
RPCポートはデフォルトで動的です。
Get-Process
の「Get-Help」を確認してください。
-ComputerName
このパラメーターは、Windows PowerShellリモート処理に依存しません。コンピューターがリモートコマンドを実行するように構成されていない場合でも、Get-Process
のComputerNameパラメーターを使用できます。
Invoke-Command
はWinRMを使用します。したがって、Invoke-Commandを使用するようにコードを変更すると、スクリプトが機能し始めました。
代わりにこれを使ってみてください:
get-wmiobject -class win32_process -computername pcname -filter "Name = 'procname'"
私が考えられる唯一のことは、これを実行しているアカウントがターゲット(Win2012r2)に対する管理者権限を持っていないか、ファイアウォールがそれをブロックしていることです。ファイアウォールを完全に無効にして、後者をテストしてください。
DNS解決が機能していることを確認しましたか? nslookupを試して、正しいIPに解決していることを確認してください。
この投稿をチェックしてください。これはあなたの問題の答えのようです。両方のシステムでファイアウォールをオフにして、get-processを使用してみてください。それが機能する場合、この投稿に記載されているポートを開く必要があることがわかります。