Get-WindowsUpdate工作不正常



需要使用powershell脚本并行修补远程服务器。但是Get-WindowsUpdate命令不会下载/安装补丁,也不会引发任何错误。

MySession = New-PSSession -ComputerName $ComputerName -Credential $cred
Start-Sleep -Seconds 30
Invoke-Command -Session $MySession -ScriptBlock {
Start-Sleep -Seconds 5
ipmo PSWindowsUpdate; 
try{
Get-WindowsUpdate -IgnoreUserInput -ForceDownload -Install -AcceptAll -AutoReboot -Confirm:$false
}
catch{
Write-Host $_.Exception.Message
}
}

从评论继续

  1. 您的变量缺少美元符号。

  2. 在脚本中使用别名被认为是一种不好的做法。

  3. 睡眠命令似乎没有必要,尤其是第一个命令。直到上一行完成,下一行才会运行。

  4. 缩进和间距有助于更容易地查看语法/流问题。

  5. 飞溅也有助于可读性/调试。

  6. Verbose可以为调试提供有价值的反馈。

    $MySession = New-PSSession -ComputerName $ComputerName -Credential $cred
    Invoke-Command -Session $MySession -ScriptBlock {
    $param = @{
    IgnoreUserInput = $true
    ForceDownload   = $true
    Install         = $true
    AcceptAll       = $true
    AutoReboot      = $true
    Confirm         = $false
    Verbose         = $true
    }
    Start-Sleep -Seconds 5
    Import-Module PSWindowsUpdate
    try
    {
    Get-WindowsUpdate @param
    }
    catch
    {
    Write-Error $_.Exception.Message
    }
    }
    

如果你不确定他们都安装了模块,你可以在脚本块的开头添加这样的东西

if(-not (Get-Module PSWindowsUpdate))
{
Write-Host Installing PSWindowsUpdate module.. -ForegroundColor Cyan
Install-Module PSWindowsUpdate
}

最新更新