サーバー(test-server)で実行され、クライアント(DC1)のログファイルを読み取るPowerShellスクリプトを作成しました。
DC1でリモートデスクトップとリモートアシスタンスが有効になっています。
Get-EventLog System -ComputerName test-server -Source Microsoft-Windows-Winlogon # WORKS
Get-EventLog System -ComputerName DC1 -Source Microsoft-Windows-Winlogon # DOESN'T WORK
このスクリプトをtest-serverで実行します。テストサーバーでローカルログファイルを読み取ると正常に動作しますが、DC1のログファイルをリモートで読み取ろうとすると、エラーが発生します "Get-EventLog:ネットワークパスが見つかりませんでした。 "。
エラーのスクリーンショット:
このエラーを回避し、Get-EventLogを使用してDC1のログファイルをtest-serverから読み取るにはどうすればよいですか?
@Lars Truijensの提案は私の問題を解決しました。しかし、他の提案も確認することが重要です。
したがって、リモートでログファイルを取得しようとしたときにこの種のエラーが発生した場合のチェックリストを次に示します。
dir \\dc1\c$
を実行して、ハードディスクへのアクセスが許可されていることを確認します。 (@ Shay Levyの提案)Get-Service -ComputerName YOURCOMPUTERNAME
を実行して、サービスへのアクセスが許可されていることを確認します。 (@ Shay Levyの提案)このソリューションのスクリーンショットは次のとおりです。
RemoteRegistryサービスを開始しても、私の場合は役に立ちませんでした。
明らかに、Get-Serviceなどの一部のコマンドレットのComputerNameパラメーターを介してアクセスされるリモート処理と、Invoke-Commandなどのコマンドレットでアクセスされる新しい形式のリモート処理には違いがあります。
従来のリモートアクセスは個々のコマンドレットによって実装されるため、一貫性がなく(さまざまな手法を使用し、さまざまな要件を要求します)、選択したコマンドレットでのみ使用できます。リモートアクセスに使用されるテクノロジは、コマンドレットごとに異なる可能性があり、すぐにはわかりません。各コマンドレットは、作成者が選択したリモート処理テクノロジを使用します。ほとんどのコマンドレットはリモートプロシージャコール(RPC)を使用しますが、ターゲットシステムで追加のサービスと設定が必要になる場合もあります。
Windows PowerShell 2.0以降、リモートシステムにアクセスするための代替的でより普遍的な方法がWindows PowerShell Remotingです。この種類のリモート処理では、Windows PowerShellはすべてのコマンドのリモートアクセスを処理します。比較的新しく高度に設定可能なWinRMサービスを使用してコマンドをリモートシステムに転送し、リモートシステムで実行される別のセッションでコードを実行し、結果を呼び出し側システムに返します。
このコマンドからスワップしたとき
get-eventlog -LogName System -computername <ServerName>
これに
invoke-command {get-eventlog -LogName System} -ComputerName <ServerName>
次のエラーは発生しなくなりました
get-eventlog:ネットワークパスが見つかりませんでした。