我有这个脚本:
Invoke-WUJob -ComputerName comp-1,comp-2,comp-3 -Script {ipmo PSWindowsUpdate; Get-WUInstall -Install -AcceptAll | Out-File C:\PSWindowsUpdate.log } -Confirm:$false -Verbose –RunNow
执行后,我得到了:
Invoke-WUJob:目标计算机上缺少PSWindowsUpdate模块在第1行:char:1+调用WUJob -ComputerName 1002-hk-ws-001,1002-hk-ws-002,1002-hk-ws-0 ...+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~+ CategoryInfo:ResourceUnavailable:(:) [Invoke-WUJob],异常+ FullyQualifiedErrorId:ModuleMissing,PSWindowsUpdate.InvokeWUJob
我在每台PC上使用下面的这些命令来安装到PSWindowsUpdate和设置winrm,但仍然无法正常工作:
winrm quickconfig -q
winrm set winrm/config/client ‘@{TrustedHosts="comp1,comp2,comp3"}’
Set-ExecutionPolicy RemoteSigned
Install-Module PSWindowsUpdate -Scope CurrentUser -Force
有什么想法吗?
[我将假设您处于工作组模式,而Domain则依靠您说过在每个主机上所做的工作而加入了计算机。
您必须是目标用户的管理员才能运行此程序。
除非您进行其他配置。
You Don’t Have to Be An Administrator to Run Remote PowerShell Commands
因此,如果尚未使用远程目标的管理员凭据运行PowerShell会话,则需要在代码中传递凭据。这实际上是PowerShell远程处理101和一个有据可查的用例。
您的错误是模块不在远程主机上或找不到该模块。
Windows更新是计算机级别的东西。因此,导入应该是AllUsers PowerShell配置文件,而不是机器的某些个人用户。要使PSRemoting在工作组系统上工作还需要付出额外的努力。对于加入域的主机,可以使用GPO启用它。无需额外的步骤。
请参阅此处的步骤:
Enable PowerShell Remoting on a standalone (workgroup) computer
无论远程目标上是谁,远程系统上的运行代码将始终在您启动的用户上下文中运行。