私は、Invoke-Commandを使用してサーバー上でWindows/Microsoft Updateをリモートで呼び出すPowershellモジュールをセットアップしてから、呼び出し側のサーバーが電子メールレポートを送信できるようにします。PowershellのInvoke-Commandを使用してWindows Updateを実行中にアクセスが拒否されました
私は、ダウンローダを試してみると、私の問題が発生します。Powershellは、リモートコンピュータの権限の昇格を要求しているようです。ここで
は、私が実行して失敗しようとしているものの抜粋です:
Invoke-Command -ComputerName $Server -Credential $Credentials -ScriptBlock {
$UpdateSession = New-Object -ComObject "Microsoft.Update.Session"
Write-Progress -Activity "Updating" -Status "Checking for new updates"
$Criteria = "IsInstalled=0 and Type='Software'"
$Updates = $UpdateSession.CreateUpdateSearcher().Search($Criteria).updates
$Downloader = $UpdateSession.CreateUpdateDownloader()
$Downloader.Updates = $Updates
}
私は最初の4つのコマンドが正常に動作として問題は、リモートではないことを知っています。 $Credentials
変数は、リモートサーバー上のローカル管理者である、事前定義された資格情報を指します。
スクリプトは第5ライン、$Downloader = $UpdateSession.CreateUpdateDownloader()
になると、私はPowerShellのからこのエラーを取得する:
Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
+ CategoryInfo : OperationStopped: (:) [], UnauthorizedAccessException
+ FullyQualifiedErrorId : System.UnauthorizedAccessException
+ PSComputerName : SERVER.sidlee.inc
まさにこれを引き起こしている可能性がありますか?
ありがとうございました!
正しく覚えていれば、ほとんどのWindows UpdateとMicrosoft Installerの方法では、ローカルセッションと対話セッションが必要です。 1つの回避策は、すぐに実行するタスクスケジューラタスクを設定します。 – BenH
もしそうなら、それは非常に吸うだろう、それは基本的に私が元来していたものだからだ。私はすべてを実行していた大規模なスクリプトを持っていました(Windowsの更新をトリガーし、レポートを生成し、別のサーバー経由で電子メールで送信するなど)、Powershellモジュールを介してすべてを単一のサーバーから実行したかったのです。 –