用于刪除Windows更新的Powershell腳本(APC\u Index\u BSOD)

尋找一些幫助尋找一個簡單的方法來刪除windows更新通過PowerShell,但我相信我遇到了幾個問題。

Goals

  1. 根據$data_array中的數據檢查并卸載更新
  2. 暫停Windows更新,直到可以按下修補程序或更新
  3. 了解如何更好地工作

Issues

  1. 我不相信$data會被發送到wusa /uninstall /kb:$data /promptrestart我認為這是因為Windows update獨立安裝程序拋出了一個沒有包號的錯誤(圖1)
  2. 每項工作都是一次完成,而不是錯開,我的工作經驗非常有限,我不知道從哪里開始故障排除。我嘗試過使用Get-Job | Retrieve-Job,但似乎沒有得到太多關于狀態或返回變量的信息
  3. 我想命名的工作,使我更具體地知道哪些已經完成或他們在哪一步

Code Snippet

# Updates to Find
$data_array =@('KB5000802','KB5000808','KB5000822','KB5000809')

$commands = @()
# Checks Which update is installed
$commands += {
    $Name = "Check Updates"
    foreach($data in $data_array)
    {
        if(wmic qfe list brief /format:table | Select-String -Pattern $data -CaseSensitive -SimpleMatch)
        {
            $commands+=$data
        }
    }
}

# Uninstall Update
$commands += {
    echo "Uninstalling Found Update of: "$data
    wusa /uninstall /kb:$data /promptrestart
}

# Stops Windows Update
$commands += {
    net stop wuauserv
    net pause wuauserv
    net stop bits
    net pause bits
    net stop dosvc
    net pause dosvc
}

# Runs the Jobs
foreach($command in $commands){
    start-job $command
}

PS輸出

Id     Name            PSJobTypeName   State         HasMoreData     Location             Command                  
--     ----            -------------   -----         -----------     --------             -------                  
39     Job39           BackgroundJob   Running       True            localhost            ...                      
41     Job41           BackgroundJob   Running       True            localhost            ...                      
43     Job43           BackgroundJob   Running       True            localhost            ...                      

Figure 1

任何幫助或指導將不勝感激,并可根據需要提供額外的信息。

Thanks!

? 最佳回答:

我會通過刪除工作內容來簡化腳本。除非你真的需要在后臺運行東西,否則這只會使事情復雜化。即使在需要后臺操作時,在并行化之前先創建一個工作的線性腳本也是很有幫助的。

# Updates to find
$searchUpdates = 'KB5000802','KB5000808','KB5000822','KB5000809'

Write-Host "Checking whether the following updates are installed: $($searchUpdates -join ', ')"

# Checks which updates are installed

$allUpdates = wmic qfe list brief /format:table

$foundUpdates = $searchUpdates | Where-Object { 
    $allUpdates | Select-String -Pattern $_ -CaseSensitive -SimpleMatch }

if( $foundUpdates ) {
    Write-Host "Found the following installed updates: $($foundUpdates -join ', ')"

    # Uninstall the found updates

    foreach( $update in $foundUpdates ) {
        Write-Host "Uninstalling found update of: $update"
        wusa /uninstall /kb:$update /promptrestart

        # TODO: check $LASTEXITCODE to determine whether removal was successful
    }

    Write-Host 'Stopping windows update...'

    net stop wuauserv
    net pause wuauserv
    net stop bits
    net pause bits
    net stop dosvc
    net pause dosvc
}
else {
    Write-Host 'None of these updates are installed.'
}

Further changes:

  • 已刪除數組子表達式運算符@(),因為comma-separated列表已定義數組
  • 只查詢wmic一次以提高性能
  • Where-Object語句替換第一個foreach。
  • 為清晰起見,重命名了一些變量
  • 添加了更多日志記錄,以便您可以驗證中間結果
  • echo替換為Write-Host,這使得未來的訪問者更容易查找文檔
主站蜘蛛池模板: 成人免费区一区二区三区| 国产成人精品一区二区三在线观看| 国产精品女同一区二区| 亚洲国产综合无码一区二区二三区| 国产福利91精品一区二区三区| 亚洲一区二区三区电影| 风间由美性色一区二区三区| 国产在线精品一区免费香蕉| 无人码一区二区三区视频| 久久青草精品一区二区三区| 韩国美女vip福利一区| 亚洲熟女一区二区三区| 中文字幕一区二区免费| 风流老熟女一区二区三区| 色天使亚洲综合一区二区| 在线精品一区二区三区| 亚洲视频一区在线| 国产伦精品一区二区三区女| 少妇精品久久久一区二区三区| 久久久久99人妻一区二区三区| 变态拳头交视频一区二区| 成人一区二区免费视频| 精品一区二区三区四区在线| 果冻传媒一区二区天美传媒| 成人精品一区二区三区中文字幕| 福利一区福利二区| 中文字幕在线观看一区二区 | 久久精品国产一区二区三区肥胖| 久久无码一区二区三区少妇| 国精品无码A区一区二区| 成人无码AV一区二区| 国产成人无码一区二区三区| 少妇激情一区二区三区视频 | 日韩国产一区二区| www.亚洲一区| 无码人妻精品一区二区三区在线| 蜜臀Av午夜一区二区三区| 男人的天堂av亚洲一区2区 | 91视频一区二区三区| 女女同性一区二区三区四区| 精品视频在线观看一区二区三区|