找不到PSWindowsUpdate文件异常
我最近将PSWindowsUpdate从版本1.6.1.1更新为最新版本(2.1.0.1),当我尝试运行脚本时:找不到PSWindowsUpdate文件异常,windows,powershell,windows-update,Windows,Powershell,Windows Update,我最近将PSWindowsUpdate从版本1.6.1.1更新为最新版本(2.1.0.1),当我尝试运行脚本时: Write-Host " Centralized Update" Write-Host "================================" ipmo activedirectory $computers = Get-ADComputer -Filter {enabled -eq $true} -properties
Write-Host " Centralized Update"
Write-Host "================================"
ipmo activedirectory
$computers = Get-ADComputer -Filter {enabled -eq $true} -properties * -SearchBase "OU=Workstations, DC=contoso, DC=com" | select name
$Script = {ipmo PSWindowsUpdate; Get-WUInstall -AcceptAll -Install -Verbose}
foreach ($computer in $computers) {
Write-Host "Running update on:" $computer.name
Invoke-WUJob -ComputerName $computer.name -Script $Script -Confirm:$false -RunNow
}
Write-Host "================================"
pause
我得到以下错误:
Invoke WUJob:系统找不到指定的文件。(HRESULT的异常:0x80070002)
在C:\Users\Administrator\Desktop\Update\u Workstations.ps1:10
字符:2
+调用WUJob-ComputerName$computer.name-Script$Script-Confir。。。
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+CategoryInfo:NotSpecified:(:)[Invoke WUJob],FileNotFoundException
+FullyQualifiedErrorId:System.IO.FileNotFoundException,PSWindowsUpdate.InvokeWUJob
对脚本的唯一编辑是更改:
Invoke-WUInstall -ComputerName $computer.name -Script $Script -Confirm:$false
致:
更多详情:
- PowerShell的版本为5.1(客户端和服务器端)
- 终端列表正确地从“工作站”组织单元中提取
- 我可以通过“进入pssession”连接到所有终端,没有问题
- 使用“Invoke Command”而不是“Invoke WUJob”运行,但在下载时失败,错误为“UnauthorizedAccessException”
代码怎么了?在升级到版本2.1.0.1之前,它工作正常我也遇到了同样的错误。我绞尽脑汁了一天,终于找到了一个powershell命令,它需要在目标服务器上运行,然后才能继续工作
命令为Enable WURemoting如果运行脚本,是否验证已加载
PSWindowsUpdate
?(您可能需要添加导入模块-Name PSWindowsUpdate
。此外,您是否可以测试调用WUJob-ComputerName aComputerName-Confirm:$false-RunNow
而不在交互shell中运行任何其他内容?问题似乎是“调用WUJob”命令,它在脚本和直接从控制台中都有相同的错误。但是,PSWindowsUpdate模块已正确加载,使用:Invoke命令-ComputerName$computer.name-script{ipmo PSWindowsUpdate;get module PSWindowsUpdate}
它显示了正确的版本(2.1.0.1)。
Invoke-WUJob -ComputerName $computer.name -Script $Script -Confirm:$false -RunNow