web-dev-qa-db-ja.com

管理者としてリモートPowerShellを実行する

質問に入る前に、私のような質問が他にもいくつかありましたが、それらは私の問題を解決できませんでした。それらへのリンクは次のとおりです。

「管理者として実行」を呼び出すスクリプトをリモートで実行します

https://stackoverflow.com/questions/10724591/how-to-remote-execute-an-elevated-remote-script-in-powershell

次に質問です。Powershellを介してリモートマシンでWindows Updateスクリプトを実行する必要があります。 mstscを介してマシンにリモートでアクセスし、管理者としてPowershellを実行し、Windows Updateスクリプトを実行すると、問題なく動作します。 mstscを介してマシンにリモートでアクセスし、管理者として実行を選択せず​​にPowershellを実行し、スクリプトを実行すると、次の行に沿って多数のエラーが発生します。 HRESULTからの例外:0x80240044 ""

これは、管理者権限なしで実行した場合にのみ発生します。

私が実行しているスクリプトはこれです: http://www.ehow.com/how_8724332_use-powershell-run-windows-updates.html

Enter-PSSessionを使用してコンピューターにリモートでアクセスし、スクリプトを実行しようとすると、エラーが発生しますが、少し異なります。それらはこの行に沿っています:「例外が「CreateUpdateDownloader」を呼び出して、「0」引数を使用して:「アクセスが拒否されました。 (HRESULTからの例外:0x80070005(E_ACCESSDENIED)) ""

私はこの問題を引き起こしている可能性があるものについての提案を受け入れていますが、私はそれを理解していると思います。 Powershellセッションは管理者特権で実行する必要があると思います。 mstscを使用してリモート処理するときにこれを行う方法を知っていますが、Enter-PSSessionを介してこれを行う方法を見つけることができませんでした。私はGoogledとGoogledを持っていますが、何も見つかりません。誰かがこれについていくつかの光を当てるのを助けることができれば、それは大歓迎です。

14
Jon

http://msdn.Microsoft.com/en-us/library/windows/desktop/aa387288(v = vs.85).aspx

リモートで呼び出すことはできません。

それが理由です。あなたはスケジュールされたタスクを介してそれを行うことができます。

3
River

コマンドをリモートで実行すると、PowerShellでコマンドをリモートで実行できるのは管理者だけなので、管理者特権で実行されます。エラー「引数が0の "CreateUpdateDownloader"を呼び出す例外: "アクセスが拒否されました。 (HRESULTからの例外:0x80070005(E_ACCESSDENIED)) ""はネイティブのPowerShellエラーではなく、この行が失敗していることを示しています:$ UpdatesDownloader = $ UpdateSession.CreateUpdateDownloader()、この行は$ UpdateSessionを使用してupdatedownloaderオブジェクトを作成しようとしています= New-Object -ComObject Microsoft.Update.Sessionオブジェクト。

ダウンローダーがどこに手を伸ばそうとしているのかがわからない場合、私は母艦であるとしか想定できません。サーバーにリモート接続しているときに持っている資格情報がプロキシの対象になる可能性があることを示している可能性があります。これは一般的なセキュリティ慣行です。リモートでマシンに接続しているユーザーは、インターネットから直接アイテムをダウンロードできません(ソースがどれほど信頼されているかは関係ありません)。

これが役に立てば幸い、クリス

3

リモートのPowerShellコマンドを実行するには、コマンドを起動するマシンで、少なくとも箱から出した状態で、管理者として実行する必要があります。これは、PowerShellリモート処理の文書化された制限ですが、決定された場合はデフォルトを緩和することは可能ですが、PowerShell構成に変更を加える必要があります。

リモート実行の場合、-credentialsパラメーターを使用して資格情報を渡しますか?例えば.

Enter-PSSession -Credential(Get-Credential) -ComputerName <remotehost>
2

リモートサーバー上のWindows Updatesに関しては、リモートサーバーでJEAエンドポイントをローカル仮想アカウントとして実行するように設定することで、Windows Updateを機能させることができました。

から https://docs.Microsoft.com/en-us/powershell/scripting/learn/remoting/jea/session-configurations

ローカル仮想アカウント

このJEAエンドポイントでサポートされている役割がすべてローカルマシンの管理に使用され、ローカル管理者アカウントでコマンドを正常に実行できる場合は、ローカル仮想アカウントを使用するようにJEAを構成する必要があります。仮想アカウントは、特定のユーザーに固有の一時的なアカウントであり、PowerShellセッションの間のみ持続します。メンバーサーバーまたはワークステーションでは、仮想アカウントはローカルコンピューターのAdministratorsグループに属しており、ほとんどのシステムリソースにアクセスできます。 Active Directoryドメインコントローラでは、仮想アカウントはドメインのDomain Adminsグループに属しています。

Quickfix¹:

(1.)ComputerB(リモートサーバー)に新しい無制限の(そして永続的な!)セッション構成を作成します。

New-PSSessionConfigurationFile -RunAsVirtualAccount -Path .\VirtualAccount.pssc
# Note this will restart the WinRM service:
Register-PSSessionConfiguration -Name 'VirtualAccount' [-ShowSecurityDescriptorUI] -Path .\VirtualAccount.pssc -Force
# Check the Permission property:
Get-PSSessionConfiguration -Name 'VirtualAccount'
# Those users will have full unrestricted access to the system!

(2.)ComputerA(ローカルクライアント)から、ComputerB上の無制限のセッション構成に接続します。

New-PSSession -ComputerName 'ComputerB' -ConfigurationName 'VirtualAccount' | Enter-PSSession
[ComputerB]: new-object -com "Microsoft.Update.Downloader" # Yay!

from https://stackoverflow.com/a/60046097/1322112 からコピー

1
jsmitty