PSWindowsUpdatePowerShellモジュールを使用してWindowsUpdateを管理する
PSWindowsUpdateを使用できます コマンドラインからWindowsUpdateを管理するPowerShellモジュール。 PSWindowsUpdateモジュールはWindowsに組み込まれておらず、PowerShellギャラリーリポジトリからインストールできます。 PSWindowsUpdateを使用すると、管理者はWindowsサーバーおよびワークステーションの更新をリモートで確認、インストール、削除、および非表示にできます。 PSWindowsUpdateモジュールは、Windows ServerCoreまたはHyper-VServer(GUIがない)での更新を管理する場合や、監査モードでWindowsイメージを構成する場合に特に役立ちます。
PSWindowsUpdateモジュールのインストール
1つのコマンドでPackageManagementを使用して、オンラインリポジトリ(PSGallery)からWindows10/11およびWindowsServer2022/2019/2016にPSWindowsUpdateモジュールをインストールできます。
Install-Module -Name PSWindowsUpdate -Force
インストールが完了したら、パッケージを確認する必要があります:
Get-Package -Name PSWindowsUpdate
以前のバージョンのWindows2012R2/ Windows 8.1以下にPowerShellモジュールをインストールすると、エラーが発生する場合があります。
Install-Module: Unable to download from URI.Unable to download the list of available providers. Check your internet connection.
モジュールをインストールするには、接続にTLS1.2プロトコルを使用する必要があります。次のコマンドを使用して、現在のPowerShellセッションで有効にします。
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
古いバージョンのWindows(Windows 7 / 8.1 / Windows Server 2008 R2 / 2012 R2)を使用している場合、またはインターネットに直接アクセスできない場合は、PSWindowsUpdateを手動でインストールできます(ガイド「PowerShellモジュールをオフラインでインストールする方法」を確認してください)。 。
- PSWindowsUpdateモジュールを任意のオンラインコンピューターにダウンロードします:
Save-Module –Name PSWindowsUpdate –Path C:\ps\
; - モジュールをターゲットコンピューターの次のフォルダーにコピーします
%WINDIR%\System32\WindowsPowerShell\v1.0\Modules
; - PowerShellスクリプト実行ポリシーを構成します:
Set-ExecutionPolicy –ExecutionPolicy RemoteSigned -force
- これで、モジュールをPowerShellセッションにインポートできます:
Import-Module PSWindowsUpdate
| Unblock-File
PSWindowsUpdate.psm1ファイルから手動で行します。 PSWindowsUpdateモジュールをコンピューターにインストールした後、 Update-WUModule を使用して、他のコンピューターまたはサーバーにリモートでインストールできます。 コマンドレット。たとえば、PSWindowsUpdateモジュールをコンピューターから2つのリモートホストにコピーするには、次のコマンドを実行します(WinRMプロトコルを介してリモートサーバーにアクセスする必要があります):
$Targets = "lon-fs02", "lon-db01"
Update-WUModule -ComputerName $Targets –Local
PoShモジュールを共有ネットワークフォルダに保存(エクスポート)して、他のコンピュータにさらにインポートするには、次のコマンドを実行します。
Save-Module -Name PSWindowsUpdate –Path \\lon-fs02\psmodules\
PSWindowsUpdateコマンドレットリスト
PSWindowsUpdateモジュールで使用可能なコマンドレットのリストを次のように表示できます。
get-command -module PSWindowsUpdate
モジュールコマンドの使用法を簡単に説明しましょう:
- クリア-WUJob – Get-WUJobを使用して、タスクスケジューラのWUJobをクリアします。
- ダウンロード-WindowsUpdate (
Get-WindowsUpdate –Download
のエイリアス )—更新のリストを取得してダウンロードします; - Get-WUInstall、Install-WindowsUpdate (
Get-WindowsUpdate –Install
のエイリアス )–WindowsUpdateをインストールします; - 非表示-WindowsUpdate (
Get-WindowsUpdate -Hide:$false
のエイリアス )–更新を非表示にします; - アンインストール-WindowsUpdate –Remove-WindowsUpdateを使用して更新を削除します;
- 追加-WUServiceManager –コンピューターに更新サーバー(Windows Update Service Manager)を登録します。
- 有効化-WURemoting — Windows Defenderファイアウォールルールを有効にして、PSWindowsUpdateコマンドレットのリモート使用を許可します。
- Get-WindowsUpdate (Get-WUList)—指定された基準に一致する更新のリストを表示し、更新を検索してインストールできるようにします。これは、PSWindowsUpdateモジュールのメインコマンドレットです。 WSUSサーバーまたはMicrosoftUpdateから更新プログラムをダウンロードしてインストールできます。更新カテゴリ、特定の更新を選択し、更新をインストールするときにコンピュータの再起動のルールを設定できます。
- Get-WUApiVersion –コンピューターでWindowsUpdateAgentのバージョンを取得します。
- Get-WUHistory –インストールされている更新のリスト(更新履歴)を表示します。
- Get-WUInstallerStatus —Windowsインストーラサービスのステータスを確認します。
- Get-WUJob –タスクスケジューラでWUJob更新タスクを確認します。
- Get-WULastResults —更新の最後の検索とインストールの日付( LastSearchSuccessDate およびLastInstallationSuccessDate );
- Get-WURebootStatus —特定の更新を適用するために再起動が必要かどうかを確認できます。
- Get-WUServiceManager –更新ソースのリスト;
- Get-WUSettings –WindowsUpdateクライアント設定を取得します;
- 呼び出し-WUJob –タスクスケジューラでWUJobsタスクをリモートで呼び出して、PSWindowsUpdateコマンドをすぐに実行します。
- 削除-WindowsUpdate –KBIDで更新をアンインストールできます。
- 削除-WUServiceManager – Windows UpdateServiceManagerを無効にします;
- Set-PSWUSettings –PSWindowsUpdateモジュール設定をXMLファイルに保存します。
- Set-WUSettings –WindowsUpdateクライアント設定を構成します。
- 更新-WUModule – PSWindowsUpdateモジュールを更新します(現在のコンピューターからモジュールをコピーするか、PSGalleryから更新することで、リモートコンピューター上のモジュールを更新できます)。
- リセット-WUComponents – コンピューター上のWindowsUpdateエージェントをデフォルトの状態にリセットできます。
現在のWindowsUpdateクライアント設定を確認するには、次のコマンドを実行します。
Get-WUSettings
ComputerName : WKS5S2N39S2 WUServer : https://MN-WSUS:8530 WUStatusServer : https://MN-WSUS:8530 AcceptTrustedPublisherCerts : 1 ElevateNonAdmins : 1 DoNotConnectToWindowsUpdateInternetLocations : 1 TargetGroupEnabled : 1 TargetGroup : ServersProd NoAutoUpdate : 0 AUOptions : 3 - Notify before installation ScheduledInstallDay : 0 - Every Day ScheduledInstallTime : 3 UseWUServer : 1 AutoInstallMinorUpdates : 0 AlwaysAutoRebootAtScheduledTime : 0 DetectionFrequencyEnabled : 1 DetectionFrequency : 4
この例では、コンピューター上のWindows Updateエージェントは、ローカルWSUSサーバーから更新を受信するようにGPOで構成されています。
Reset-WUComponents -Verbose
コマンドレットを使用すると、すべてのWindows Updateエージェント設定をリセットし、ライブラリを再登録し、wususerv
を復元できます。 デフォルト状態にサービスを提供します。
PowerShellを使用してWindowsUpdateをスキャンしてダウンロードする
Get-WindowsUpdate
を使用して、更新サーバー上の現在のコンピューターで利用可能な更新を一覧表示できます。 またはGet-WUList
コマンド。
リモートコンピューターで利用可能な更新のリストを確認するには、次のコマンドを実行します。
Get-WUList –ComputerName server2
Windowsが更新を受信する場所を確認できます。次のコマンドを実行します:
Get-WUServiceManager
ServiceID IsManaged IsDefault Name --------- --------- --------- ---- 8b24b027-1dee-babb-9a95-3517dfb9c552 False False DCat Flighting Prod 855e8a7c-ecb4-4ca3-b045-1dfa50104289 False False Windows Store (DCat Prod) 3da21691-e39d-4da6-8a4b-b43877bcb1b7 True True Windows Server Update Service 9482f4b4-e343-43b6-b170-9a65bc822c77 False False Windows Update
ご覧のとおり、コンピューターはローカルWSUSサーバーから更新を受信するように構成されています( Windows Server Update Service =True )。この場合、コンピューターで承認された更新のリストが表示されます。
インターネット上のMicrosoftUpdateサーバー(Windows Updateに加えて、これらのサーバーにはOfficeおよびその他のMicrosoft製品の更新が含まれています)に対してコンピューターをスキャンする場合は、次のコマンドを実行します。
Get-WUlist -MicrosoftUpdate
この警告が表示されます:
Get-WUlist : Service Windows Update was not found on computer. Use Get-WUServiceManager to get registered service.
Microsoft Updateでのスキャンを許可するには、次のコマンドを実行します。
Add-WUServiceManager -ServiceID "7971f918-a847-4430-9279-4a52d1efe18d" -AddServiceFlag 7
これで、MicrosoftUpdateに対してスキャンできます。この場合、Microsoft Visual C++2008およびMicrosoftSilverlightの追加の更新が見つかりました。
コンピューター上のWindowsUpdateエージェントのバージョンを確認するには、次のコマンドを実行します。
Get-WUApiVersion
ComputerName PSWindowsUpdate PSWUModuleDll ApiVersion WuapiDllVersion ------------ --------------- ------------- ---------- --------------- DESKTOP-J... 2.1.1.2 2.2.0.2 8.0 10.0.19041.1320
コンピューターが受信した更新のリストから特定の製品またはKBを削除するには、次の方法でそれらを除外できます。
- カテゴリ(
-NotCategory
); - タイトル(
-NotCategory
); - 更新番号(
-NotKBArticleID
。
たとえば、OneDrive、ドライバーの更新、および特定のKBをリストから除外しましょう:
Get-WUlist -NotCategory "Drivers" -NotTitle "OneDrive" -NotKBArticleID KB4489873
PowerShellを使用したWindowsUpdateのインストール(Install-WindowsUpdate)
(ローカルWSUSではなく)Windows UpdateサーバーからWindowsデバイスで利用可能なすべての更新プログラムを自動的にダウンロードしてインストールするには、次のコマンドを実行します。
Install-WindowsUpdate -MicrosoftUpdate -AcceptAll -AutoReboot
AcceptAll パラメータは、すべてのアップデートパッケージのインストールを受け入れ、 AutoReboot アップデートのインストール後にWindowsを自動的に再起動できるようにします。
次のオプションを使用することもできます:
- IgnoreReboot –自動再起動を無効にします;
- ScheduleReboot –コンピュータを再起動する正確な時間を設定します。
更新のインストール履歴をログファイルに保存できます(WindowsUpdate.logファイルの代わりに使用できます)。
Install-WindowsUpdate -AcceptAll -Install -AutoReboot | Out-File "c:\logs\$(get-date -f yyyy-MM-dd)-WindowsUpdate.log" -force
KB番号で特定のアップデートパッケージのみをインストールできます:
Get-WindowsUpdate -KBArticleID KB2267602, KB4533002 -Install
この場合、各アップデートのインストールを手動で確認する必要があります。
インストールリストから特定の更新を除外する場合は、次のコマンドを実行します。
Install-WindowsUpdate -NotCategory "Drivers" -NotTitle OneDrive -NotKBArticleID KB4011670 -AcceptAll -IgnoreReboot
PowerShellを使用してリモートコンピューターにWindowsUpdateをインストールする
PSWindowsUpdateモジュールを使用すると、複数のワークステーションまたはサーバーに一度にリモートで更新をインストールできます(PSWindowsUpdateはこれらのコンピューターにインストール/インポートする必要があります)。管理者が更新プログラムをインストールするためにリモートのWindowsホストに手動でログオンする必要がないため、これは非常に便利です。 WinRMは、リモートコンピューターで(手動またはGPOを介して)有効にして構成する必要があります。
ほとんどすべてのPSWindowsUpdateモジュールコマンドレットを使用すると、–Computername
を使用してリモートコンピューターでWindowsUpdateを管理およびインストールできます。 属性。
PSWindowsUpdateモジュールをリモートコンピューターにインストールし、動的RPCポートを介してWindowsDefenderファイアウォールのdllhost.exeプロセスにアクセスできるようにします。 Invoke-Commandコマンドレットを使用して、リモートコンピューターでPSWindowsUpdateモジュールを構成できます。
$Targets = "lon-fs02", "lon-db01"
Invoke-Command -ComputerName $Target -ScriptBlock {Set-ExecutionPolicy RemoteSigned -force }
Invoke-Command -ComputerName $Target -ScriptBlock {Import-Module PSWindowsUpdate; Enable-WURemoting}
PSWindowsUpdateモジュールを使用して、ADドメイン内のコンピューターとワークグループ内の両方のコンピューターでWindows Updateをリモートで管理できます(ワークグループ環境にはPowerShell Remoting構成が必要です)。
リモートコンピューターの更新を管理するには、winrmの信頼できるホストリストにホスト名を追加するか、HTTPS経由でPowerShell Remoting(WinRM)を構成する必要があります。
winrm set winrm/config/client '@{TrustedHosts="server1,server2,…"}'
またはPowerShellを使用する場合:
Set-Item wsman:\localhost\client\TrustedHosts -Value server1 -Force
次のコマンドは、利用可能なすべての更新プログラムを3つのリモートWindowsホストにインストールします。
$ServerNames = "server1, server2, server3"
Invoke-WUJob -ComputerName $ServerNames -Script {ipmo PSWindowsUpdate; Install-WindowsUpdate -AcceptAll | Out-File C:\Windows\PSWindowsUpdate.log } -RunNow -Confirm:$false -Verbose -ErrorAction Ignore
Invoke-WUJobコマンドレット(以前はInvoke-WUInstallと呼ばれていました)は、ローカルのSYSTEMアカウントで実行されるリモートコンピューター上にスケジューラータスクを作成します。
WindowsUpdateをインストールする正確な時刻を指定できます。
Invoke-WUJob -ComputerName $ServerNames -Script {ipmo PSWindowsUpdate; Install-WindowsUpdate –AcceptAll -AutoReboot | Out-File C:\Windows\PSWindowsUpdate.log } -Confirm:$false -TriggerDate (Get-Date -Hour 22 -Minute 0 -Second 0)
Get-WUJobを使用して、更新インストールタスクのステータスを確認できます。
Get-WUJob -ComputerName $ServerNames
コマンドが空のリストを返す場合は、すべてのコンピューターでの更新インストールタスクが完了しています。
リモートコンピューターに更新をインストールして、管理者に電子メールレポートを送信できます。
Install-WindowsUpdate -ComputerName nysrv1 -MicrosoftUpdate -AcceptAll - IgnoreReboot -SendReport –PSWUSettings @{SmtpServer="smtp.woshub.com";From="[email protected]";To="[email protected]";Port=25} -Verbose
PowerShellを使用してWindowsUpdate履歴を確認する(Get-WUHistory)
Get-WUHistoryの使用 コマンドレットを使用すると、コンピューターにインストールされている更新プログラムのリストを以前に自動または手動で取得できます。
特定のアップデートのインストール日に関する情報を入手できます:
Get-WUHistory| Where-Object {$_.Title -match "KB4517389"} | Select-Object *|ft
特定の更新プログラムが複数のリモートコンピューターにインストールされているかどうかを確認するには、次のPowerShellコードを使用できます。
"server1","server2" | Get-WUHistory| Where-Object {$_.Title -match "KB4011634"} | Select-Object *|ft
アップデートのインストール後にコンピューターを再起動する必要があるかどうかを確認します(再起動を保留中):
Get-WURebootStatus –ComputerName WKS21TJS
RebootRequiredの値を確認してください およびRebootScheduled 属性。
Get-ADComputerコマンドレット(PowerShellモジュールのActive Directoryから)を使用して、ドメイン内のすべてのコンピューターに更新が最後にインストールされた日付を含むレポートを生成できます。
$Computers=Get-ADComputer -Filter {enabled -eq "true" -and OperatingSystem -Like '*Windows*' }
Foreach ($Computer in $Computers)
{
Get-WULastResults -ComputerName $Computer.Name|select ComputerName, LastSearchSuccessDate, LastInstallationSuccessDate
}
類推すると、60日以上アップデートがインストールされていないコンピュータを見つけることができます。 結果をOut-GridViewインタラクティブテーブルに表示します:
$result=@()
Foreach ($Computer in $Computers) {
$result+= Get-WULastResults -ComputerName $Computer.Name
}
$result| Where-Object { $_.LastInstallationSuccessDate -lt ((Get-Date).AddDays(-60)) }| Out-GridView
PowerShellを使用したWindowsUpdateのアンインストール(削除-WindowsUpdate)
Remove-WindowsUpdateを使用できます PowerShellを使用して更新を正しくアンインストールするためのコマンドレット。 KBArticleIDパラメーターの引数としてKB番号を指定するだけです。コンピュータの自動再起動を遅らせるには、–NoRestartオプションを追加します:
Remove-WindowsUpdate -KBArticleID KB4489873 -NoRestart
PowerShellを使用してWindowsUpdateを非表示にする方法
特定の更新プログラムを非表示にして、Windows Updateサービスによってコンピューターにインストールされないようにすることができます(ほとんどの場合、ドライバーの更新プログラムを非表示にする必要があります)。たとえば、KB4489873とKB4489243の更新を非表示にするには、次のコマンドを実行します。
$HideList = "KB4489873", "KB4489243"
Get-WindowsUpdate -KBArticleID $HideList –Hide
これで、次にGet-WUlistコマンドを使用して更新をスキャンするときに、非表示の更新がインストール可能な更新のリストに表示されなくなります。
これは、このコンピューターに隠されている更新のリストを表示する方法です:
Get-WindowsUpdate –IsHidden
H
に注意してください (非表示)属性が非表示の更新の[ステータス]列に表示されました。
一部の更新を再表示するには、次のコマンドを実行します:
Get-WindowsUpdate -KBArticleID $HideList -WithHidden -Hide:$false
または:
Show-WindowsUpdate -KBArticleID $HideList
PowerShellコンソールに不快感を感じる場合は、グラフィックの Windows Update MiniToolをお勧めします。 Windows10/11およびWindowsServer2022/2019で更新を管理するため。
-
WindowsPowerShellスクリプトで生産性を向上させる
Linuxの生産性をWindowsに持ち込むことができたらどうでしょうか。 WindowsとLinuxの主な違いの1つは、ほとんどのLinuxディストリビューションに強力なBashシェルがパッケージ化されていることです。比較すると、Windowsのコマンドプロンプトは必要最低限のものです。 Windowsに同様に強力な端末がある場合はどうなりますか? PowerShellを使用すると、その夢が現実になる可能性があります。 免責事項:PowerShellは「Bashfor Windows」ではなく、またそうなることを意図したものでもありません。はい、どちらも生産性を大幅に向上させることが
-
Windows タグでファイルとフォルダを管理する方法
システムから古いファイルを検索することは、炭庫で黒猫を探すようなものです。たとえば、昨年の南アメリカでの休暇の写真はどこに保存したのでしょうか。または 2018 年に書いたレポートの名前は? Windows 10 には強力な検索機能が組み込まれていますが、特に Cortana を使用すると、画像、音楽、PDF などのフィルターを使用してスマートに検索できます。最も無視されている機能の 1 つである Windows タグ 効率的な方法でファイルを検索して整理するのは理にかなっています。 Windows タグとは何か、なぜそれを使用する必要があるのか? タグは、Windows 10 の最も