gpt4 book ai didi

powershell - 使用 Powershell 的调用命令运行 Windows 更新时访问被拒绝

转载 作者:行者123 更新时间:2023-12-03 00:11:54 26 4
gpt4 key购买 nike

我一直在尝试设置一个 Powershell 模块,该模块将使用 Invoke-Command 在服务器上远程调用 Windows/Microsoft 更新,然后处理更新,并将所有内容发送回调用服务器,以便它可以发送电子邮件报告。

当我尝试调用下载器时出现问题: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

究竟是什么原因造成的?

在此先感谢您的帮助!

最佳答案

由于我遇到了同样的问题,Google 也帮不上什么忙,下面是我可以挖掘的内容。

郑重声明,我几乎在做同样的事情(使用自定义 PS 代码来检查远程系统的 Windows 更新)但是使用 WinRM over Python 而不是 Invoke-Command 并且也卡在了Microsoft.Update.Searcher.Search() 抛出一个 E_ACCESSDENIED 错误。

UnauthorizedAccessException 确实与 Powershell 无关,而是与底层 API 相关。

我怀疑微软在最近的一些更新(Powershell v5?)中开始切断远程 session 中的模拟,因为这在旧的 Windows 版本(例如带有 Powershell v3 的 Server 2012 或带有 v4 的 2012 R2)上工作得很好(现在仍然)

要解决这个问题,您需要在使用 PSCredential 对象执行您的内容之前(在远程服务器上)进行身份验证。

所以 Remote Auth -> Local Auth -> Run stuff 例如使用 Start-Process -Credential ...

例如

$pass = ConvertTo-SecureString "PA$$W0RD" -AsPlainText -Force
$creds = New-Object System.Management.Automation.PSCredential "User", $pass
Start-Process -Credential $creds powershell -ArgumentList "-Command & { ... whatever you want to do ... }"

Keep in mind that this poses a security risk as your password will be parsed in clear text, so don't do this over an unencrypted channel!

关于powershell - 使用 Powershell 的调用命令运行 Windows 更新时访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46476147/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com