我试图远程使一个域-计算机安装它的窗口更新。这听起来应该很容易,但我已经工作了7个多小时,但无法使它工作。我知道你可以通过GPO做到这一点,但这并不能给我足够的时间控制。我希望我们的服务器安装他们和重新启动每月-一个GPO只能用来安装和重新启动每周。由于我们的生产24/7工作,我绝对不希望服务器在每月几个小时的停机时间之外重新启动,我被允许进行维护!
我已经找到了一些教程,比如这,它们使用了模块PSWindowsUpdate,但是这些教程使用的是该模块的旧版本。他们使用一个叫做Invoke-WUInstall
的函数,这个函数在最新版本中是不存在的。我尝试过降低模块的级别,但是packagesource没有提供2.0.0.0以上的版本,项目页面也没有提供文档--没有示例--也没有讨论或错误跟踪器。原作者的页面上有一个讨论,但两年前,当它仍然是旧版本时,他停止了它的工作。
我尝试使用Invoke-Command
而不是Invoke-WUInstall
,但是Windows似乎不允许这样的远程更新安装。显然,PSWindowsUpdate通过在目标机器上作为预定任务运行命令来规避这个问题,因此,在查看Get-Command -Module PSWindowsUpdate
的输出时,我想我可能需要使用Invoke-WUJob
,并编写了以下代码:
Import-Module -Name PSWindowsUpdate
Enable-PSRemoting -Force
ForEach ($hostname in $args) {
Write-Output "Processing $hostname"
Set-Item WSMan:\localhost\Client\TrustedHosts -Value $hostname -Concatenate -Force
# Install PSWindowsUpdate on target machine
Invoke-Command -computername $hostname -ScriptBlock {
PackageManagement\Get-PackageProvider -Name NuGet -Force
inmo PSWindowsUpdate -Force
}
# Install the Updates
Invoke-WUJob -ComputerName $hostname -Script {
ipmo PSWindowsUpdate;
Install-WindowsUpdate -install -AcceptAll -IgnoreReboot
} -Confirm:$false -RunNow
}
我作为一个在目标机器上拥有管理权限的用户运行它,输出看起来很好,但是它没有做任何事情。
有人有这个模块的经验吗?如何在>= 2版本中正确地做到这一点?
发布于 2019-11-12 20:30:16
嗯,我已经做过这样的事情了,也面临着同样的问题。
这是我的解决办法:
https://stackoverflow.com/questions/58816521
复制相似问题