概要: 別のコンピューターで "get-wmiobject" を実行すると、正常に動作します。しかし、「invoke-command」「get-wmiobject」を実行すると、アクセスが拒否されます。
詳細: 中央サイトにワークステーション (Computer-Central) があり、そこからインベントリ スクリプトを実行しています。インベントリ スクリプトは、すべてのリモート サイトの IP ごとに複数の「get-wmi」コマンドをループします。ドメイン管理者として Computer-Central にログオンすると、スクリプトは正しく機能します。
私は今、それらのリモート サイトの 1 つにいます。現在のワークステーションは (Computer-SiteA) です。そのため、Computer-Central に直接ログインすることはできません。RDP を使用する必要があります。問題は、スクリプトが完了する前に RDP セッションがタイムアウトになることです (約 12 時間かかります)。そのため、RDP を使用してスクリプトを開始し、立ち去ることはできません。さまざまな理由から、スケジュールされたタスクを作成することもできません。
Powershell リモート処理が有効になっています。ドメイン管理者アカウントで Computer-SiteA にログオンし、次のコマンドを実行しました。
invoke-command -computername Computer-Central {dir c:}
これは正常に機能しました。そこで、次のコマンドでインベントリ スクリプトを開始しました (ここでも、Computer-SiteA でドメイン管理者として実行します)。
invoke-command -computername Computer-Central -filepath c:\inventory.ps1
スクリプトが開始され、一晩実行されました。しかし、get-wmi コマンドはすべて「アクセスが拒否されました」というエラーを生成しました。Computer-Central に RDP で接続し、次のコマンドを実行しました。
get-wmiobject -class win32_computersystem -property name -computername Computer-SiteB
これは正常に機能しました。WMI 情報を取得しました。
次に、Computer-SiteA にログオンし、次のコマンドを実行しました。
invoke-command -computername Computer-Central {get-wmiobject -class win32_computersystem -property name -computername Computer-SiteB}
これは「アクセスが拒否されました」で失敗しました。ドメイン管理者としてログオンし、「別のユーザーとして実行」を実行して、PS コンソールがドメイン管理者アカウントとして開かれていることを確認しました。
私はこれに非常に混乱しています。「Invoke-Command」は、ローカル PC で使用した資格情報を使用して、リモート システムで Powershell.exe プロセスを開始する必要があります。「get-wmiobject」コマンドは、WMI クエリをリモート PC からターゲット PC に渡す必要があります。このときも、同じ資格情報が使用されます。しかし、そうではないようです。
何か案は?
編集: このコマンドを実行して、Computer-Central クエリ自体を作成しました。
invoke-command -computername Computer-Central {get-wmiobject -class win32_computersystem -property name -computername Computer-Central}
それはうまくいきました。自分自身を対象とするリモート システムで「get-wmiobject」を呼び出すと、機能します。3 番目のシステムを対象とするリモート システムで「get-wmiobject」を呼び出すと、失敗します。これが役立つことを願っています。