From d7821e86e4870384ebcc2687998e457232a2981b Mon Sep 17 00:00:00 2001 From: scriptos Date: Wed, 29 Nov 2023 14:43:50 +0100 Subject: [PATCH] zwischenstand --- .../2.2.1.2/PSGetModuleInfo.xml | Bin 0 -> 28758 bytes .../2.2.1.2/PSWUSettings.xml.tmp | Bin 0 -> 1250 bytes .../2.2.1.2/PSWindowsUpdate.Format.ps1xml | 616 + .../2.2.1.2/PSWindowsUpdate.dll | Bin 0 -> 359992 bytes .../2.2.1.2/PSWindowsUpdate.dll-Help.xml | 11838 ++++++++++++++++ .../2.2.1.2/PSWindowsUpdate.psd1 | Bin 0 -> 47874 bytes .../2.2.1.2/PSWindowsUpdate.psm1 | Bin 0 -> 35598 bytes .../2.2.1.2/PSWindowsUpdate.xml | 4020 ++++++ pswindowsupdate-installer.ps1 | 25 + windows-updater.ps1 | 58 + 10 files changed, 16557 insertions(+) create mode 100644 Modules/PSWindowsUpdate/2.2.1.2/PSGetModuleInfo.xml create mode 100644 Modules/PSWindowsUpdate/2.2.1.2/PSWUSettings.xml.tmp create mode 100644 Modules/PSWindowsUpdate/2.2.1.2/PSWindowsUpdate.Format.ps1xml create mode 100644 Modules/PSWindowsUpdate/2.2.1.2/PSWindowsUpdate.dll create mode 100644 Modules/PSWindowsUpdate/2.2.1.2/PSWindowsUpdate.dll-Help.xml create mode 100644 Modules/PSWindowsUpdate/2.2.1.2/PSWindowsUpdate.psd1 create mode 100644 Modules/PSWindowsUpdate/2.2.1.2/PSWindowsUpdate.psm1 create mode 100644 Modules/PSWindowsUpdate/2.2.1.2/PSWindowsUpdate.xml create mode 100644 pswindowsupdate-installer.ps1 create mode 100644 windows-updater.ps1 diff --git a/Modules/PSWindowsUpdate/2.2.1.2/PSGetModuleInfo.xml b/Modules/PSWindowsUpdate/2.2.1.2/PSGetModuleInfo.xml new file mode 100644 index 0000000000000000000000000000000000000000..f409531fa7de654a3d55e30f929cbffb26e9b6eb GIT binary patch literal 28758 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 literal 0 HcmV?d00001 diff --git a/Modules/PSWindowsUpdate/2.2.1.2/PSWindowsUpdate.Format.ps1xml b/Modules/PSWindowsUpdate/2.2.1.2/PSWindowsUpdate.Format.ps1xml new file mode 100644 index 0000000..552dedb --- /dev/null +++ b/Modules/PSWindowsUpdate/2.2.1.2/PSWindowsUpdate.Format.ps1xml @@ -0,0 +1,616 @@ + + + + + PSWindowsUpdate + + PSWindowsUpdate.WindowsUpdate + + + + + 12 + + + 10 + + + 9 + + + Right + 6 + + + + + + + + ComputerName + + + Status + + + KB + + + Size + + + Title + + + + + + + + PSWindowsUpdate + + PSWindowsUpdate.OfflineMSU + + + + + 1 + + + 10 + + + + 11 + + + Right + 8 + + + + + + + X + + + Result + + + Title + + + LastUpdated + + + Size + + + + + + + + PSWindowsUpdate + + PSWindowsUpdate.WindowsUpdateJob + + + + + 1 + + + 12 + + + 10 + + + 9 + + + Right + 6 + + + + + + + + X + + + ComputerName + + + Result + + + KB + + + Size + + + Title + + + + + + + + PSWindowsUpdate + + PSWindowsUpdate.History + + + + + 12 + + + 14 + + + 10 + + + 19 + + + + + + + + ComputerName + + + Operationname + + + Result + + + Date + + + Title + + + + + + + + PSWindowsUpdate + + PSWindowsUpdate.ServiceManager + + + + + 36 + + + 9 + + + + 9 + + + + + + + + ServiceID + + + IsManaged + + + IsDefaultAUService + + + Name + + + + + + + + PSWindowsUpdate + + PSWindowsUpdate.AgentInfo + + + + + 12 + + + 15 + + + 15 + + + 10 + + + + + + + + ComputerName + + + PSWindowsUpdate + + + PSWUModuleDll + + + ApiVersion + + + WuapiDllVersion + + + + + + + + PSWindowsUpdate + + PSWindowsUpdate.InstallerStatus + + + + + 12 + + + + + + + + ComputerName + + + IsBusy + + + + + + + + PSWindowsUpdate + + PSWindowsUpdate.LastResults + + + + + 12 + + + 10 + + + + + + + + ComputerName + + + LastSearchSuccessDate + + + LastInstallationSuccessDate + + + + + + + + PSWindowsUpdate + + PSWindowsUpdate.WUJob + + + + + 12 + + + 20 + + + + + + + + + + ComputerName + + + Name + + + + $_.Definition.Actions[1].Arguments -replace '-Command "|"$' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Modules/PSWindowsUpdate/2.2.1.2/PSWindowsUpdate.dll b/Modules/PSWindowsUpdate/2.2.1.2/PSWindowsUpdate.dll new file mode 100644 index 0000000000000000000000000000000000000000..0ff2dc0c976d4eda9af09cb1753dd2c713d0c6e5 GIT binary patch literal 359992 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 Jjn+oh*z4$!#9@1`UE@vr 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

X3y(y|X38>#10@S*fHU@AG|JgiB>RSExNX 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 literal 0 HcmV?d00001 diff --git a/Modules/PSWindowsUpdate/2.2.1.2/PSWindowsUpdate.dll-Help.xml b/Modules/PSWindowsUpdate/2.2.1.2/PSWindowsUpdate.dll-Help.xml new file mode 100644 index 0000000..c395eff --- /dev/null +++ b/Modules/PSWindowsUpdate/2.2.1.2/PSWindowsUpdate.dll-Help.xml @@ -0,0 +1,11838 @@ + + + + + + Set-PSWUSettings + Set + PSWUSettings + + Save PSWUSettings. + + + + Use Set-PSWUSettings save PSWindowsUpdate module settings to XML file. + + + + + Set-PSWUSettings + + + Credential + + Specify alternative credential. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Properties + + Alternative report message propertie.s + + string + + System.String + + + + + + SaveAsSystem + + Invoke-WUJob to save credential as system user + + string + + System.String + + + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + SmtpCredential + + Save smtp credential to Credential Manager. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + SmtpEnableSsl + + Save enable ssl to PSWUSettings file. + + bool + + System.Boolean + + + False + + + + SmtpFrom + + Save smtp sernder to PSWUSettings file. + + string + + System.String + + + + + + SmtpPort + + Save smtp port to PSWUSettings file. + + int + + System.Int32 + + + 25 + + + + SmtpServer + + Save smtp server to PSWUSettings file. + + string + + System.String + + + + + + SmtpSubject + + Save alternative message subject to PSWUSettings file. + + string + + System.String + + + + + + SmtpTo + + Save smtp recipient to PSWUSettings file. + + string + + System.String + + + + + + Style + + Alternative report message format style. + + string + + System.String + + + + + + + + + Credential + + Specify alternative credential. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + SmtpServer + + Save smtp server to PSWUSettings file. + + string + + System.String + + + + + + SmtpPort + + Save smtp port to PSWUSettings file. + + int + + System.Int32 + + + 25 + + + + SmtpEnableSsl + + Save enable ssl to PSWUSettings file. + + bool + + System.Boolean + + + False + + + + SmtpCredential + + Save smtp credential to Credential Manager. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + SmtpTo + + Save smtp recipient to PSWUSettings file. + + string + + System.String + + + + + + SmtpFrom + + Save smtp sernder to PSWUSettings file. + + string + + System.String + + + + + + SmtpSubject + + Save alternative message subject to PSWUSettings file. + + string + + System.String + + + + + + Properties + + Alternative report message propertie.s + + string + + System.String + + + + + + Style + + Alternative report message format style. + + string + + System.String + + + + + + SaveAsSystem + + Invoke-WUJob to save credential as system user + + string + + System.String + + + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + + ---------- EXAMPLE 1 ---------- + Set Office 365 as smtp server for PSWindowsUpdate module. + +Set-PSWUSettings -SmtpServer smtp.office365.com -SmtpPort 587 -SmtpEnableSsl $true -SmtpSubject "PSWindowsUpdate Report" -SmtpTo mgajda@psmvp.pl -SmtpFrom mgajda@psmvp.pl -SmtpCredential (Get-Credential mgajda@psmvp.pl) + + + + + Author Blog + https://commandlinegeeks.wordpress.com/ + + + + + + + Get-WindowsUpdate + Get + WindowsUpdate + + Get list of available updates meeting the criteria. + + + + Use Get-WindowsUpdate (aka Get-WUList) cmdlet to get list of available or installed updates meeting specific criteria. + Use Download-WindowsUpdate alias to get list of updates and download it. Equivalent Get-WindowsUpdate -Download. + Use Install-WindowsUpdate (aka Get-WUInstall) alias to get list of updates and install it. Equivalent Get-WindowsUpdate -Install. + Use Hide-WindowsUpdate alias to get list of updates and hide it. Equivalent Get-WindowsUpdate -Hide. + Use Show-WindowsUpdate (aka UnHide-WindowsUpdate) alias to get list of updates and unhide it. Equivalent Get-WindowsUpdate -Hide:$false. + There are two types of filtering update: Pre search criteria, Post search criteria. + - Pre search works on server side, like example: (IsInstalled = 0 and IsHidden = 0 and CategoryIds contains '0fa1201d-4330-4fa8-8ae9-b877473b6441' ) + - Post search work on client side after get the pre-filtered list of updates, like example $KBArticleID -match $Update.KBArticleIDs + Status info list:\r\n[A|R]DIMHUB\r\nA-IsAccetped\r\nR-IsRejected\r\n D-IsDownloaded\r\n F-DownloadFailed\r\n ?-IsInvoked\r\n I-IsInstalled\r\n F-InstallFailed\r\n ?-IsInvoked\r\n R-RebootRequired\r\n M-IsMandatory\r\n H-IsHidden\r\n U-IsUninstallable\r\n B-IsBeta + + + + + Get-WindowsUpdate + + + AcceptAll + + Do not ask confirmation for updates. Download or Install all available updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AutoReboot + + Do not ask for reboot if it needed. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AutoSelectOnly + + Install only the updates that have status AutoSelectOnWebsites on true. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AutoSelectOnWebSites + + Pre search criteria - native for WUAPI. Finds updates where the AutoSelectOnWebSites property has the specified value. + "AutoSelectOnWebSites=1" finds updates that are flagged to be automatically selected by Windows Update. + "AutoSelectOnWebSites=0" finds updates that are not flagged for Automatic Updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + BrowseOnly + + Pre search criteria - native for WUAPI. "BrowseOnly=1" finds updates that are considered optional. "BrowseOnly=0" finds updates that are not considered optional. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Category + + Post search criteria. Finds updates that contain a specified category name (or sets of categories name), such as 'Updates', 'Security Updates', 'Critical Updates', etc... + + string[] + + System.String[] + + + + + + CategoryIDs + + Pre search criteria - native for WUAPI. Finds updates that belong to a specified category (or sets of UUIDs), such as '0fa1201d-4330-4fa8-8ae9-b877473b6441'. + + string[] + + System.String[] + + + + + + ComputerName + + Specify one or more computer names for remote connection. Interactive remote connection works only for checking updates. For download or install cmdlet creates an Invoke-WUJob task. + + string[] + + System.String[] + + + + + + Criteria + + Pre search criteria - native for WUAPI. Set own string that specifies the search criteria. https://docs.microsoft.com/pl-pl/windows/desktop/api/wuapi/nf-wuapi-iupdatesearcher-search + + string + + System.String + + + + + + Debuger + + Debuger return original exceptions. For additional debug information use $DebugPreference = "Continue" + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + DeploymentAction + + Pre search criteria - native for WUAPI. Finds updates that are deployed for a specific action, such as an installation or uninstallation that the administrator of a server specifies. "DeploymentAction='Installation'" finds updates that are deployed for installation on a destination computer. "DeploymentAction='Uninstallation'" depends on the other query criteria. + "DeploymentAction='Uninstallation'" finds updates that are deployed for uninstallation on a destination computer. "DeploymentAction='Uninstallation'" depends on the other query criteria. + If this criterion is not explicitly specified, each group of criteria that is joined to an AND operator implies "DeploymentAction='Installation'". + + string + + System.String + + + + + + Download + + Get list of updates and download approved updates, but do not install it. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ForceDownload + + Forces the download of updates that are already installed or that cannot be installed. Works only with -Download. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ForceInstall + + A forced installation is an installation in which an update is installed even if the metadata indicates that the update is already installed. Before you use ForceInstall to force an installation, determine whether the update is installed and available. If an update is not installed, a forced installation fails. Works only with -Install. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Hide + + Get list of updates and hide/unhide approved updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IgnoreReboot + + Do not ask for reboot if it needed, but do not reboot automaticaly. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IgnoreRebootRequired + + Post search criteria. Finds updates that specifies the restart behavior that not occurs when you install or uninstall the update. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IgnoreUserInput + + Post search criteria. Finds updates that the installation or uninstallation of an update can't prompt for user input. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Install + + Get list of updates and install approved updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IsAssigned + + Pre search criteria - native for WUAPI. Finds updates that are intended for deployment by Automatic Updates. "IsAssigned=1" finds updates that are intended for deployment by Automatic Updates, which depends on the other query criteria.At most, one assigned Windows-based driver update is returned for each local device on a destination computer. + "IsAssigned=0" finds updates that are not intended to be deployed by Automatic Updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IsHidden + + Pre search criteria - native for WUAPI. Finds updates that are marked as hidden on the destination computer. Default search criteria is only not hidden upadates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IsInstalled + + Pre search criteria - native for WUAPI. Finds updates that are installed on the destination computer. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IsPresent + + Pre search criteria - native for WUAPI. When set to 1, finds updates that are present on a computer. + "IsPresent=1" finds updates that are present on a destination computer.If the update is valid for one or more products, the update is considered present if it is installed for one or more of the products. + "IsPresent=0" finds updates that are not installed for any product on a destination computer. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + KBArticleID + + Post search criteria. Finds updates that contain a KBArticleID (or sets of KBArticleIDs), such as 'KB982861'. + + string[] + + System.String[] + + + + + + MaxSize + + Post search criteria. Finds updates that have MaxDownloadSize less or equal. Size is in Bytes. + + long + + System.Int64 + + + 0 + + + + MinSize + + Post search criteria. Finds updates that have MaxDownloadSize greater or equal. Size is in Bytes. + + long + + System.Int64 + + + 0 + + + + NotCategory + + Post search criteria. Finds updates that not contain a specified category name (or sets of categories name), such as 'Updates', 'Security Updates', 'Critical Updates', etc... + + string[] + + System.String[] + + + + + + NotKBArticleID + + Post search criteria. Finds updates that not contain a KBArticleID (or sets of KBArticleIDs), such as 'KB982861'. + + string[] + + System.String[] + + + + + + NotSeverity + + Post search criteria. Finds updates that not match part of severity. + + string[] + + System.String[] + + + + + + NotTitle + + Post search criteria. Finds updates that not match part of title (case sensitive). + + string + + System.String + + + + + + NotUpdateID + + Pre search criteria - native for WUAPI. Finds updates without a specific UUID (or sets of UUIDs), such as '12345678-9abc-def0-1234-56789abcdef0'. + + string[] + + System.String[] + + + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + RecurseCycle + + Specify number of cycles for check updates after successful update installation or system startup. First run is always main cycle (-RecurseCycle 1 or none). Second (-RecurseCycle 2) and n (-RecurseCycle n) cycle are recursive. + + int + + System.Int32 + + + 0 + + + + RevisionNumber + + Pre search criteria - native for WUAPI. Finds updates with a specific RevisionNumber, such as '100'. This criterion must be combined with the UpdateID param. + + int + + System.Int32 + + + 0 + + + + RootCategories + + Post search criteria. Finds updates that contain a specified root category name 'Critical Updates', 'Definition Updates', 'Drivers', 'Feature Packs', 'Security Updates', 'Service Packs', 'Tools', 'Update Rollups', 'Updates', 'Upgrades', 'Microsoft'. + + string[] + + System.String[] + + + + + + ScheduleJob + + Specify time when job will start. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + ScheduleReboot + + Specify time when system will be rebooted. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + SendHistory + + Send install history (Get-WUHistory) report after successful update installation or system startup. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file (more preferred) in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ServiceID + + Use specific Service Manager if it's available. + Examples Of ServiceID: \r\n \r\n -- Windows Update 9482f4b4-e343-43b6-b170-9a65bc822c77 \r\n -- Microsoft Update 7971f918-a847-4430-9279-4a52d1efe18d \r\n -- Windows Store 117cab2d-82b1-4b5a-a08c-4d62dbee7782 \r\n -- Windows Server Update Service 3da21691-e39d-4da6-8a4b-b43877bcb1b7 + + string + + System.String + + + + + + Severity + + Post search criteria. Finds updates that match part of severity, such as 'Important', 'Critical', 'Moderate', etc... + + string[] + + System.String[] + + + + + + ShowPreSearchCriteria + + Show choosen search criteria. Only works for pre search criteria. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Title + + Post search criteria. Finds updates that match part of title (case sensitive), such as '.NET Framework 4'. + + string + + System.String + + + + + + UpdateID + + Pre search criteria - native for WUAPI. Finds updates with a specific UUID (or sets of UUIDs), such as '12345678-9abc-def0-1234-56789abcdef0'. + + string[] + + System.String[] + + + + + + UpdateType + + Pre search criteria - native for WUAPI. Finds updates with a specific type, such as 'Driver' and 'Software'. Default value contains all updates. + + string + + System.String + + + + + + WithHidden + + Pre search criteria - native for WUAPI. Finds updates that are both hidden and not on the destination computer. Overwrite IsHidden param. Default search criteria is only not hidden upadates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + Get-WindowsUpdate + + + AcceptAll + + Do not ask confirmation for updates. Download or Install all available updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AutoReboot + + Do not ask for reboot if it needed. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AutoSelectOnly + + Install only the updates that have status AutoSelectOnWebsites on true. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AutoSelectOnWebSites + + Pre search criteria - native for WUAPI. Finds updates where the AutoSelectOnWebSites property has the specified value. + "AutoSelectOnWebSites=1" finds updates that are flagged to be automatically selected by Windows Update. + "AutoSelectOnWebSites=0" finds updates that are not flagged for Automatic Updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + BrowseOnly + + Pre search criteria - native for WUAPI. "BrowseOnly=1" finds updates that are considered optional. "BrowseOnly=0" finds updates that are not considered optional. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Category + + Post search criteria. Finds updates that contain a specified category name (or sets of categories name), such as 'Updates', 'Security Updates', 'Critical Updates', etc... + + string[] + + System.String[] + + + + + + CategoryIDs + + Pre search criteria - native for WUAPI. Finds updates that belong to a specified category (or sets of UUIDs), such as '0fa1201d-4330-4fa8-8ae9-b877473b6441'. + + string[] + + System.String[] + + + + + + ComputerName + + Specify one or more computer names for remote connection. Interactive remote connection works only for checking updates. For download or install cmdlet creates an Invoke-WUJob task. + + string[] + + System.String[] + + + + + + Criteria + + Pre search criteria - native for WUAPI. Set own string that specifies the search criteria. https://docs.microsoft.com/pl-pl/windows/desktop/api/wuapi/nf-wuapi-iupdatesearcher-search + + string + + System.String + + + + + + Debuger + + Debuger return original exceptions. For additional debug information use $DebugPreference = "Continue" + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + DeploymentAction + + Pre search criteria - native for WUAPI. Finds updates that are deployed for a specific action, such as an installation or uninstallation that the administrator of a server specifies. "DeploymentAction='Installation'" finds updates that are deployed for installation on a destination computer. "DeploymentAction='Uninstallation'" depends on the other query criteria. + "DeploymentAction='Uninstallation'" finds updates that are deployed for uninstallation on a destination computer. "DeploymentAction='Uninstallation'" depends on the other query criteria. + If this criterion is not explicitly specified, each group of criteria that is joined to an AND operator implies "DeploymentAction='Installation'". + + string + + System.String + + + + + + Download + + Get list of updates and download approved updates, but do not install it. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ForceDownload + + Forces the download of updates that are already installed or that cannot be installed. Works only with -Download. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ForceInstall + + A forced installation is an installation in which an update is installed even if the metadata indicates that the update is already installed. Before you use ForceInstall to force an installation, determine whether the update is installed and available. If an update is not installed, a forced installation fails. Works only with -Install. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Hide + + Get list of updates and hide/unhide approved updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IgnoreReboot + + Do not ask for reboot if it needed, but do not reboot automaticaly. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IgnoreRebootRequired + + Post search criteria. Finds updates that specifies the restart behavior that not occurs when you install or uninstall the update. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IgnoreUserInput + + Post search criteria. Finds updates that the installation or uninstallation of an update can't prompt for user input. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Install + + Get list of updates and install approved updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IsAssigned + + Pre search criteria - native for WUAPI. Finds updates that are intended for deployment by Automatic Updates. "IsAssigned=1" finds updates that are intended for deployment by Automatic Updates, which depends on the other query criteria.At most, one assigned Windows-based driver update is returned for each local device on a destination computer. + "IsAssigned=0" finds updates that are not intended to be deployed by Automatic Updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IsHidden + + Pre search criteria - native for WUAPI. Finds updates that are marked as hidden on the destination computer. Default search criteria is only not hidden upadates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IsInstalled + + Pre search criteria - native for WUAPI. Finds updates that are installed on the destination computer. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IsPresent + + Pre search criteria - native for WUAPI. When set to 1, finds updates that are present on a computer. + "IsPresent=1" finds updates that are present on a destination computer.If the update is valid for one or more products, the update is considered present if it is installed for one or more of the products. + "IsPresent=0" finds updates that are not installed for any product on a destination computer. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + KBArticleID + + Post search criteria. Finds updates that contain a KBArticleID (or sets of KBArticleIDs), such as 'KB982861'. + + string[] + + System.String[] + + + + + + MaxSize + + Post search criteria. Finds updates that have MaxDownloadSize less or equal. Size is in Bytes. + + long + + System.Int64 + + + 0 + + + + MinSize + + Post search criteria. Finds updates that have MaxDownloadSize greater or equal. Size is in Bytes. + + long + + System.Int64 + + + 0 + + + + NotCategory + + Post search criteria. Finds updates that not contain a specified category name (or sets of categories name), such as 'Updates', 'Security Updates', 'Critical Updates', etc... + + string[] + + System.String[] + + + + + + NotKBArticleID + + Post search criteria. Finds updates that not contain a KBArticleID (or sets of KBArticleIDs), such as 'KB982861'. + + string[] + + System.String[] + + + + + + NotSeverity + + Post search criteria. Finds updates that not match part of severity. + + string[] + + System.String[] + + + + + + NotTitle + + Post search criteria. Finds updates that not match part of title (case sensitive). + + string + + System.String + + + + + + NotUpdateID + + Pre search criteria - native for WUAPI. Finds updates without a specific UUID (or sets of UUIDs), such as '12345678-9abc-def0-1234-56789abcdef0'. + + string[] + + System.String[] + + + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + RecurseCycle + + Specify number of cycles for check updates after successful update installation or system startup. First run is always main cycle (-RecurseCycle 1 or none). Second (-RecurseCycle 2) and n (-RecurseCycle n) cycle are recursive. + + int + + System.Int32 + + + 0 + + + + RevisionNumber + + Pre search criteria - native for WUAPI. Finds updates with a specific RevisionNumber, such as '100'. This criterion must be combined with the UpdateID param. + + int + + System.Int32 + + + 0 + + + + RootCategories + + Post search criteria. Finds updates that contain a specified root category name 'Critical Updates', 'Definition Updates', 'Drivers', 'Feature Packs', 'Security Updates', 'Service Packs', 'Tools', 'Update Rollups', 'Updates', 'Upgrades', 'Microsoft'. + + string[] + + System.String[] + + + + + + ScheduleJob + + Specify time when job will start. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + ScheduleReboot + + Specify time when system will be rebooted. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + SendHistory + + Send install history (Get-WUHistory) report after successful update installation or system startup. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file (more preferred) in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Severity + + Post search criteria. Finds updates that match part of severity, such as 'Important', 'Critical', 'Moderate', etc... + + string[] + + System.String[] + + + + + + ShowPreSearchCriteria + + Show choosen search criteria. Only works for pre search criteria. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Title + + Post search criteria. Finds updates that match part of title (case sensitive), such as '.NET Framework 4'. + + string + + System.String + + + + + + UpdateID + + Pre search criteria - native for WUAPI. Finds updates with a specific UUID (or sets of UUIDs), such as '12345678-9abc-def0-1234-56789abcdef0'. + + string[] + + System.String[] + + + + + + UpdateType + + Pre search criteria - native for WUAPI. Finds updates with a specific type, such as 'Driver' and 'Software'. Default value contains all updates. + + string + + System.String + + + + + + WindowsUpdate + + Use Microsoft Update Service Manager - '7971f918-a847-4430-9279-4a52d1efe18d' + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + WithHidden + + Pre search criteria - native for WUAPI. Finds updates that are both hidden and not on the destination computer. Overwrite IsHidden param. Default search criteria is only not hidden upadates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + Get-WindowsUpdate + + + AcceptAll + + Do not ask confirmation for updates. Download or Install all available updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AutoReboot + + Do not ask for reboot if it needed. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AutoSelectOnly + + Install only the updates that have status AutoSelectOnWebsites on true. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AutoSelectOnWebSites + + Pre search criteria - native for WUAPI. Finds updates where the AutoSelectOnWebSites property has the specified value. + "AutoSelectOnWebSites=1" finds updates that are flagged to be automatically selected by Windows Update. + "AutoSelectOnWebSites=0" finds updates that are not flagged for Automatic Updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + BrowseOnly + + Pre search criteria - native for WUAPI. "BrowseOnly=1" finds updates that are considered optional. "BrowseOnly=0" finds updates that are not considered optional. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Category + + Post search criteria. Finds updates that contain a specified category name (or sets of categories name), such as 'Updates', 'Security Updates', 'Critical Updates', etc... + + string[] + + System.String[] + + + + + + CategoryIDs + + Pre search criteria - native for WUAPI. Finds updates that belong to a specified category (or sets of UUIDs), such as '0fa1201d-4330-4fa8-8ae9-b877473b6441'. + + string[] + + System.String[] + + + + + + ComputerName + + Specify one or more computer names for remote connection. Interactive remote connection works only for checking updates. For download or install cmdlet creates an Invoke-WUJob task. + + string[] + + System.String[] + + + + + + Criteria + + Pre search criteria - native for WUAPI. Set own string that specifies the search criteria. https://docs.microsoft.com/pl-pl/windows/desktop/api/wuapi/nf-wuapi-iupdatesearcher-search + + string + + System.String + + + + + + Debuger + + Debuger return original exceptions. For additional debug information use $DebugPreference = "Continue" + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + DeploymentAction + + Pre search criteria - native for WUAPI. Finds updates that are deployed for a specific action, such as an installation or uninstallation that the administrator of a server specifies. "DeploymentAction='Installation'" finds updates that are deployed for installation on a destination computer. "DeploymentAction='Uninstallation'" depends on the other query criteria. + "DeploymentAction='Uninstallation'" finds updates that are deployed for uninstallation on a destination computer. "DeploymentAction='Uninstallation'" depends on the other query criteria. + If this criterion is not explicitly specified, each group of criteria that is joined to an AND operator implies "DeploymentAction='Installation'". + + string + + System.String + + + + + + Download + + Get list of updates and download approved updates, but do not install it. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ForceDownload + + Forces the download of updates that are already installed or that cannot be installed. Works only with -Download. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ForceInstall + + A forced installation is an installation in which an update is installed even if the metadata indicates that the update is already installed. Before you use ForceInstall to force an installation, determine whether the update is installed and available. If an update is not installed, a forced installation fails. Works only with -Install. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Hide + + Get list of updates and hide/unhide approved updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IgnoreReboot + + Do not ask for reboot if it needed, but do not reboot automaticaly. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IgnoreRebootRequired + + Post search criteria. Finds updates that specifies the restart behavior that not occurs when you install or uninstall the update. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IgnoreUserInput + + Post search criteria. Finds updates that the installation or uninstallation of an update can't prompt for user input. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Install + + Get list of updates and install approved updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IsAssigned + + Pre search criteria - native for WUAPI. Finds updates that are intended for deployment by Automatic Updates. "IsAssigned=1" finds updates that are intended for deployment by Automatic Updates, which depends on the other query criteria.At most, one assigned Windows-based driver update is returned for each local device on a destination computer. + "IsAssigned=0" finds updates that are not intended to be deployed by Automatic Updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IsHidden + + Pre search criteria - native for WUAPI. Finds updates that are marked as hidden on the destination computer. Default search criteria is only not hidden upadates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IsInstalled + + Pre search criteria - native for WUAPI. Finds updates that are installed on the destination computer. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IsPresent + + Pre search criteria - native for WUAPI. When set to 1, finds updates that are present on a computer. + "IsPresent=1" finds updates that are present on a destination computer.If the update is valid for one or more products, the update is considered present if it is installed for one or more of the products. + "IsPresent=0" finds updates that are not installed for any product on a destination computer. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + KBArticleID + + Post search criteria. Finds updates that contain a KBArticleID (or sets of KBArticleIDs), such as 'KB982861'. + + string[] + + System.String[] + + + + + + MaxSize + + Post search criteria. Finds updates that have MaxDownloadSize less or equal. Size is in Bytes. + + long + + System.Int64 + + + 0 + + + + MicrosoftUpdate + + Use Windows Update Service Manager - '9482f4b4-e343-43b6-b170-9a65bc822c77' + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + MinSize + + Post search criteria. Finds updates that have MaxDownloadSize greater or equal. Size is in Bytes. + + long + + System.Int64 + + + 0 + + + + NotCategory + + Post search criteria. Finds updates that not contain a specified category name (or sets of categories name), such as 'Updates', 'Security Updates', 'Critical Updates', etc... + + string[] + + System.String[] + + + + + + NotKBArticleID + + Post search criteria. Finds updates that not contain a KBArticleID (or sets of KBArticleIDs), such as 'KB982861'. + + string[] + + System.String[] + + + + + + NotSeverity + + Post search criteria. Finds updates that not match part of severity. + + string[] + + System.String[] + + + + + + NotTitle + + Post search criteria. Finds updates that not match part of title (case sensitive). + + string + + System.String + + + + + + NotUpdateID + + Pre search criteria - native for WUAPI. Finds updates without a specific UUID (or sets of UUIDs), such as '12345678-9abc-def0-1234-56789abcdef0'. + + string[] + + System.String[] + + + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + RecurseCycle + + Specify number of cycles for check updates after successful update installation or system startup. First run is always main cycle (-RecurseCycle 1 or none). Second (-RecurseCycle 2) and n (-RecurseCycle n) cycle are recursive. + + int + + System.Int32 + + + 0 + + + + RevisionNumber + + Pre search criteria - native for WUAPI. Finds updates with a specific RevisionNumber, such as '100'. This criterion must be combined with the UpdateID param. + + int + + System.Int32 + + + 0 + + + + RootCategories + + Post search criteria. Finds updates that contain a specified root category name 'Critical Updates', 'Definition Updates', 'Drivers', 'Feature Packs', 'Security Updates', 'Service Packs', 'Tools', 'Update Rollups', 'Updates', 'Upgrades', 'Microsoft'. + + string[] + + System.String[] + + + + + + ScheduleJob + + Specify time when job will start. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + ScheduleReboot + + Specify time when system will be rebooted. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + SendHistory + + Send install history (Get-WUHistory) report after successful update installation or system startup. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file (more preferred) in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Severity + + Post search criteria. Finds updates that match part of severity, such as 'Important', 'Critical', 'Moderate', etc... + + string[] + + System.String[] + + + + + + ShowPreSearchCriteria + + Show choosen search criteria. Only works for pre search criteria. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Title + + Post search criteria. Finds updates that match part of title (case sensitive), such as '.NET Framework 4'. + + string + + System.String + + + + + + UpdateID + + Pre search criteria - native for WUAPI. Finds updates with a specific UUID (or sets of UUIDs), such as '12345678-9abc-def0-1234-56789abcdef0'. + + string[] + + System.String[] + + + + + + UpdateType + + Pre search criteria - native for WUAPI. Finds updates with a specific type, such as 'Driver' and 'Software'. Default value contains all updates. + + string + + System.String + + + + + + WithHidden + + Pre search criteria - native for WUAPI. Finds updates that are both hidden and not on the destination computer. Overwrite IsHidden param. Default search criteria is only not hidden upadates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + + ComputerName + + Specify one or more computer names for remote connection. Interactive remote connection works only for checking updates. For download or install cmdlet creates an Invoke-WUJob task. + + string[] + + System.String[] + + + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file (more preferred) in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + SendHistory + + Send install history (Get-WUHistory) report after successful update installation or system startup. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ScheduleJob + + Specify time when job will start. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + AcceptAll + + Do not ask confirmation for updates. Download or Install all available updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + RecurseCycle + + Specify number of cycles for check updates after successful update installation or system startup. First run is always main cycle (-RecurseCycle 1 or none). Second (-RecurseCycle 2) and n (-RecurseCycle n) cycle are recursive. + + int + + System.Int32 + + + 0 + + + + Hide + + Get list of updates and hide/unhide approved updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Download + + Get list of updates and download approved updates, but do not install it. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ForceDownload + + Forces the download of updates that are already installed or that cannot be installed. Works only with -Download. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Install + + Get list of updates and install approved updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ForceInstall + + A forced installation is an installation in which an update is installed even if the metadata indicates that the update is already installed. Before you use ForceInstall to force an installation, determine whether the update is installed and available. If an update is not installed, a forced installation fails. Works only with -Install. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AutoReboot + + Do not ask for reboot if it needed. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IgnoreReboot + + Do not ask for reboot if it needed, but do not reboot automaticaly. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ScheduleReboot + + Specify time when system will be rebooted. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + ServiceID + + Use specific Service Manager if it's available. + Examples Of ServiceID: \r\n \r\n -- Windows Update 9482f4b4-e343-43b6-b170-9a65bc822c77 \r\n -- Microsoft Update 7971f918-a847-4430-9279-4a52d1efe18d \r\n -- Windows Store 117cab2d-82b1-4b5a-a08c-4d62dbee7782 \r\n -- Windows Server Update Service 3da21691-e39d-4da6-8a4b-b43877bcb1b7 + + string + + System.String + + + + + + WindowsUpdate + + Use Microsoft Update Service Manager - '7971f918-a847-4430-9279-4a52d1efe18d' + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + MicrosoftUpdate + + Use Windows Update Service Manager - '9482f4b4-e343-43b6-b170-9a65bc822c77' + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Criteria + + Pre search criteria - native for WUAPI. Set own string that specifies the search criteria. https://docs.microsoft.com/pl-pl/windows/desktop/api/wuapi/nf-wuapi-iupdatesearcher-search + + string + + System.String + + + + + + UpdateType + + Pre search criteria - native for WUAPI. Finds updates with a specific type, such as 'Driver' and 'Software'. Default value contains all updates. + + string + + System.String + + + + + + DeploymentAction + + Pre search criteria - native for WUAPI. Finds updates that are deployed for a specific action, such as an installation or uninstallation that the administrator of a server specifies. "DeploymentAction='Installation'" finds updates that are deployed for installation on a destination computer. "DeploymentAction='Uninstallation'" depends on the other query criteria. + "DeploymentAction='Uninstallation'" finds updates that are deployed for uninstallation on a destination computer. "DeploymentAction='Uninstallation'" depends on the other query criteria. + If this criterion is not explicitly specified, each group of criteria that is joined to an AND operator implies "DeploymentAction='Installation'". + + string + + System.String + + + + + + IsAssigned + + Pre search criteria - native for WUAPI. Finds updates that are intended for deployment by Automatic Updates. "IsAssigned=1" finds updates that are intended for deployment by Automatic Updates, which depends on the other query criteria.At most, one assigned Windows-based driver update is returned for each local device on a destination computer. + "IsAssigned=0" finds updates that are not intended to be deployed by Automatic Updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IsPresent + + Pre search criteria - native for WUAPI. When set to 1, finds updates that are present on a computer. + "IsPresent=1" finds updates that are present on a destination computer.If the update is valid for one or more products, the update is considered present if it is installed for one or more of the products. + "IsPresent=0" finds updates that are not installed for any product on a destination computer. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + BrowseOnly + + Pre search criteria - native for WUAPI. "BrowseOnly=1" finds updates that are considered optional. "BrowseOnly=0" finds updates that are not considered optional. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AutoSelectOnWebSites + + Pre search criteria - native for WUAPI. Finds updates where the AutoSelectOnWebSites property has the specified value. + "AutoSelectOnWebSites=1" finds updates that are flagged to be automatically selected by Windows Update. + "AutoSelectOnWebSites=0" finds updates that are not flagged for Automatic Updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + UpdateID + + Pre search criteria - native for WUAPI. Finds updates with a specific UUID (or sets of UUIDs), such as '12345678-9abc-def0-1234-56789abcdef0'. + + string[] + + System.String[] + + + + + + NotUpdateID + + Pre search criteria - native for WUAPI. Finds updates without a specific UUID (or sets of UUIDs), such as '12345678-9abc-def0-1234-56789abcdef0'. + + string[] + + System.String[] + + + + + + RevisionNumber + + Pre search criteria - native for WUAPI. Finds updates with a specific RevisionNumber, such as '100'. This criterion must be combined with the UpdateID param. + + int + + System.Int32 + + + 0 + + + + CategoryIDs + + Pre search criteria - native for WUAPI. Finds updates that belong to a specified category (or sets of UUIDs), such as '0fa1201d-4330-4fa8-8ae9-b877473b6441'. + + string[] + + System.String[] + + + + + + IsInstalled + + Pre search criteria - native for WUAPI. Finds updates that are installed on the destination computer. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IsHidden + + Pre search criteria - native for WUAPI. Finds updates that are marked as hidden on the destination computer. Default search criteria is only not hidden upadates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + WithHidden + + Pre search criteria - native for WUAPI. Finds updates that are both hidden and not on the destination computer. Overwrite IsHidden param. Default search criteria is only not hidden upadates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ShowPreSearchCriteria + + Show choosen search criteria. Only works for pre search criteria. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + RootCategories + + Post search criteria. Finds updates that contain a specified root category name 'Critical Updates', 'Definition Updates', 'Drivers', 'Feature Packs', 'Security Updates', 'Service Packs', 'Tools', 'Update Rollups', 'Updates', 'Upgrades', 'Microsoft'. + + string[] + + System.String[] + + + + + + Category + + Post search criteria. Finds updates that contain a specified category name (or sets of categories name), such as 'Updates', 'Security Updates', 'Critical Updates', etc... + + string[] + + System.String[] + + + + + + KBArticleID + + Post search criteria. Finds updates that contain a KBArticleID (or sets of KBArticleIDs), such as 'KB982861'. + + string[] + + System.String[] + + + + + + Title + + Post search criteria. Finds updates that match part of title (case sensitive), such as '.NET Framework 4'. + + string + + System.String + + + + + + Severity + + Post search criteria. Finds updates that match part of severity, such as 'Important', 'Critical', 'Moderate', etc... + + string[] + + System.String[] + + + + + + NotCategory + + Post search criteria. Finds updates that not contain a specified category name (or sets of categories name), such as 'Updates', 'Security Updates', 'Critical Updates', etc... + + string[] + + System.String[] + + + + + + NotKBArticleID + + Post search criteria. Finds updates that not contain a KBArticleID (or sets of KBArticleIDs), such as 'KB982861'. + + string[] + + System.String[] + + + + + + NotTitle + + Post search criteria. Finds updates that not match part of title (case sensitive). + + string + + System.String + + + + + + NotSeverity + + Post search criteria. Finds updates that not match part of severity. + + string[] + + System.String[] + + + + + + IgnoreUserInput + + Post search criteria. Finds updates that the installation or uninstallation of an update can't prompt for user input. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + Silent + + Post search criteria. Finds updates that the installation or uninstallation of an update can't prompt for user input. + This is an alias of the IgnoreUserInput parameter. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IgnoreRebootRequired + + Post search criteria. Finds updates that specifies the restart behavior that not occurs when you install or uninstall the update. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AutoSelectOnly + + Install only the updates that have status AutoSelectOnWebsites on true. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + MaxSize + + Post search criteria. Finds updates that have MaxDownloadSize less or equal. Size is in Bytes. + + long + + System.Int64 + + + 0 + + + + MinSize + + Post search criteria. Finds updates that have MaxDownloadSize greater or equal. Size is in Bytes. + + long + + System.Int64 + + + 0 + + + + Debuger + + Debuger return original exceptions. For additional debug information use $DebugPreference = "Continue" + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + System.String[] + + + + Specify one or more computer names for remote connection. Interactive remote connection works only for checking updates. For download or install cmdlet creates an Invoke-WUJob task. + + + + + + + + PSWindowsUpdate.WindowsUpdate + + + + OutputType for WindowsUpdate objects. + + + + + + ---------- EXAMPLE 1 ---------- + Get windows updates available from default service manager. + +Get-WindowsUpdate -Verbose + +VERBOSE: MG-PC: Connecting to Windows Server Update Service server. Please wait... +VERBOSE: Found[4] Updates in pre search criteria +VERBOSE: Found[4] Updates in post search criteria + +ComputerName Status KB Size Title +------------ ------ -- ---- ----- +MG-PC ------- KB890830 44MB Narzędzie Windows do usuwania złośliwego oprogramowania dla systemów Window... +MG-PC ------- KB4034658 1GB 2017-08 Aktualizacja zbiorcza dla systemu Windows 10 Version 1607 dla syste... +MG-PC ------- KB4034662 21MB 2017-08 Aktualizacja zabezpieczeń Adobe Flash Player w Windows 10 Version 1... +MG-PC ------- KB4035631 11MB 2017-08 Aktualizacja Windows 10 Version 1607 dla systemów opartych na archi... + + + ---------- EXAMPLE 2 ---------- + Get all installed drivers that are available at Windows Update. Additionaly show pre search criteria. + +Get-WindowsUpdate -WindowsUpdate -UpdateType Driver -IsInstalled -ShowPreSearchCriteria -Verbose + +PreSearchCriteria: IsInstalled = 0 and Type = 'Driver' and IsHidden = 0 +VERBOSE: MG-PC: Connecting to Windows Update server.Please wait... +VERBOSE: Found[1] Updates in pre search criteria +VERBOSE: Found[1] Updates in post search criteria + +ComputerName Status KB Size Title +------------ ------ -- ---- ----- +MGAJDALAP3 -DI---- 3MB Intel - Other hardware - Intel(R) Watchdog Timer Driver (Intel(R) WDT) + + + ---------- EXAMPLE 3 ---------- + Get all available update on remote machine MG-PC, that contains in Title this two words 'Aktualizacja' and 'Windows 10' (as regular expression). + +Get-WindowsUpdate -ComputerName MG-PC -MicrosoftUpdate -Title "Aktualizacja.*Windows 10" -Verbose + +VERBOSE: MG-PC: Connecting to Microsoft Update server. Please wait... +VERBOSE: Found[14] Updates in pre search criteria +VERBOSE: Found[5] Updates in post search criteria + +ComputerName Status KB Size Title +------------ ------ -- ---- ----- +MG-PC ------- KB3150513 2MB 2017-06 Aktualizacja Windows 10 Version 1607 dla systemów opartych na archi... +MG-PC ------- KB4034658 1GB 2017-08 Aktualizacja zbiorcza dla systemu Windows 10 Version 1607 dla syste... +MG-PC ------- KB4034662 21MB 2017-08 Aktualizacja zabezpieczeń Adobe Flash Player w Windows 10 Version 1... +MG-PC ------- KB4035631 11MB 2017-08 Aktualizacja Windows 10 Version 1607 dla systemów opartych na archi... +MG-PC ------- KB4033637 4MB Aktualizacja systemu Windows 10 Version 1607 dla komputerów z procesorami x... + + + ---------- EXAMPLE 4 ---------- + Hide update with KBArticleID: KB4034658. + +Get-WindowsUpdate -KBArticleID KB4034658 -Hide -Verbose +or use alias +Hide-WindowsUpdate -KBArticleID KB4034658 -Verbose + +VERBOSE: MG-PC: Connecting to Windows Server Update Service server. Please wait... +VERBOSE: Found[4] Updates in pre search criteria +VERBOSE: Found[1] Updates in post search criteria + +Confirm +Are you sure you want to perform this action? +Performing the operation "Hide 2017-08 Aktualizacja zbiorcza dla systemu Windows 10 Version 1607 dla systemów opartych na architekturze x64 (KB4034658)[1GB]" on target "MG-PC". +[Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): Y + +ComputerName Status KB Size Title +------------ ------ -- ---- ----- +MG-PC ---H-- KB4034658 1GB 2017-08 Aktualizacja zbiorcza dla systemu Windows 10 Version 1607 dla syste... + + + ---------- EXAMPLE 5 ---------- + Unhide update with KBArticleID: KB4034658. + +Get-WindowsUpdate -KBArticleID KB4034658 -WithHidden -Hide:$false -Verbose +or use alias +Show-WindowsUpdate -KBArticleID KB4034658 -Verbose + +VERBOSE: MG-PC: Connecting to Windows Server Update Service server. Please wait... +VERBOSE: Found[4] Updates in pre search criteria +VERBOSE: Found[1] Updates in post search criteria + +Confirm +Are you sure you want to perform this action? +Performing the operation "Show 2017-08 Aktualizacja zbiorcza dla systemu Windows 10 Version 1607 dla systemów opartych na architekturze x64 (KB4034658)[1GB]" on target "MG-PC". +[Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): Y + +ComputerName Status KB Size Title +------------ ------ -- ---- ----- +MG-PC ------ KB4034658 1GB 2017-08 Aktualizacja zbiorcza dla systemu Windows 10 Version 1607 dla syste... + + + ---------- EXAMPLE 6 ---------- + Schedule job at 6:00 PM to install update with UpdateId='ddb74579-7a1f-4d1f-80c8-e8647055314e' and RevisionNumber=200. Update will be automaticaly accepted and after all serwer will be automaticaly restarted if needed. + +Get-WindowsUpdate -MicrosoftUpdate -UpdateID ddb74579-7a1f-4d1f-80c8-e8647055314e -RevisionNumber 200 -ScheduleJob (Get-Date -Hour 18 -Minute 0 -Second 0) -Install -AcceptAll -AutoReboot -Verbose +or use alias +Install-WindowsUpdate -MicrosoftUpdate -UpdateID ddb74579-7a1f-4d1f-80c8-e8647055314e -RevisionNumber 200 -ScheduleJob (Get-Date -Hour 18 -Minute 0 -Second 0) -AcceptAll -AutoReboot -Verbose + +VERBOSE: MG-PC: Connecting to Microsoft Update server. Please wait... +VERBOSE: Found[1] Updates in pre search criteria +VERBOSE: Found[1] Updates in post search criteria +VERBOSE: Choosed pre Search Criteria: (UpdateID = 'ddb74579-7a1f-4d1f-80c8-e8647055314e' and RevisionNumber = 200) + +X ComputerName Result KB Size Title +- ------------ ------ -- ---- ----- +1 MG-PC Accepted KB4023307 13MB Microsoft Silverlight(KB4023307) +VERBOSE: Accepted[1] Updates ready to Download +VERBOSE: Invoke-WUJob: MG-PC(31.08.2017 18:00:00): +VERBOSE: powershell.exe -Command "Get-WindowsUpdate -Criteria \"(UpdateID = 'ddb74579-7a1f-4d1f-80c8-e8647055314e' and RevisionNumber = 200)\" -AcceptAll -AutoReboot -Download -Install -MicrosoftUpdate -Verbose *>&1 | Out-File $Env:TEMP\PSWindowsUpdate.log" + + + ---------- EXAMPLE 7 ---------- + Install updates on remote computer. After all send a report from the installation process. + +Install-WindowsUpdate -ComputerName MG-PC -MicrosoftUpdate -AcceptAll -AutoReboot -SendReport -PSWUSettings @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";Port=25} -Verbose +or use global PSWUSettings +@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";Port=25} | Export-Clixml -Path 'C:\Program Files\WindowsPowerShell\Modules\PSWindowsUpdate\PSWUSettings.xml' +Install-WindowsUpdate -ComputerName MG-PC -MicrosoftUpdate -AcceptAll -AutoReboot -SendReport -Verbose + +VERBOSE: MG-PC: Connecting to Microsoft Update server. Please wait... +VERBOSE: Found[4] Updates in pre search criteria +VERBOSE: Found[4] Updates in post search criteria + +Confirm +Are you sure you want to perform this action? +Performing the operation "Microsoft Silverlight (KB4023307)[13MB]" on target "MG-PC". +[Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): Y + +Confirm +Are you sure you want to perform this action? +Performing the operation "2017-06 Aktualizacja Windows 10 Version 1607 dla systemów opartych na architekturze x64 (KB3150513)[2MB]" on target "MG-PC". +[Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): Y + +Confirm +Are you sure you want to perform this action? +Performing the operation "Aktualizacja pakietu językowego usługi Microsoft Dynamics 365 2.1[47MB]" on target "MG-PC". +[Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): L + +X ComputerName Result KB Size Title +- ------------ ------ -- ---- ----- +1 MG-PC Accepted KB4023307 13MB Microsoft Silverlight (KB4023307) +1 MG-PC Accepted KB3150513 2MB 2017-06 Aktualizacja Windows 10 Version 1607 dla systemów opartych na arc... +1 MG-PC Rejected KB4013759 47MB Aktualizacja pakietu językowego usługi Microsoft Dynamics 365 2.1 +1 MG-PC Rejected KB3186568 67MB Program Microsoft .NET Framework 4.7 w syst. Windows 10 Version 1607 i Wi... +VERBOSE: Accepted [2] +Updates ready to Download +VERBOSE: Invoke-WUJob: MG-PC (Now): +VERBOSE: powershell.exe -Command "Get-WindowsUpdate -Criteria \"(UpdateID = 'ddb74579-7a1f-4d1f-80c8-e8647055314e' and RevisionNumber = 200) or (UpdateID = '151c4402-513c-4f39-8da1-f84d0956b5e3' and RevisionNumber = 200)\" -AcceptAll -Download -Install -AutoReboot -MicrosoftUpdate -SendReport -ProofOfLife -Verbose *>&1 | Out-File $Env:TEMP\PSWindowsUpdate.log" + + + ---------- EXAMPLE 8 ---------- + Schedule Job to install all available updates and automatically reboot system if needed. Also send report after installation (but before reboot if needed) and send second instalation history report after reboot. + +Set-PSWUSettings -SmtpServer smtp.office365.com -SmtpPort 587 -SmtpEnableSsl $true -SmtpSubject "PSWindowsUpdate Report" -SmtpTo mgajda@psmvp.pl -SmtpFrom mgajda@psmvp.pl -SmtpCredential (Get-Credential mgajda@psmvp.pl) +Install-WindowsUpdate -MicrosoftUpdate -SendReport -SendHistory -AcceptAll -AutoReboot -ScheduleJob (Get-Date -Hour 18 -Minute 30 -Second 0) -ComputerName MG-PC -Verbose + +VERBOSE: MG-PC: Connecting to Microsoft Update server. Please wait... +VERBOSE: Found[4] Updates in pre search criteria +VERBOSE: Found[4] Updates in post search criteria + +X ComputerName Result KB Size Title +- ------------ ------ -- ---- ----- +1 MG-PC Accepted KB3038936 5MB Aktualizacja systemu Windows 8.1 dla komputerów z procesorami x64(KB3038... +1 MG-PC Accepted KB3186606 4MB Pakiety językowe programu Microsoft.NET Framework 4.7 w syst. Windows 8.... +1 MG-PC Accepted KB4035038 53MB Sierpień 2017: wersja zapozn. pak.zb.aktual.jakości dla pr. .NET Frame... +1 MG-PC Accepted KB2267602 309MB Aktualizacja definicji dla: Windows Defender — KB2267602 (Definicja 1.251... +VERBOSE: Accepted[4] Updates ready to Download +VERBOSE: Invoke-WUJob: MG-PC (02.09.2017 08:30:00): +VERBOSE: powershell.exe -Command "Get-WindowsUpdate -Criteria \"(UpdateID = 'e69c9679-7ce8-489a-a21c-62fb920be67a' and RevisionNumber = 201) or(UpdateID = 'de44604d-ec38-4a7f-ac63-28b3edfdb382' and RevisionNumber = 207) or(UpdateID = '9cf1d8c9-a7c3-4603-90e8-f22131ff6d7e' and RevisionNumber = 201) or(UpdateID = 'b51935f9-0e40-4624-9c26-b29bff92dcf9' and RevisionNumber = 200)\" -AcceptAll -Install -AutoReboot -MicrosoftUpdate -SendReport -SendHistory -Verbose *>&1 | Out-File $Env:TEMP\PSWindowsUpdate.log" +VERBOSE: Send report + + + + + Author Blog + https://commandlinegeeks.wordpress.com/ + + + + + + + Remove-WindowsUpdate + Remove + WindowsUpdate + + Uninstall update. + + + + Use Remove-WindowsUpdate to uninstall update. + + + + + Remove-WindowsUpdate + + + KBArticleID + + KBArticleID that will be uninstalled. + + string + + System.String + + + + + + AutoReboot + + Do not ask for reboot if it needed. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IgnoreReboot + + Do not ask for reboot if it needed, but do not reboot automaticaly. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ScheduleJob + + Specify schedule time job. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + ScheduleReboot + + Specify time when system will be rebooted. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + WUSAMode + + Wse wusa.exe instead of WU Api. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + Remove-WindowsUpdate + + + UpdateID + + Update ID that will be uninstalled. + + string + + System.String + + + + + + AutoReboot + + Do not ask for reboot if it needed. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IgnoreReboot + + Do not ask for reboot if it needed, but do not reboot automaticaly. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ScheduleJob + + Specify schedule time job. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + ScheduleReboot + + Specify time when system will be rebooted. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + WUSAMode + + Wse wusa.exe instead of WU Api. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + ScheduleJob + + Specify schedule time job. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + KBArticleID + + KBArticleID that will be uninstalled. + + string + + System.String + + + + + HotFixID + + KBArticleID that will be uninstalled. + This is an alias of the KBArticleID parameter. + + string + + System.String + + + + + + UpdateID + + Update ID that will be uninstalled. + + string + + System.String + + + + + + AutoReboot + + Do not ask for reboot if it needed. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IgnoreReboot + + Do not ask for reboot if it needed, but do not reboot automaticaly. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ScheduleReboot + + Specify time when system will be rebooted. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + WUSAMode + + Wse wusa.exe instead of WU Api. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + System.String[] + + + + Specify one or more computer names for remote connection. + + + + + + + ---------- EXAMPLE 1 ---------- + Try to uninstall update with specific KBArticleID = KB958830. + +Get-WUUninstall -KBArticleID KB958830 + + + + + Author Blog + https://commandlinegeeks.wordpress.com/ + + + + + + + Get-WindowsUpdate_v2 + Get + WindowsUpdate_v2 + + Get list of available updates meeting the criteria. + + + + Use Get-WindowsUpdate (aka Get-WUList) cmdlet to get list of available or installed updates meeting specific criteria. + Use Download-WindowsUpdate alias to get list of updates and download it. Equivalent Get-WindowsUpdate -Download. + Use Install-WindowsUpdate (aka Get-WUInstall) alias to get list of updates and install it. Equivalent Get-WindowsUpdate -Install. + Use Hide-WindowsUpdate alias to get list of updates and hide it. Equivalent Get-WindowsUpdate -Hide. + Use Show-WindowsUpdate (aka UnHide-WindowsUpdate) alias to get list of updates and unhide it. Equivalent Get-WindowsUpdate -Hide:$false. + There are two types of filtering update: Pre search criteria, Post search criteria. + - Pre search works on server side, like example: (IsInstalled = 0 and IsHidden = 0 and CategoryIds contains '0fa1201d-4330-4fa8-8ae9-b877473b6441' ) + - Post search work on client side after get the pre-filtered list of updates, like example $KBArticleID -match $Update.KBArticleIDs + Status info list:\r\n[A|R]DIMHUB\r\nA-IsAccetped\r\nR-IsRejected\r\n D-IsDownloaded\r\n F-DownloadFailed\r\n ?-IsInvoked\r\n I-IsInstalled\r\n F-InstallFailed\r\n ?-IsInvoked\r\n R-RebootRequired\r\n M-IsMandatory\r\n H-IsHidden\r\n U-IsUninstallable\r\n B-IsBeta + + + + + Get-WindowsUpdate_v2 + + + AcceptAll + + Do not ask confirmation for updates. Download or Install all available updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AutoReboot + + Do not ask for reboot if it needed. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AutoSelectOnly + + Install only the updates that have status AutoSelectOnWebsites on true. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AutoSelectOnWebSites + + Pre search criteria - native for WUAPI. Finds updates where the AutoSelectOnWebSites property has the specified value. + "AutoSelectOnWebSites=1" finds updates that are flagged to be automatically selected by Windows Update. + "AutoSelectOnWebSites=0" finds updates that are not flagged for Automatic Updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + BrowseOnly + + Pre search criteria - native for WUAPI. "BrowseOnly=1" finds updates that are considered optional. "BrowseOnly=0" finds updates that are not considered optional. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Category + + Post search criteria. Finds updates that contain a specified category name (or sets of categories name), such as 'Updates', 'Security Updates', 'Critical Updates', etc... + + string[] + + System.String[] + + + + + + CategoryIDs + + Pre search criteria - native for WUAPI. Finds updates that belong to a specified category (or sets of UUIDs), such as '0fa1201d-4330-4fa8-8ae9-b877473b6441'. + + string[] + + System.String[] + + + + + + ComputerName + + Specify one or more computer names for remote connection. Interactive remote connection works only for checking updates. For download or install cmdlet creates an Invoke-WUJob task. + + string[] + + System.String[] + + + + + + Criteria + + Pre search criteria - native for WUAPI. Set own string that specifies the search criteria. https://docs.microsoft.com/pl-pl/windows/desktop/api/wuapi/nf-wuapi-iupdatesearcher-search + + string + + System.String + + + + + + Debuger + + Debuger return original exceptions. For additional debug information use $DebugPreference = "Continue" + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + DeploymentAction + + Pre search criteria - native for WUAPI. Finds updates that are deployed for a specific action, such as an installation or uninstallation that the administrator of a server specifies. "DeploymentAction='Installation'" finds updates that are deployed for installation on a destination computer. "DeploymentAction='Uninstallation'" depends on the other query criteria. + "DeploymentAction='Uninstallation'" finds updates that are deployed for uninstallation on a destination computer. "DeploymentAction='Uninstallation'" depends on the other query criteria. + If this criterion is not explicitly specified, each group of criteria that is joined to an AND operator implies "DeploymentAction='Installation'". + + string + + System.String + + + + + + Download + + Get list of updates and download approved updates, but do not install it. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ForceDownload + + Forces the download of updates that are already installed or that cannot be installed. Works only with -Download. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ForceInstall + + A forced installation is an installation in which an update is installed even if the metadata indicates that the update is already installed. Before you use ForceInstall to force an installation, determine whether the update is installed and available. If an update is not installed, a forced installation fails. Works only with -Install. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Hide + + Get list of updates and hide/unhide approved updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IgnoreReboot + + Do not ask for reboot if it needed, but do not reboot automaticaly. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IgnoreRebootRequired + + Post search criteria. Finds updates that specifies the restart behavior that not occurs when you install or uninstall the update. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IgnoreUserInput + + Post search criteria. Finds updates that the installation or uninstallation of an update can't prompt for user input. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Install + + Get list of updates and install approved updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IsAssigned + + Pre search criteria - native for WUAPI. Finds updates that are intended for deployment by Automatic Updates. "IsAssigned=1" finds updates that are intended for deployment by Automatic Updates, which depends on the other query criteria.At most, one assigned Windows-based driver update is returned for each local device on a destination computer. + "IsAssigned=0" finds updates that are not intended to be deployed by Automatic Updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IsHidden + + Pre search criteria - native for WUAPI. Finds updates that are marked as hidden on the destination computer. Default search criteria is only not hidden upadates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IsInstalled + + Pre search criteria - native for WUAPI. Finds updates that are installed on the destination computer. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IsPresent + + Pre search criteria - native for WUAPI. When set to 1, finds updates that are present on a computer. + "IsPresent=1" finds updates that are present on a destination computer.If the update is valid for one or more products, the update is considered present if it is installed for one or more of the products. + "IsPresent=0" finds updates that are not installed for any product on a destination computer. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + KBArticleID + + Post search criteria. Finds updates that contain a KBArticleID (or sets of KBArticleIDs), such as 'KB982861'. + + string[] + + System.String[] + + + + + + MaxSize + + Post search criteria. Finds updates that have MaxDownloadSize less or equal. Size is in Bytes. + + long + + System.Int64 + + + 0 + + + + MinSize + + Post search criteria. Finds updates that have MaxDownloadSize greater or equal. Size is in Bytes. + + long + + System.Int64 + + + 0 + + + + NotCategory + + Post search criteria. Finds updates that not contain a specified category name (or sets of categories name), such as 'Updates', 'Security Updates', 'Critical Updates', etc... + + string[] + + System.String[] + + + + + + NotKBArticleID + + Post search criteria. Finds updates that not contain a KBArticleID (or sets of KBArticleIDs), such as 'KB982861'. + + string[] + + System.String[] + + + + + + NotSeverity + + Post search criteria. Finds updates that not match part of severity. + + string[] + + System.String[] + + + + + + NotTitle + + Post search criteria. Finds updates that not match part of title (case sensitive). + + string + + System.String + + + + + + NotUpdateID + + Pre search criteria - native for WUAPI. Finds updates without a specific UUID (or sets of UUIDs), such as '12345678-9abc-def0-1234-56789abcdef0'. + + string[] + + System.String[] + + + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + RecurseCycle + + Specify number of cycles for check updates after successful update installation or system startup. First run is always main cycle (-RecurseCycle 1 or none). Second (-RecurseCycle 2) and n (-RecurseCycle n) cycle are recursive. + + int + + System.Int32 + + + 0 + + + + RevisionNumber + + Pre search criteria - native for WUAPI. Finds updates with a specific RevisionNumber, such as '100'. This criterion must be combined with the UpdateID param. + + int + + System.Int32 + + + 0 + + + + ScheduleJob + + Specify time when job will start. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + ScheduleReboot + + Specify time when system will be rebooted. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + SendHistory + + Send install history (Get-WUHistory) report after successful update installation or system startup. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file (more preferred) in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ServiceID + + Use specific Service Manager if it's available. + Examples Of ServiceID: \r\n \r\n -- Windows Update 9482f4b4-e343-43b6-b170-9a65bc822c77 \r\n -- Microsoft Update 7971f918-a847-4430-9279-4a52d1efe18d \r\n -- Windows Store 117cab2d-82b1-4b5a-a08c-4d62dbee7782 \r\n -- Windows Server Update Service 3da21691-e39d-4da6-8a4b-b43877bcb1b7 + + string + + System.String + + + + + + Severity + + Post search criteria. Finds updates that match part of severity, such as 'Important', 'Critical', 'Moderate', etc... + + string[] + + System.String[] + + + + + + ShowPreSearchCriteria + + Show choosen search criteria. Only works for pre search criteria. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Title + + Post search criteria. Finds updates that match part of title (case sensitive), such as '.NET Framework 4'. + + string + + System.String + + + + + + UpdateID + + Pre search criteria - native for WUAPI. Finds updates with a specific UUID (or sets of UUIDs), such as '12345678-9abc-def0-1234-56789abcdef0'. + + string[] + + System.String[] + + + + + + UpdateType + + Pre search criteria - native for WUAPI. Finds updates with a specific type, such as 'Driver' and 'Software'. Default value contains all updates. + + string + + System.String + + + + + + WithHidden + + Pre search criteria - native for WUAPI. Finds updates that are both hidden and not on the destination computer. Overwrite IsHidden param. Default search criteria is only not hidden upadates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + Get-WindowsUpdate_v2 + + + AcceptAll + + Do not ask confirmation for updates. Download or Install all available updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AutoReboot + + Do not ask for reboot if it needed. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AutoSelectOnly + + Install only the updates that have status AutoSelectOnWebsites on true. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AutoSelectOnWebSites + + Pre search criteria - native for WUAPI. Finds updates where the AutoSelectOnWebSites property has the specified value. + "AutoSelectOnWebSites=1" finds updates that are flagged to be automatically selected by Windows Update. + "AutoSelectOnWebSites=0" finds updates that are not flagged for Automatic Updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + BrowseOnly + + Pre search criteria - native for WUAPI. "BrowseOnly=1" finds updates that are considered optional. "BrowseOnly=0" finds updates that are not considered optional. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Category + + Post search criteria. Finds updates that contain a specified category name (or sets of categories name), such as 'Updates', 'Security Updates', 'Critical Updates', etc... + + string[] + + System.String[] + + + + + + CategoryIDs + + Pre search criteria - native for WUAPI. Finds updates that belong to a specified category (or sets of UUIDs), such as '0fa1201d-4330-4fa8-8ae9-b877473b6441'. + + string[] + + System.String[] + + + + + + ComputerName + + Specify one or more computer names for remote connection. Interactive remote connection works only for checking updates. For download or install cmdlet creates an Invoke-WUJob task. + + string[] + + System.String[] + + + + + + Criteria + + Pre search criteria - native for WUAPI. Set own string that specifies the search criteria. https://docs.microsoft.com/pl-pl/windows/desktop/api/wuapi/nf-wuapi-iupdatesearcher-search + + string + + System.String + + + + + + Debuger + + Debuger return original exceptions. For additional debug information use $DebugPreference = "Continue" + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + DeploymentAction + + Pre search criteria - native for WUAPI. Finds updates that are deployed for a specific action, such as an installation or uninstallation that the administrator of a server specifies. "DeploymentAction='Installation'" finds updates that are deployed for installation on a destination computer. "DeploymentAction='Uninstallation'" depends on the other query criteria. + "DeploymentAction='Uninstallation'" finds updates that are deployed for uninstallation on a destination computer. "DeploymentAction='Uninstallation'" depends on the other query criteria. + If this criterion is not explicitly specified, each group of criteria that is joined to an AND operator implies "DeploymentAction='Installation'". + + string + + System.String + + + + + + Download + + Get list of updates and download approved updates, but do not install it. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ForceDownload + + Forces the download of updates that are already installed or that cannot be installed. Works only with -Download. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ForceInstall + + A forced installation is an installation in which an update is installed even if the metadata indicates that the update is already installed. Before you use ForceInstall to force an installation, determine whether the update is installed and available. If an update is not installed, a forced installation fails. Works only with -Install. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Hide + + Get list of updates and hide/unhide approved updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IgnoreReboot + + Do not ask for reboot if it needed, but do not reboot automaticaly. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IgnoreRebootRequired + + Post search criteria. Finds updates that specifies the restart behavior that not occurs when you install or uninstall the update. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IgnoreUserInput + + Post search criteria. Finds updates that the installation or uninstallation of an update can't prompt for user input. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Install + + Get list of updates and install approved updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IsAssigned + + Pre search criteria - native for WUAPI. Finds updates that are intended for deployment by Automatic Updates. "IsAssigned=1" finds updates that are intended for deployment by Automatic Updates, which depends on the other query criteria.At most, one assigned Windows-based driver update is returned for each local device on a destination computer. + "IsAssigned=0" finds updates that are not intended to be deployed by Automatic Updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IsHidden + + Pre search criteria - native for WUAPI. Finds updates that are marked as hidden on the destination computer. Default search criteria is only not hidden upadates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IsInstalled + + Pre search criteria - native for WUAPI. Finds updates that are installed on the destination computer. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IsPresent + + Pre search criteria - native for WUAPI. When set to 1, finds updates that are present on a computer. + "IsPresent=1" finds updates that are present on a destination computer.If the update is valid for one or more products, the update is considered present if it is installed for one or more of the products. + "IsPresent=0" finds updates that are not installed for any product on a destination computer. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + KBArticleID + + Post search criteria. Finds updates that contain a KBArticleID (or sets of KBArticleIDs), such as 'KB982861'. + + string[] + + System.String[] + + + + + + MaxSize + + Post search criteria. Finds updates that have MaxDownloadSize less or equal. Size is in Bytes. + + long + + System.Int64 + + + 0 + + + + MinSize + + Post search criteria. Finds updates that have MaxDownloadSize greater or equal. Size is in Bytes. + + long + + System.Int64 + + + 0 + + + + NotCategory + + Post search criteria. Finds updates that not contain a specified category name (or sets of categories name), such as 'Updates', 'Security Updates', 'Critical Updates', etc... + + string[] + + System.String[] + + + + + + NotKBArticleID + + Post search criteria. Finds updates that not contain a KBArticleID (or sets of KBArticleIDs), such as 'KB982861'. + + string[] + + System.String[] + + + + + + NotSeverity + + Post search criteria. Finds updates that not match part of severity. + + string[] + + System.String[] + + + + + + NotTitle + + Post search criteria. Finds updates that not match part of title (case sensitive). + + string + + System.String + + + + + + NotUpdateID + + Pre search criteria - native for WUAPI. Finds updates without a specific UUID (or sets of UUIDs), such as '12345678-9abc-def0-1234-56789abcdef0'. + + string[] + + System.String[] + + + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + RecurseCycle + + Specify number of cycles for check updates after successful update installation or system startup. First run is always main cycle (-RecurseCycle 1 or none). Second (-RecurseCycle 2) and n (-RecurseCycle n) cycle are recursive. + + int + + System.Int32 + + + 0 + + + + RevisionNumber + + Pre search criteria - native for WUAPI. Finds updates with a specific RevisionNumber, such as '100'. This criterion must be combined with the UpdateID param. + + int + + System.Int32 + + + 0 + + + + ScheduleJob + + Specify time when job will start. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + ScheduleReboot + + Specify time when system will be rebooted. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + SendHistory + + Send install history (Get-WUHistory) report after successful update installation or system startup. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file (more preferred) in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Severity + + Post search criteria. Finds updates that match part of severity, such as 'Important', 'Critical', 'Moderate', etc... + + string[] + + System.String[] + + + + + + ShowPreSearchCriteria + + Show choosen search criteria. Only works for pre search criteria. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Title + + Post search criteria. Finds updates that match part of title (case sensitive), such as '.NET Framework 4'. + + string + + System.String + + + + + + UpdateID + + Pre search criteria - native for WUAPI. Finds updates with a specific UUID (or sets of UUIDs), such as '12345678-9abc-def0-1234-56789abcdef0'. + + string[] + + System.String[] + + + + + + UpdateType + + Pre search criteria - native for WUAPI. Finds updates with a specific type, such as 'Driver' and 'Software'. Default value contains all updates. + + string + + System.String + + + + + + WindowsUpdate + + Use Microsoft Update Service Manager - '7971f918-a847-4430-9279-4a52d1efe18d' + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + WithHidden + + Pre search criteria - native for WUAPI. Finds updates that are both hidden and not on the destination computer. Overwrite IsHidden param. Default search criteria is only not hidden upadates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + Get-WindowsUpdate_v2 + + + AcceptAll + + Do not ask confirmation for updates. Download or Install all available updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AutoReboot + + Do not ask for reboot if it needed. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AutoSelectOnly + + Install only the updates that have status AutoSelectOnWebsites on true. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AutoSelectOnWebSites + + Pre search criteria - native for WUAPI. Finds updates where the AutoSelectOnWebSites property has the specified value. + "AutoSelectOnWebSites=1" finds updates that are flagged to be automatically selected by Windows Update. + "AutoSelectOnWebSites=0" finds updates that are not flagged for Automatic Updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + BrowseOnly + + Pre search criteria - native for WUAPI. "BrowseOnly=1" finds updates that are considered optional. "BrowseOnly=0" finds updates that are not considered optional. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Category + + Post search criteria. Finds updates that contain a specified category name (or sets of categories name), such as 'Updates', 'Security Updates', 'Critical Updates', etc... + + string[] + + System.String[] + + + + + + CategoryIDs + + Pre search criteria - native for WUAPI. Finds updates that belong to a specified category (or sets of UUIDs), such as '0fa1201d-4330-4fa8-8ae9-b877473b6441'. + + string[] + + System.String[] + + + + + + ComputerName + + Specify one or more computer names for remote connection. Interactive remote connection works only for checking updates. For download or install cmdlet creates an Invoke-WUJob task. + + string[] + + System.String[] + + + + + + Criteria + + Pre search criteria - native for WUAPI. Set own string that specifies the search criteria. https://docs.microsoft.com/pl-pl/windows/desktop/api/wuapi/nf-wuapi-iupdatesearcher-search + + string + + System.String + + + + + + Debuger + + Debuger return original exceptions. For additional debug information use $DebugPreference = "Continue" + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + DeploymentAction + + Pre search criteria - native for WUAPI. Finds updates that are deployed for a specific action, such as an installation or uninstallation that the administrator of a server specifies. "DeploymentAction='Installation'" finds updates that are deployed for installation on a destination computer. "DeploymentAction='Uninstallation'" depends on the other query criteria. + "DeploymentAction='Uninstallation'" finds updates that are deployed for uninstallation on a destination computer. "DeploymentAction='Uninstallation'" depends on the other query criteria. + If this criterion is not explicitly specified, each group of criteria that is joined to an AND operator implies "DeploymentAction='Installation'". + + string + + System.String + + + + + + Download + + Get list of updates and download approved updates, but do not install it. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ForceDownload + + Forces the download of updates that are already installed or that cannot be installed. Works only with -Download. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ForceInstall + + A forced installation is an installation in which an update is installed even if the metadata indicates that the update is already installed. Before you use ForceInstall to force an installation, determine whether the update is installed and available. If an update is not installed, a forced installation fails. Works only with -Install. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Hide + + Get list of updates and hide/unhide approved updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IgnoreReboot + + Do not ask for reboot if it needed, but do not reboot automaticaly. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IgnoreRebootRequired + + Post search criteria. Finds updates that specifies the restart behavior that not occurs when you install or uninstall the update. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IgnoreUserInput + + Post search criteria. Finds updates that the installation or uninstallation of an update can't prompt for user input. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Install + + Get list of updates and install approved updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IsAssigned + + Pre search criteria - native for WUAPI. Finds updates that are intended for deployment by Automatic Updates. "IsAssigned=1" finds updates that are intended for deployment by Automatic Updates, which depends on the other query criteria.At most, one assigned Windows-based driver update is returned for each local device on a destination computer. + "IsAssigned=0" finds updates that are not intended to be deployed by Automatic Updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IsHidden + + Pre search criteria - native for WUAPI. Finds updates that are marked as hidden on the destination computer. Default search criteria is only not hidden upadates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IsInstalled + + Pre search criteria - native for WUAPI. Finds updates that are installed on the destination computer. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IsPresent + + Pre search criteria - native for WUAPI. When set to 1, finds updates that are present on a computer. + "IsPresent=1" finds updates that are present on a destination computer.If the update is valid for one or more products, the update is considered present if it is installed for one or more of the products. + "IsPresent=0" finds updates that are not installed for any product on a destination computer. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + KBArticleID + + Post search criteria. Finds updates that contain a KBArticleID (or sets of KBArticleIDs), such as 'KB982861'. + + string[] + + System.String[] + + + + + + MaxSize + + Post search criteria. Finds updates that have MaxDownloadSize less or equal. Size is in Bytes. + + long + + System.Int64 + + + 0 + + + + MicrosoftUpdate + + Use Windows Update Service Manager - '9482f4b4-e343-43b6-b170-9a65bc822c77' + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + MinSize + + Post search criteria. Finds updates that have MaxDownloadSize greater or equal. Size is in Bytes. + + long + + System.Int64 + + + 0 + + + + NotCategory + + Post search criteria. Finds updates that not contain a specified category name (or sets of categories name), such as 'Updates', 'Security Updates', 'Critical Updates', etc... + + string[] + + System.String[] + + + + + + NotKBArticleID + + Post search criteria. Finds updates that not contain a KBArticleID (or sets of KBArticleIDs), such as 'KB982861'. + + string[] + + System.String[] + + + + + + NotSeverity + + Post search criteria. Finds updates that not match part of severity. + + string[] + + System.String[] + + + + + + NotTitle + + Post search criteria. Finds updates that not match part of title (case sensitive). + + string + + System.String + + + + + + NotUpdateID + + Pre search criteria - native for WUAPI. Finds updates without a specific UUID (or sets of UUIDs), such as '12345678-9abc-def0-1234-56789abcdef0'. + + string[] + + System.String[] + + + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + RecurseCycle + + Specify number of cycles for check updates after successful update installation or system startup. First run is always main cycle (-RecurseCycle 1 or none). Second (-RecurseCycle 2) and n (-RecurseCycle n) cycle are recursive. + + int + + System.Int32 + + + 0 + + + + RevisionNumber + + Pre search criteria - native for WUAPI. Finds updates with a specific RevisionNumber, such as '100'. This criterion must be combined with the UpdateID param. + + int + + System.Int32 + + + 0 + + + + ScheduleJob + + Specify time when job will start. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + ScheduleReboot + + Specify time when system will be rebooted. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + SendHistory + + Send install history (Get-WUHistory) report after successful update installation or system startup. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file (more preferred) in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Severity + + Post search criteria. Finds updates that match part of severity, such as 'Important', 'Critical', 'Moderate', etc... + + string[] + + System.String[] + + + + + + ShowPreSearchCriteria + + Show choosen search criteria. Only works for pre search criteria. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Title + + Post search criteria. Finds updates that match part of title (case sensitive), such as '.NET Framework 4'. + + string + + System.String + + + + + + UpdateID + + Pre search criteria - native for WUAPI. Finds updates with a specific UUID (or sets of UUIDs), such as '12345678-9abc-def0-1234-56789abcdef0'. + + string[] + + System.String[] + + + + + + UpdateType + + Pre search criteria - native for WUAPI. Finds updates with a specific type, such as 'Driver' and 'Software'. Default value contains all updates. + + string + + System.String + + + + + + WithHidden + + Pre search criteria - native for WUAPI. Finds updates that are both hidden and not on the destination computer. Overwrite IsHidden param. Default search criteria is only not hidden upadates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + + ComputerName + + Specify one or more computer names for remote connection. Interactive remote connection works only for checking updates. For download or install cmdlet creates an Invoke-WUJob task. + + string[] + + System.String[] + + + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file (more preferred) in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + SendHistory + + Send install history (Get-WUHistory) report after successful update installation or system startup. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ScheduleJob + + Specify time when job will start. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + AcceptAll + + Do not ask confirmation for updates. Download or Install all available updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + RecurseCycle + + Specify number of cycles for check updates after successful update installation or system startup. First run is always main cycle (-RecurseCycle 1 or none). Second (-RecurseCycle 2) and n (-RecurseCycle n) cycle are recursive. + + int + + System.Int32 + + + 0 + + + + Hide + + Get list of updates and hide/unhide approved updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Download + + Get list of updates and download approved updates, but do not install it. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ForceDownload + + Forces the download of updates that are already installed or that cannot be installed. Works only with -Download. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Install + + Get list of updates and install approved updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ForceInstall + + A forced installation is an installation in which an update is installed even if the metadata indicates that the update is already installed. Before you use ForceInstall to force an installation, determine whether the update is installed and available. If an update is not installed, a forced installation fails. Works only with -Install. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AutoReboot + + Do not ask for reboot if it needed. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IgnoreReboot + + Do not ask for reboot if it needed, but do not reboot automaticaly. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ScheduleReboot + + Specify time when system will be rebooted. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + ServiceID + + Use specific Service Manager if it's available. + Examples Of ServiceID: \r\n \r\n -- Windows Update 9482f4b4-e343-43b6-b170-9a65bc822c77 \r\n -- Microsoft Update 7971f918-a847-4430-9279-4a52d1efe18d \r\n -- Windows Store 117cab2d-82b1-4b5a-a08c-4d62dbee7782 \r\n -- Windows Server Update Service 3da21691-e39d-4da6-8a4b-b43877bcb1b7 + + string + + System.String + + + + + + WindowsUpdate + + Use Microsoft Update Service Manager - '7971f918-a847-4430-9279-4a52d1efe18d' + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + MicrosoftUpdate + + Use Windows Update Service Manager - '9482f4b4-e343-43b6-b170-9a65bc822c77' + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Criteria + + Pre search criteria - native for WUAPI. Set own string that specifies the search criteria. https://docs.microsoft.com/pl-pl/windows/desktop/api/wuapi/nf-wuapi-iupdatesearcher-search + + string + + System.String + + + + + + UpdateType + + Pre search criteria - native for WUAPI. Finds updates with a specific type, such as 'Driver' and 'Software'. Default value contains all updates. + + string + + System.String + + + + + + DeploymentAction + + Pre search criteria - native for WUAPI. Finds updates that are deployed for a specific action, such as an installation or uninstallation that the administrator of a server specifies. "DeploymentAction='Installation'" finds updates that are deployed for installation on a destination computer. "DeploymentAction='Uninstallation'" depends on the other query criteria. + "DeploymentAction='Uninstallation'" finds updates that are deployed for uninstallation on a destination computer. "DeploymentAction='Uninstallation'" depends on the other query criteria. + If this criterion is not explicitly specified, each group of criteria that is joined to an AND operator implies "DeploymentAction='Installation'". + + string + + System.String + + + + + + IsAssigned + + Pre search criteria - native for WUAPI. Finds updates that are intended for deployment by Automatic Updates. "IsAssigned=1" finds updates that are intended for deployment by Automatic Updates, which depends on the other query criteria.At most, one assigned Windows-based driver update is returned for each local device on a destination computer. + "IsAssigned=0" finds updates that are not intended to be deployed by Automatic Updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IsPresent + + Pre search criteria - native for WUAPI. When set to 1, finds updates that are present on a computer. + "IsPresent=1" finds updates that are present on a destination computer.If the update is valid for one or more products, the update is considered present if it is installed for one or more of the products. + "IsPresent=0" finds updates that are not installed for any product on a destination computer. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + BrowseOnly + + Pre search criteria - native for WUAPI. "BrowseOnly=1" finds updates that are considered optional. "BrowseOnly=0" finds updates that are not considered optional. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AutoSelectOnWebSites + + Pre search criteria - native for WUAPI. Finds updates where the AutoSelectOnWebSites property has the specified value. + "AutoSelectOnWebSites=1" finds updates that are flagged to be automatically selected by Windows Update. + "AutoSelectOnWebSites=0" finds updates that are not flagged for Automatic Updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + UpdateID + + Pre search criteria - native for WUAPI. Finds updates with a specific UUID (or sets of UUIDs), such as '12345678-9abc-def0-1234-56789abcdef0'. + + string[] + + System.String[] + + + + + + NotUpdateID + + Pre search criteria - native for WUAPI. Finds updates without a specific UUID (or sets of UUIDs), such as '12345678-9abc-def0-1234-56789abcdef0'. + + string[] + + System.String[] + + + + + + RevisionNumber + + Pre search criteria - native for WUAPI. Finds updates with a specific RevisionNumber, such as '100'. This criterion must be combined with the UpdateID param. + + int + + System.Int32 + + + 0 + + + + CategoryIDs + + Pre search criteria - native for WUAPI. Finds updates that belong to a specified category (or sets of UUIDs), such as '0fa1201d-4330-4fa8-8ae9-b877473b6441'. + + string[] + + System.String[] + + + + + + IsInstalled + + Pre search criteria - native for WUAPI. Finds updates that are installed on the destination computer. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IsHidden + + Pre search criteria - native for WUAPI. Finds updates that are marked as hidden on the destination computer. Default search criteria is only not hidden upadates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + WithHidden + + Pre search criteria - native for WUAPI. Finds updates that are both hidden and not on the destination computer. Overwrite IsHidden param. Default search criteria is only not hidden upadates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ShowPreSearchCriteria + + Show choosen search criteria. Only works for pre search criteria. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Category + + Post search criteria. Finds updates that contain a specified category name (or sets of categories name), such as 'Updates', 'Security Updates', 'Critical Updates', etc... + + string[] + + System.String[] + + + + + + KBArticleID + + Post search criteria. Finds updates that contain a KBArticleID (or sets of KBArticleIDs), such as 'KB982861'. + + string[] + + System.String[] + + + + + + Title + + Post search criteria. Finds updates that match part of title (case sensitive), such as '.NET Framework 4'. + + string + + System.String + + + + + + Severity + + Post search criteria. Finds updates that match part of severity, such as 'Important', 'Critical', 'Moderate', etc... + + string[] + + System.String[] + + + + + + NotCategory + + Post search criteria. Finds updates that not contain a specified category name (or sets of categories name), such as 'Updates', 'Security Updates', 'Critical Updates', etc... + + string[] + + System.String[] + + + + + + NotKBArticleID + + Post search criteria. Finds updates that not contain a KBArticleID (or sets of KBArticleIDs), such as 'KB982861'. + + string[] + + System.String[] + + + + + + NotTitle + + Post search criteria. Finds updates that not match part of title (case sensitive). + + string + + System.String + + + + + + NotSeverity + + Post search criteria. Finds updates that not match part of severity. + + string[] + + System.String[] + + + + + + IgnoreUserInput + + Post search criteria. Finds updates that the installation or uninstallation of an update can't prompt for user input. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + Silent + + Post search criteria. Finds updates that the installation or uninstallation of an update can't prompt for user input. + This is an alias of the IgnoreUserInput parameter. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IgnoreRebootRequired + + Post search criteria. Finds updates that specifies the restart behavior that not occurs when you install or uninstall the update. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AutoSelectOnly + + Install only the updates that have status AutoSelectOnWebsites on true. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + MaxSize + + Post search criteria. Finds updates that have MaxDownloadSize less or equal. Size is in Bytes. + + long + + System.Int64 + + + 0 + + + + MinSize + + Post search criteria. Finds updates that have MaxDownloadSize greater or equal. Size is in Bytes. + + long + + System.Int64 + + + 0 + + + + Debuger + + Debuger return original exceptions. For additional debug information use $DebugPreference = "Continue" + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + System.String[] + + + + Specify one or more computer names for remote connection. Interactive remote connection works only for checking updates. For download or install cmdlet creates an Invoke-WUJob task. + + + + + + + + PSWindowsUpdate.WindowsUpdate + + + + OutputType for WindowsUpdate objects. + + + + + + ---------- EXAMPLE 1 ---------- + Get windows updates available from default service manager. + +Get-WindowsUpdate -Verbose + +VERBOSE: MG-PC: Connecting to Windows Server Update Service server. Please wait... +VERBOSE: Found[4] Updates in pre search criteria +VERBOSE: Found[4] Updates in post search criteria + +ComputerName Status KB Size Title +------------ ------ -- ---- ----- +MG-PC ------- KB890830 44MB Narzędzie Windows do usuwania złośliwego oprogramowania dla systemów Window... +MG-PC ------- KB4034658 1GB 2017-08 Aktualizacja zbiorcza dla systemu Windows 10 Version 1607 dla syste... +MG-PC ------- KB4034662 21MB 2017-08 Aktualizacja zabezpieczeń Adobe Flash Player w Windows 10 Version 1... +MG-PC ------- KB4035631 11MB 2017-08 Aktualizacja Windows 10 Version 1607 dla systemów opartych na archi... + + + ---------- EXAMPLE 2 ---------- + Get all installed drivers that are available at Windows Update. Additionaly show pre search criteria. + +Get-WindowsUpdate -WindowsUpdate -UpdateType Driver -IsInstalled -ShowPreSearchCriteria -Verbose + +PreSearchCriteria: IsInstalled = 0 and Type = 'Driver' and IsHidden = 0 +VERBOSE: MG-PC: Connecting to Windows Update server.Please wait... +VERBOSE: Found[1] Updates in pre search criteria +VERBOSE: Found[1] Updates in post search criteria + +ComputerName Status KB Size Title +------------ ------ -- ---- ----- +MGAJDALAP3 -DI---- 3MB Intel - Other hardware - Intel(R) Watchdog Timer Driver (Intel(R) WDT) + + + ---------- EXAMPLE 3 ---------- + Get all available update on remote machine MG-PC, that contains in Title this two words 'Aktualizacja' and 'Windows 10' (as regular expression). + +Get-WindowsUpdate -ComputerName MG-PC -MicrosoftUpdate -Title "Aktualizacja.*Windows 10" -Verbose + +VERBOSE: MG-PC: Connecting to Microsoft Update server. Please wait... +VERBOSE: Found[14] Updates in pre search criteria +VERBOSE: Found[5] Updates in post search criteria + +ComputerName Status KB Size Title +------------ ------ -- ---- ----- +MG-PC ------- KB3150513 2MB 2017-06 Aktualizacja Windows 10 Version 1607 dla systemów opartych na archi... +MG-PC ------- KB4034658 1GB 2017-08 Aktualizacja zbiorcza dla systemu Windows 10 Version 1607 dla syste... +MG-PC ------- KB4034662 21MB 2017-08 Aktualizacja zabezpieczeń Adobe Flash Player w Windows 10 Version 1... +MG-PC ------- KB4035631 11MB 2017-08 Aktualizacja Windows 10 Version 1607 dla systemów opartych na archi... +MG-PC ------- KB4033637 4MB Aktualizacja systemu Windows 10 Version 1607 dla komputerów z procesorami x... + + + ---------- EXAMPLE 4 ---------- + Hide update with KBArticleID: KB4034658. + +Get-WindowsUpdate -KBArticleID KB4034658 -Hide -Verbose +or use alias +Hide-WindowsUpdate -KBArticleID KB4034658 -Verbose + +VERBOSE: MG-PC: Connecting to Windows Server Update Service server. Please wait... +VERBOSE: Found[4] Updates in pre search criteria +VERBOSE: Found[1] Updates in post search criteria + +Confirm +Are you sure you want to perform this action? +Performing the operation "Hide 2017-08 Aktualizacja zbiorcza dla systemu Windows 10 Version 1607 dla systemów opartych na architekturze x64 (KB4034658)[1GB]" on target "MG-PC". +[Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): Y + +ComputerName Status KB Size Title +------------ ------ -- ---- ----- +MG-PC ---H-- KB4034658 1GB 2017-08 Aktualizacja zbiorcza dla systemu Windows 10 Version 1607 dla syste... + + + ---------- EXAMPLE 5 ---------- + Unhide update with KBArticleID: KB4034658. + +Get-WindowsUpdate -KBArticleID KB4034658 -WithHidden -Hide:$false -Verbose +or use alias +Show-WindowsUpdate -KBArticleID KB4034658 -Verbose + +VERBOSE: MG-PC: Connecting to Windows Server Update Service server. Please wait... +VERBOSE: Found[4] Updates in pre search criteria +VERBOSE: Found[1] Updates in post search criteria + +Confirm +Are you sure you want to perform this action? +Performing the operation "Show 2017-08 Aktualizacja zbiorcza dla systemu Windows 10 Version 1607 dla systemów opartych na architekturze x64 (KB4034658)[1GB]" on target "MG-PC". +[Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): Y + +ComputerName Status KB Size Title +------------ ------ -- ---- ----- +MG-PC ------ KB4034658 1GB 2017-08 Aktualizacja zbiorcza dla systemu Windows 10 Version 1607 dla syste... + + + ---------- EXAMPLE 6 ---------- + Schedule job at 6:00 PM to install update with UpdateId='ddb74579-7a1f-4d1f-80c8-e8647055314e' and RevisionNumber=200. Update will be automaticaly accepted and after all serwer will be automaticaly restarted if needed. + +Get-WindowsUpdate -MicrosoftUpdate -UpdateID ddb74579-7a1f-4d1f-80c8-e8647055314e -RevisionNumber 200 -ScheduleJob (Get-Date -Hour 18 -Minute 0 -Second 0) -Install -AcceptAll -AutoReboot -Verbose +or use alias +Install-WindowsUpdate -MicrosoftUpdate -UpdateID ddb74579-7a1f-4d1f-80c8-e8647055314e -RevisionNumber 200 -ScheduleJob (Get-Date -Hour 18 -Minute 0 -Second 0) -AcceptAll -AutoReboot -Verbose + +VERBOSE: MG-PC: Connecting to Microsoft Update server. Please wait... +VERBOSE: Found[1] Updates in pre search criteria +VERBOSE: Found[1] Updates in post search criteria +VERBOSE: Choosed pre Search Criteria: (UpdateID = 'ddb74579-7a1f-4d1f-80c8-e8647055314e' and RevisionNumber = 200) + +X ComputerName Result KB Size Title +- ------------ ------ -- ---- ----- +1 MG-PC Accepted KB4023307 13MB Microsoft Silverlight(KB4023307) +VERBOSE: Accepted[1] Updates ready to Download +VERBOSE: Invoke-WUJob: MG-PC(31.08.2017 18:00:00): +VERBOSE: powershell.exe -Command "Get-WindowsUpdate -Criteria \"(UpdateID = 'ddb74579-7a1f-4d1f-80c8-e8647055314e' and RevisionNumber = 200)\" -AcceptAll -AutoReboot -Download -Install -MicrosoftUpdate -Verbose *>&1 | Out-File $Env:TEMP\PSWindowsUpdate.log" + + + ---------- EXAMPLE 7 ---------- + Install updates on remote computer. After all send a report from the installation process. + +Install-WindowsUpdate -ComputerName MG-PC -MicrosoftUpdate -AcceptAll -AutoReboot -SendReport -PSWUSettings @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";Port=25} -Verbose +or use global PSWUSettings +@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";Port=25} | Export-Clixml -Path 'C:\Program Files\WindowsPowerShell\Modules\PSWindowsUpdate\PSWUSettings.xml' +Install-WindowsUpdate -ComputerName MG-PC -MicrosoftUpdate -AcceptAll -AutoReboot -SendReport -Verbose + +VERBOSE: MG-PC: Connecting to Microsoft Update server. Please wait... +VERBOSE: Found[4] Updates in pre search criteria +VERBOSE: Found[4] Updates in post search criteria + +Confirm +Are you sure you want to perform this action? +Performing the operation "Microsoft Silverlight (KB4023307)[13MB]" on target "MG-PC". +[Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): Y + +Confirm +Are you sure you want to perform this action? +Performing the operation "2017-06 Aktualizacja Windows 10 Version 1607 dla systemów opartych na architekturze x64 (KB3150513)[2MB]" on target "MG-PC". +[Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): Y + +Confirm +Are you sure you want to perform this action? +Performing the operation "Aktualizacja pakietu językowego usługi Microsoft Dynamics 365 2.1[47MB]" on target "MG-PC". +[Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): L + +X ComputerName Result KB Size Title +- ------------ ------ -- ---- ----- +1 MG-PC Accepted KB4023307 13MB Microsoft Silverlight (KB4023307) +1 MG-PC Accepted KB3150513 2MB 2017-06 Aktualizacja Windows 10 Version 1607 dla systemów opartych na arc... +1 MG-PC Rejected KB4013759 47MB Aktualizacja pakietu językowego usługi Microsoft Dynamics 365 2.1 +1 MG-PC Rejected KB3186568 67MB Program Microsoft .NET Framework 4.7 w syst. Windows 10 Version 1607 i Wi... +VERBOSE: Accepted [2] +Updates ready to Download +VERBOSE: Invoke-WUJob: MG-PC (Now): +VERBOSE: powershell.exe -Command "Get-WindowsUpdate -Criteria \"(UpdateID = 'ddb74579-7a1f-4d1f-80c8-e8647055314e' and RevisionNumber = 200) or (UpdateID = '151c4402-513c-4f39-8da1-f84d0956b5e3' and RevisionNumber = 200)\" -AcceptAll -Download -Install -AutoReboot -MicrosoftUpdate -SendReport -ProofOfLife -Verbose *>&1 | Out-File $Env:TEMP\PSWindowsUpdate.log" + + + ---------- EXAMPLE 8 ---------- + Schedule Job to install all available updates and automatically reboot system if needed. Also send report after installation (but before reboot if needed) and send second instalation history report after reboot. + +@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";Port=25} | Export-Clixml -Path 'C:\Program Files\WindowsPowerShell\Modules\PSWindowsUpdate\PSWUSettings.xml' +Install-WindowsUpdate -MicrosoftUpdate -SendReport -SendHistory -AcceptAll -AutoReboot -ScheduleJob (Get-Date -Hour 18 -Minute 30 -Second 0) -ComputerName MG-PC -Verbose + +VERBOSE: MG-PC: Connecting to Microsoft Update server. Please wait... +VERBOSE: Found[4] Updates in pre search criteria +VERBOSE: Found[4] Updates in post search criteria + +X ComputerName Result KB Size Title +- ------------ ------ -- ---- ----- +1 MG-PC Accepted KB3038936 5MB Aktualizacja systemu Windows 8.1 dla komputerów z procesorami x64(KB3038... +1 MG-PC Accepted KB3186606 4MB Pakiety językowe programu Microsoft.NET Framework 4.7 w syst. Windows 8.... +1 MG-PC Accepted KB4035038 53MB Sierpień 2017: wersja zapozn. pak.zb.aktual.jakości dla pr. .NET Frame... +1 MG-PC Accepted KB2267602 309MB Aktualizacja definicji dla: Windows Defender — KB2267602 (Definicja 1.251... +VERBOSE: Accepted[4] Updates ready to Download +VERBOSE: Invoke-WUJob: MG-PC (02.09.2017 08:30:00): +VERBOSE: powershell.exe -Command "Get-WindowsUpdate -Criteria \"(UpdateID = 'e69c9679-7ce8-489a-a21c-62fb920be67a' and RevisionNumber = 201) or(UpdateID = 'de44604d-ec38-4a7f-ac63-28b3edfdb382' and RevisionNumber = 207) or(UpdateID = '9cf1d8c9-a7c3-4603-90e8-f22131ff6d7e' and RevisionNumber = 201) or(UpdateID = 'b51935f9-0e40-4624-9c26-b29bff92dcf9' and RevisionNumber = 200)\" -AcceptAll -Install -AutoReboot -MicrosoftUpdate -SendReport -SendHistory -Verbose *>&1 | Out-File $Env:TEMP\PSWindowsUpdate.log" +VERBOSE: Send report + + + + + Author Blog + https://commandlinegeeks.wordpress.com/ + + + + + + + Get-WUApiVersion + Get + WUApiVersion + + Get Windows Update Agent version. + + + + Use Get-WUAPIVersion cmdlet to get Windows Update Agent version. + + + + + Get-WUApiVersion + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + System.String[] + + + + Specify one or more computer names for remote connection. + + + + + + + + PSWindowsUpdate.AgentInfo + + + + OutputType for AgentInfo objects. + + + + + + ---------- EXAMPLE 1 ---------- + Get Windows Update Agent version. + +Get-WUAPIVersion + +ComputerName PSWindowsUpdate ApiVersion WuapiDllVersion +------------ --------------- ---------- --------------- +MG-PC 2.0 8.0 10.0.14393.1670 + + + + + Author Blog + https://commandlinegeeks.wordpress.com/ + + + + + + + Reset-WUComponents + Reset + WUComponents + + Reset Windows Update components. + + + + Use Reset-WUComponents cmdlet to reset all Windows Update components to default. + + + + + Reset-WUComponents + + + + + + + + ---------- EXAMPLE 1 ---------- + Reset Windows Update components to default. + + Reset-WUComponents -Verbose + Step 1: Stop Windows Update services +VERBOSE: Background Intelligent Transfer Service(BITS) +VERBOSE: Windows Update(wuauserv) +VERBOSE: Application Identity(appidsvc) +VERBOSE: Cryptographic Services(cryptsvc) +Step 2: Delete the qmgr*.dat files +Step 3: Backup softare distribution folders +VERBOSE: Renaming Software Distribution folder to C:\WINDOWS\SoftwareDistribution.bak5 +VERBOSE: Renaming CatRoot folder to C:\WINDOWS\System32\Catroot2.bak1 +Step 4: Remove old Windows Update logs +VERBOSE: Deleting the C:\WINDOWS\WindowsUpdate.log files. +Step 5: Reset Windows Update services +VERBOSE: Reset BITS service +VERBOSE: Reset Windows Update service +Step 6: Reregister dll's +VERBOSE: regsvr32.exe / s atl.dll +VERBOSE: regsvr32.exe / s urlmon.dll +VERBOSE: regsvr32.exe / s mshtml.dll +VERBOSE: regsvr32.exe / s shdocvw.dll +VERBOSE: regsvr32.exe / s browseui.dll +VERBOSE: regsvr32.exe / s jscript.dll +VERBOSE: regsvr32.exe / s vbscript.dll +VERBOSE: regsvr32.exe / s scrrun.dll +VERBOSE: regsvr32.exe / s msxml.dll +VERBOSE: regsvr32.exe / s msxml3.dll +VERBOSE: regsvr32.exe / s msxml6.dll +VERBOSE: regsvr32.exe / s actxprxy.dll +VERBOSE: regsvr32.exe / s softpub.dll +VERBOSE: regsvr32.exe / s wintrust.dll +VERBOSE: regsvr32.exe / s dssenh.dll +VERBOSE: regsvr32.exe / s rsaenh.dll +VERBOSE: regsvr32.exe / s gpkcsp.dll +VERBOSE: regsvr32.exe / s sccbase.dll +VERBOSE: regsvr32.exe / s slbcsp.dll +VERBOSE: regsvr32.exe / s cryptdlg.dll +VERBOSE: regsvr32.exe / s oleaut32.dll +VERBOSE: regsvr32.exe / s ole32.dll +VERBOSE: regsvr32.exe / s shell32.dll +VERBOSE: regsvr32.exe / s initpki.dll +VERBOSE: regsvr32.exe / s wuapi.dll +VERBOSE: regsvr32.exe / s wuaueng.dll +VERBOSE: regsvr32.exe / s wuaueng1.dll +VERBOSE: regsvr32.exe / s wucltui.dll +VERBOSE: regsvr32.exe / s wups.dll +VERBOSE: regsvr32.exe / s wups2.dll +VERBOSE: regsvr32.exe / s wuweb.dll +VERBOSE: regsvr32.exe / s qmgr.dll +VERBOSE: regsvr32.exe / s qmgrprxy.dll +VERBOSE: regsvr32.exe / s wucltux.dll +VERBOSE: regsvr32.exe / s muweb.dll +VERBOSE: regsvr32.exe / s wuwebv.dll +Step 7: Reset WinSock +VERBOSE: netsh winsock reset +Step 8: Reset Proxy +VERBOSE: netsh winhttp reset proxy +Step 9: Start Windows Update services +VERBOSE: Cryptographic Services (cryptsvc) +VERBOSE: Application Identity (appidsvc) +VERBOSE: Windows Update (wuauserv) +VERBOSE: Background Intelligent Transfer Service (BITS) +Step 10: Start Windows Update services +VERBOSE: wuauclt /resetauthorization /detectnow + + + + + Author Blog + https://commandlinegeeks.wordpress.com/ + + + + + + + Get-WUHistory + Get + WUHistory + + Get list of updates history. + + + + Use function Get-WUHistory to get list of installed updates on specific machine. + + + + + Get-WUHistory + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Last + + Last X history entry. + + int + + System.Int32 + + + 0 + + + + MaxDate + + Filter results by date. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: Export-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: Export-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + MaxDate + + Filter results by date. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + Last + + Last X history entry. + + int + + System.Int32 + + + 0 + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + System.String[] + + + + Specify one or more computer names for remote connection. + + + + + + + + PSWindowsUpdate.History + + + + OutputType for History objects. + + + + + + ---------- EXAMPLE 1 ---------- + Get Windows Update history. + +Get-WUHistory + +ComputerName Operationname Date KB Title +------------ ------------- ---- -- ----- +MG-PC Installation 30.08.2017 12:03:53 KB2267602 Definition Update for Windows Defender - KB2267602(Defini... +MG-PC Installation 29.08.2017 11:49:50 KB3186568 Microsoft .NET Framework 4.7 for Windows 10 Version 1607 a... +MG-PC Installation 29.08.2017 11:30:37 KB4035631 2017-08 Update for Windows Server 2016 for x64-based Syste... +MG-PC Installation 29.08.2017 11:21:12 KB890830 Windows Malicious Software Removal Tool for Windows 8, 8.1... +MG-PC Installation 29.08.2017 07:53:36 KB2267602 Definition Update for Windows Defender - KB2267602 (Defini... +MG-PC Installation 27.08.2017 07:53:39 KB2267602 Definition Update for Windows Defender - KB2267602 (Defini... +MG-PC Installation 25.08.2017 07:54:38 KB2267602 Definition Update for Windows Defender - KB2267602 (Defini... +MG-PC Installation 23.08.2017 13:01:26 KB2267602 Definition Update for Windows Defender - KB2267602 (Defini... +MG-PC Installation 23.08.2017 12:45:45 KB4023307 Security Update for Microsoft Silverlight (KB4023307) +MG-PC Installation 23.08.2017 07:53:56 KB2267602 Definition Update for Windows Defender - KB2267602 (Defini... + + + ---------- EXAMPLE 2 ---------- + Get Windows Update Agent history for last 24h. + +Get-WUHistory -MaxDate (Get-Date).AddDays(-1) + +ComputerName Operationname Date KB Title +------------ ------------- ---- -- ----- +MG-PC Installation 30.08.2017 12:03:53 KB2267602 Definition Update for Windows Defender - KB2267602(Defini... + + + + + Author Blog + https://commandlinegeeks.wordpress.com/ + + + + + + + Get-WUInstallerStatus + Get + WUInstallerStatus + + Get Windows Update Installer status. + + + + Use Get-WUInstallerStatus cmdlet to show Windows Update Installer status. + + + + + Get-WUInstallerStatus + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Silent + + Return true/false only. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + Silent + + Return true/false only. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + + + PSWindowsUpdate.InstallerStatus + + + + OutputType for InstallerStatus objects. + + + + + + ---------- EXAMPLE 1 ---------- + Check if Windows Update Installer is busy. + +Get-WUInstallerStatus + +ComputerName IsBusy +------------ ------ +MG-PC False + + + ---------- EXAMPLE 2 ---------- + Check if Windows Update Installer is busy in silent mode. Return only True (isBusy) or False (isFree). + +Get-WUInstallerStatus -Silent + +False + + + + + Author Blog + https://commandlinegeeks.wordpress.com/ + + + + + + + Get-WUJob + Get + WUJob + + Get invoked WUJob. + + + + Use Get-WUJob cmdlet to get invoked WUJob in Task Scheduler. + + + + + Get-WUJob + + + ClearExpired + + Clear expired WUJob. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + Credential + + Specify alternative credential. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + TaskName + + Specify custom name for Task Scheduler job. Default is 'PSWindowsUpdate'. + + string + + System.String + + + + + + + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + Credential + + Specify alternative credential. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + TaskName + + Specify custom name for Task Scheduler job. Default is 'PSWindowsUpdate'. + + string + + System.String + + + + + + ClearExpired + + Clear expired WUJob. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + System.String[] + + + + Specify one or more computer names for remote connection. + + + + + + + + PSWindowsUpdate.WUJob + + + + OutputType for WUJob. + + + + + + ---------- EXAMPLE 1 ---------- + Get invoked WUJob on remote machine. + +Get-WUJob -ComputerName MG-PC + + + + + Author Blog + https://commandlinegeeks.wordpress.com/ + + + + + + + Invoke-WUJob + Invoke + WUJob + + Invoke WUJobs by Task Schduler. + + + + Use Invoke-WUJobs cmdlet to invoke PSWindowsUpdate actions remotly. It Based on TaskScheduler because CreateUpdateDownloader() and CreateUpdateInstaller() methods can't be called from a remote computer - E_ACCESSDENIED. + Note: Because we do not have the ability to interact, is recommended use -AcceptAll for Install-WindowsUpdate. + + + + + Invoke-WUJob + + + TriggerDate + + Specify Time trigger for Task Scheduler job. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + Credential + + Specify alternative credential. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + EndBoundary + + Specify EndBoundary for Task Scheduler trigger. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + Force + + Force update old Task Scheduler Job if it's available. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Hidden + + Specify if task must be hidden. Default is true. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + True + + + + Script + + Specify PowerShell script that you what to run. Default is {ipmo PSWindowsUpdate; Get-WindowsUpdate -AcceptAll -Install | Out-File $Env:TEMP\PSWindowsUpdate.log} + + string + + System.String + + + ipmo PSWindowsUpdate; Get-WindowsUpdate -AcceptAll -Install | Out-File $Env:TEMP\PSWindowsUpdate.log + + + + TaskName + + Specify custom name for Task Scheduler job. Default is 'PSWindowsUpdate'. + + string + + System.String + + + PSWindowsUpdate + + + + + Invoke-WUJob + + + TriggerAtStart + + Specify system startup trigger for Task Scheduler job. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + Credential + + Specify alternative credential. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + EndBoundary + + Specify EndBoundary for Task Scheduler trigger. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + Force + + Force update old Task Scheduler Job if it's available. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Hidden + + Specify if task must be hidden. Default is true. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + True + + + + Script + + Specify PowerShell script that you what to run. Default is {ipmo PSWindowsUpdate; Get-WindowsUpdate -AcceptAll -Install | Out-File $Env:TEMP\PSWindowsUpdate.log} + + string + + System.String + + + ipmo PSWindowsUpdate; Get-WindowsUpdate -AcceptAll -Install | Out-File $Env:TEMP\PSWindowsUpdate.log + + + + TaskName + + Specify custom name for Task Scheduler job. Default is 'PSWindowsUpdate'. + + string + + System.String + + + PSWindowsUpdate + + + + + Invoke-WUJob + + + RunNow + + Run Task Scheduler job immediately. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + Credential + + Specify alternative credential. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + EndBoundary + + Specify EndBoundary for Task Scheduler trigger. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + Force + + Force update old Task Scheduler Job if it's available. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Hidden + + Specify if task must be hidden. Default is true. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + True + + + + Script + + Specify PowerShell script that you what to run. Default is {ipmo PSWindowsUpdate; Get-WindowsUpdate -AcceptAll -Install | Out-File $Env:TEMP\PSWindowsUpdate.log} + + string + + System.String + + + ipmo PSWindowsUpdate; Get-WindowsUpdate -AcceptAll -Install | Out-File $Env:TEMP\PSWindowsUpdate.log + + + + TaskName + + Specify custom name for Task Scheduler job. Default is 'PSWindowsUpdate'. + + string + + System.String + + + PSWindowsUpdate + + + + + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + Credential + + Specify alternative credential. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + TaskName + + Specify custom name for Task Scheduler job. Default is 'PSWindowsUpdate'. + + string + + System.String + + + PSWindowsUpdate + + + + Hidden + + Specify if task must be hidden. Default is true. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + True + + + + EndBoundary + + Specify EndBoundary for Task Scheduler trigger. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + TriggerDate + + Specify Time trigger for Task Scheduler job. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + TriggerAtStart + + Specify system startup trigger for Task Scheduler job. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + RunNow + + Run Task Scheduler job immediately. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Script + + Specify PowerShell script that you what to run. Default is {ipmo PSWindowsUpdate; Get-WindowsUpdate -AcceptAll -Install | Out-File $Env:TEMP\PSWindowsUpdate.log} + + string + + System.String + + + ipmo PSWindowsUpdate; Get-WindowsUpdate -AcceptAll -Install | Out-File $Env:TEMP\PSWindowsUpdate.log + + + + Force + + Force update old Task Scheduler Job if it's available. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + System.String[] + + + + Specify one or more computer names for remote connection. + + + + + + + ---------- EXAMPLE 1 ---------- + Invoke Install-WindowsUpdate on remote machine today at 6:00 PM. + +Invoke-WUJob -ComputerName MG-PC -Script "ipmo PSWindowsUpdate; Install-WindowsUpdate -AcceptAll | Out-File C:\PSWindowsUpdate.log" -TriggerDate (Get-Date -Hour 18 -Minute 0 -Second 0) + +Confirm +Are you sure you want to perform this action? +Performing the operation "Invoke WU job: powershell.exe -Command "ipmo PSWindowsUpdate; Install-WindowsUpdate -AcceptAll | Out-File C:\PSWindowsUpdate.log"" on target "MG-PC". +[Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): Y + + + + + Author Blog + https://commandlinegeeks.wordpress.com/ + + + + + + + Get-WULastResults + Get + WULastResults + + Get Windows Update results. + + + + Use Get-WULastResults cmdlet to get Windows Update LastSearchSuccessDate and LastInstallationSuccessDate. + + + + + Get-WULastResults + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + System.String[] + + + + Specify one or more computer names for remote connection. + + + + + + + + PSWindowsUpdate.LastResults + + + + OutputType for LastResult objects. + + + + + + ---------- EXAMPLE 1 ---------- + Get last Windows Update results. + +Get-WULastResults + +ComputerName LastSearchSuccessDate LastInstallationSuccessDate +------------ --------------------- --------------------------- +MG-PC 30.08.2017 14:02:11 03.07.2017 07:35:27 + + + + + Author Blog + https://commandlinegeeks.wordpress.com/ + + + + + + + Update-WUModule + Update + WUModule + + Update PSWindowsUpdate module. + + + + Use Use Update-WUModule cmdlet to remote update PSWindowsUpdate module. + + + + + Update-WUModule + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + Local + + Update from current module. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Credential + + Specify alternative credential. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + Update-WUModule + + + Online + + Update from PSGallery. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + Credential + + Specify alternative credential. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + Credential + + Specify alternative credential. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + Online + + Update from PSGallery. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Local + + Update from current module. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + System.String[] + + + + Specify one or more computer names for remote connection. + + + + + + + ---------- EXAMPLE 1 ---------- + Update PSWindowsUpdate module from PSGallery + +Update-WUModule -ComputerName MG-PC -Online + + + ---------- EXAMPLE 2 ---------- + Update PSWindowsUpdate module from current serwer. Require SMB connection to destination machine. + +Update-WUModule -ComputerName MG-PC -Local + + + + + Author Blog + https://commandlinegeeks.wordpress.com/ + + + + + + + Get-WUOfflineMSU + Get + WUOfflineMSU + + Get offline MSU package. + + + + Use Get-WUOfflineMSU cmdlet to download MSU package from Microsoft Update Catalog website. + + + + + Get-WUOfflineMSU + + + Destination + + Destination for downloaded files. + + string + + System.String + + + + + + KBArticleID + + Finds updates that contain a KBArticleID. + + string + + System.String + + + + + + AcceptAll + + Do not ask confirmation for download updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + + KBArticleID + + Finds updates that contain a KBArticleID. + + string + + System.String + + + + + + Destination + + Destination for downloaded files. + + string + + System.String + + + + + + AcceptAll + + Do not ask confirmation for download updates. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + System.String + + + + Finds updates that contain a KBArticleID. + + + + + + + ---------- EXAMPLE 1 ---------- + Download package for KB4551762. +PS> Get-WUOfflineMSU -KBArticleID 4551762 -Destination C:\Temp + + Confirm + Are you sure you want to perform this action? + Performing the operation "(20.04.2020 14:27:17) 2020-03 Cumulative Update for Windows Server, version 1909 for + x64-based Systems (KB4551762)[354.4 MB]" on target "DESKTOP-GCQBCBS". + [Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): N + + Confirm + Are you sure you want to perform this action? + Performing the operation "(20.04.2020 14:27:19) 2020-03 Cumulative Update for Windows 10 Version 1909 for x64-based + Systems(KB4551762) [354.4 MB]" on target "DESKTOP-GCQBCBS". + [Y] Yes[A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): Y + + Confirm + Are you sure you want to perform this action? + Performing the operation "(20.04.2020 14:27:23) 2020-03 Cumulative Update for Windows 10 Version 1903 for x64-based + Systems(KB4551762) [354.4 MB]" on target "DESKTOP-GCQBCBS". + [Y] Yes[A]Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): L + + X Result Title LastUpdated Size + - ------ ----- ----------- ---- + 1 Rejected 2020-03 Cumulative Update for Windows Server, version 1909 for x64-based Systems (... 3/12/2020 354.4 MB + 1 Accepted 2020-03 Cumulative Update for Windows 10 Version 1909 for x64-based Systems (KB455... 3/12/2020 354.4 MB + 1 Rejected 2020-03 Cumulative Update for Windows 10 Version 1903 for x64-based Systems (KB455... 3/12/2020 354.4 MB + 1 Rejected 2020-03 Cumulative Update for Windows 10 Version 1909 for x86-based Systems (KB455... 3/12/2020 191.7 MB + 1 Rejected 2020-03 Cumulative Update for Windows 10 Version 1903 for x86-based Systems (KB455... 3/12/2020 191.7 MB + 1 Rejected 2020-03 Cumulative Update for Windows 10 Version 1909 for ARM64-based Systems (KB4... 3/12/2020 396.1 MB + 1 Rejected 2020-03 Cumulative Update for Windows Server, version 1903 for x64-based Systems (... 3/12/2020 354.4 MB + 1 Rejected 2020-03 Cumulative Update for Windows 10 Version 1903 for ARM64-based Systems (KB4... 3/12/2020 396.1 MB + 2 Downloaded 2020-03 Cumulative Update for Windows 10 Version 1909 for x64-based Systems (KB455... 3/12/2020 354.4 MB + +PS> Get-ChildItem C:\Temp + Directory: C:\Temp + + Mode LastWriteTime Length Name + ---- ------------- ------ ---- + -a---- 12.03.2020 07:03 371656774 windows10.0-kb4551762-x64_dacef156c781f2018d94d5a5286076610ba97279.msu + + + + + Author Blog + https://commandlinegeeks.wordpress.com/ + + + + + + + Get-WURebootStatus + Get + WURebootStatus + + Get Windows Update reboot status. + + + + Use Get-WURebootStatus cmdlet to check if reboot is needed. + + + + + Get-WURebootStatus + + + AutoReboot + + Do not ask for reboot if it needed, but do it now. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Silent + + Return true/false only. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + Get-WURebootStatus + + + ScheduleReboot + + Specify schedule time for reboot. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Silent + + Return true/false only. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + Get-WURebootStatus + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Silent + + Return true/false only. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + Get-WURebootStatus + + + CancelReboot + + Cancel scheduled reboot. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Silent + + Return true/false only. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + Silent + + Return true/false only. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AutoReboot + + Do not ask for reboot if it needed, but do it now. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ScheduleReboot + + Specify schedule time for reboot. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + CancelReboot + + Cancel scheduled reboot. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + System.Management.Automation.SwitchParameter + + + + Return true/false only. + + + + + + + + PSWindowsUpdate.RebootStatus + + + + OutputType for RebootStatus objects. + + + + + + ---------- EXAMPLE 1 ---------- + Check if restart is necessary. If yes, ask to do this or don't. + +Get-WURebootStatus + +Reboot is required. Do it now ? [Y/N] (default is 'N') +ComputerName RebootRequired RebootScheduled +------------ -------------- --------------- +MG-PC True + + + ---------- EXAMPLE 2 ---------- + Check if restart is necessary. If yes, then shedule it. + +Get-WURebootStatus -ScheduleReboot (Get-Date -Hour 18 -Minute 0 -Second 0) + +ComputerName RebootRequired RebootScheduled +------------ -------------- --------------- +MG-PC True 31.08.2017 18:00:00 + + + + + Author Blog + https://commandlinegeeks.wordpress.com/ + + + + + + + Enable-WURemoting + Enable + WURemoting + + Enable firewall rules for PSWindowsUpdate remoting. + + + + Use Enable-WURemoting cmdlet to enable nessesery firewall rules for PSWindowsUpdate remoting. + + + + + Enable-WURemoting + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + LocalAccountTokenFilterPolicy + + Set LocalAccountTokenFilterPolicy registry entry to builds an elevated token on the target remote computer. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + WinRMPublic + + Enable WinRM Public access from all subnets. Default access is only enabled from local subnet. Required for workgroup computers. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + + LocalAccountTokenFilterPolicy + + Set LocalAccountTokenFilterPolicy registry entry to builds an elevated token on the target remote computer. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + WinRMPublic + + Enable WinRM Public access from all subnets. Default access is only enabled from local subnet. Required for workgroup computers. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + + ---------- EXAMPLE 1 ---------- + Enable firewall rules for PSWindowsUpdate remoting. + +Enable-WURemoting -Verbose + + + + + Author Blog + https://commandlinegeeks.wordpress.com/ + + + + + + + Add-WUServiceManager + Add + WUServiceManager + + Register a new Windows Update API Service Manager. + + + + Use Add-WUServiceManager cmdlet to register new Windows Update Service Manager. + It's combination old 'Add-WUServiceManager' and 'Add-WUOfflineSync' functions to register online and offline ServiceManager + + + + + Add-WUServiceManager + + + ServiceID + + An identifier for the service to be registered. + Examples Of ServiceID: \r\n \r\n -- Windows Update 9482f4b4-e343-43b6-b170-9a65bc822c77 \r\n -- Microsoft Update 7971f918-a847-4430-9279-4a52d1efe18d \r\n -- Windows Store 117cab2d-82b1-4b5a-a08c-4d62dbee7782 \r\n -- Windows Server Update Service 3da21691-e39d-4da6-8a4b-b43877bcb1b7 + + string + + System.String + + + + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Silent + + Don't return output. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + Add-WUServiceManager + + + MicrosoftUpdate + + Register Microsoft Update Service Manager - '7971f918-a847-4430-9279-4a52d1efe18d' + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Silent + + Don't return output. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + Add-WUServiceManager + + + ServiceID + + An identifier for the service to be registered. + Examples Of ServiceID: \r\n \r\n -- Windows Update 9482f4b4-e343-43b6-b170-9a65bc822c77 \r\n -- Microsoft Update 7971f918-a847-4430-9279-4a52d1efe18d \r\n -- Windows Store 117cab2d-82b1-4b5a-a08c-4d62dbee7782 \r\n -- Windows Server Update Service 3da21691-e39d-4da6-8a4b-b43877bcb1b7 + + string + + System.String + + + + + + AddServiceFlag + + A combination of AddServiceFlag values: \r\n0x1 - asfAllowPendingRegistration \r\n0x2 - asfAllowOnlineRegistration \r\n0x4 - asfRegisterServiceWithAU + + int + + System.Int32 + + + 2 + + + + AuthorizationCabPath + + The path of the Microsoft signed local cabinet file (.cab) that has the information that is required for a service registration. If empty, the update agent searches for the authorization cabinet file (.cab) during service registration when a network connection is available. + + string + + System.String + + + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Silent + + Don't return output. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + Add-WUServiceManager + + + ScanFileLocation + + Path to Windows Update offline scan file (wsusscan.cab or wsusscn2.cab). + + string + + System.String + + + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ServiceName + + Name under which it will be registered Windows Update offline service. Default name is 'Offline Sync Service'. + + string + + System.String + + + Offline Sync Service + + + + Silent + + Don't return output. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + ServiceID + + An identifier for the service to be registered. + Examples Of ServiceID: \r\n \r\n -- Windows Update 9482f4b4-e343-43b6-b170-9a65bc822c77 \r\n -- Microsoft Update 7971f918-a847-4430-9279-4a52d1efe18d \r\n -- Windows Store 117cab2d-82b1-4b5a-a08c-4d62dbee7782 \r\n -- Windows Server Update Service 3da21691-e39d-4da6-8a4b-b43877bcb1b7 + + string + + System.String + + + + + + AddServiceFlag + + A combination of AddServiceFlag values: \r\n0x1 - asfAllowPendingRegistration \r\n0x2 - asfAllowOnlineRegistration \r\n0x4 - asfRegisterServiceWithAU + + int + + System.Int32 + + + 2 + + + + AuthorizationCabPath + + The path of the Microsoft signed local cabinet file (.cab) that has the information that is required for a service registration. If empty, the update agent searches for the authorization cabinet file (.cab) during service registration when a network connection is available. + + string + + System.String + + + + + + MicrosoftUpdate + + Register Microsoft Update Service Manager - '7971f918-a847-4430-9279-4a52d1efe18d' + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ServiceName + + Name under which it will be registered Windows Update offline service. Default name is 'Offline Sync Service'. + + string + + System.String + + + Offline Sync Service + + + + ScanFileLocation + + Path to Windows Update offline scan file (wsusscan.cab or wsusscn2.cab). + + string + + System.String + + + + + + Silent + + Don't return output. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + System.String[] + + + + Specify one or more computer names for remote connection. + + + + + + + + PSWindowsUpdate.ServiceManager + + + + OutputType for ServiceManager objects. + + + + + + ---------- EXAMPLE 1 ---------- + Try register Microsoft Update Service by custom ServiceID. + +Add-WUServiceManager -ServiceID "7971f918-a847-4430-9279-4a52d1efe18d" + +Confirm +Are you sure you want to perform this action? +Performing the operation "Register Windows Update Service Manager: 7971f918-a847-4430-9279-4a52d1efe18d" on target "MG-PC". +[Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): Y + +ServiceID IsManaged IsDefault Name +--------- --------- --------- ---- +7971f918-a847-4430-9279-4a52d1efe18d False False Microsoft Update + + + ---------- EXAMPLE 2 ---------- + Try register Microsoft Update service as Service Manager. + +Add-WUServiceManager -MicrosoftUpdate + +Confirm +Are you sure you want to perform this action? +Performing the operation "Register Windows Update Service Manager: 7971f918-a847-4430-9279-4a52d1efe18d" on target "MG-PC". +[Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): Y + +ServiceID IsManaged IsDefault Name +--------- --------- --------- ---- +7971f918-a847-4430-9279-4a52d1efe18d False False Microsoft Update + + + ---------- EXAMPLE 3 ---------- + Try register Offline Sync Service from file C:\wsusscn2.cab. + +Add-WUServiceManager -ScanFileLocation C:\wsusscn2.cab + +Confirm +Are you sure you want to perform this action? +Performing the operation "Register Offline Windows Update Service Manager: C:\wsusscn2.cab" on target "MG-PC". +[Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): Y + +ServiceID IsManaged IsDefault Name +--------- --------- --------- ---- +7e1364ef-e30e-4f4e-9c66-84194eebcbbe False False Offline Sync Service + + + + + Author Blog + https://commandlinegeeks.wordpress.com/ + + + + + + + Get-WUServiceManager + Get + WUServiceManager + + Get Service Manager configuration. + + + + Use Get-WUServiceManager cmdlet to get available configuration of update services. + + + + + Get-WUServiceManager + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + Credential + + Specify alternative credential. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ServiceID + + Get specific Service Manager if it's available. + + string + + System.String + + + + + + + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + Credential + + Specify alternative credential. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + ServiceID + + Get specific Service Manager if it's available. + + string + + System.String + + + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + System.String[] + + + + Specify one or more computer names for remote connection. + + + + + + + + PSWindowsUpdate.ServiceManager + + + + OutputType for ServiceManager objects. + + + + + + ---------- EXAMPLE 1 ---------- + Check currently available Windows Update Services on machine. + +Get-WUServiceManager + +ServiceID IsManaged IsDefault Name +--------- --------- --------- ---- +9482f4b4-e343-43b6-b170-9a65bc822c77 False False Windows Update +7971f918-a847-4430-9279-4a52d1efe18d False False Microsoft Update +3da21691-e39d-4da6-8a4b-b43877bcb1b7 True True Windows Server Update Service +13df3d8f-78d7-4eb8-bb9c-2a101870d350 False False Offline Sync Service2 +a8f3b5e6-fb1f-4814-a047-2257d39c2460 False False Offline Sync Service + + + + + Author Blog + https://commandlinegeeks.wordpress.com/ + + + + + + + Remove-WUServiceManager + Remove + WUServiceManager + + Remove windows update service manager. + + + + Use Remove-WUServiceManager cmdlet to unregister Windows Update Service Manager. + + + + + Remove-WUServiceManager + + + ServiceID + + Specify ServiceID of Service Manager that you want to remove. + + string + + System.String + + + + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ScheduleJob + + Specify schedule time job. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + ScheduleJob + + Specify schedule time job. + + DateTime + + System.DateTime + + + 01.01.0001 00:00:00 + + + + ServiceID + + Specify ServiceID of Service Manager that you want to remove. + + string + + System.String + + + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + System.String[] + + + + Specify one or more computer names for remote connection. + + + + + + + ---------- EXAMPLE 1 ---------- + Try unregister Microsoft Update Service. + +Remove-WUServiceManager -ServiceID "7971f918-a847-4430-9279-4a52d1efe18d" + +Confirm +Are you sure you want to perform this action? +Performing the operation "Unregister Windows Update Service Manager: 7971f918-a847-4430-9279-4a52d1efe18d" on target "MG-PC". + +[Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): Y + + + + + Author Blog + https://commandlinegeeks.wordpress.com/ + + + + + + + Get-WUSettings + Get + WUSettings + + Get Windows Update Client settings. + + + + Use Get-WUSettings cmdlet to get current configuration of Windows Update Client. + + + + + Get-WUSettings + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + System.String[] + + + + Specify one or more computer names for remote connection. + + + + + + + + PSWindowsUpdate.WUSettings + + + + OutputType for WUSettings objects. + + + + + + ---------- EXAMPLE 1 ---------- + Get current Windows Update Client configuration. + +Get-WUSettings + +ComputerName : MG-PC +AcceptTrustedPublisherCerts : 0 +WUServer : https://wsus.commandlinegeeks.com +WUStatusServer : https://wsus.commandlinegeeks.com +DetectionFrequencyEnabled : 1 +DetectionFrequency : 2 +NoAutoRebootWithLoggedOnUsers : 1 +RebootRelaunchTimeoutEnabled : 1 +RebootRelaunchTimeout : 240 +IncludeRecommendedUpdates : 0 +NoAutoUpdate : 0 +AUOptions : 2 - Notify before download +ScheduledInstallDay : 0 - Every Day +ScheduledInstallTime : 4 +UseWUServer : 1 + + + + + Author Blog + https://commandlinegeeks.wordpress.com/ + + + + + + + Set-WUSettings + Set + WUSettings + + Set Windows Update Client settings. + + + + Use Set-WUSettings cmdlet to Set configuration of Windows Update Client. + + + + + Set-WUSettings + + + AcceptTrustedPublisherCerts + + Enabled - The WSUS server distributes available signed non-Microsoft updates. + Disabled - The WSUS server does not distribute available signed non-Microsoft updates. + Supported on: At least Windows Server 2003 operating systems or Windows XP Professional with SP1, excluding Windows RT + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ActiveHoursEnd + + If you enable this policy, the PC will not automatically restart after updates during active hours. The PC will attempt to restart outside of active hours. + Supported on: At least Windows 10 Server or Windows 10 + + int + + System.Int32 + + + 0 + + + + ActiveHoursMaxRange + + Enable this policy to specify the maximum number of hours from the start time that users can set their active hours. The max active hours range can be set between 8 and 18 hours. + Supported on: At least Windows 10 Server or Windows 10 + + int + + System.Int32 + + + 0 + + + + ActiveHoursStart + + If you enable this policy, the PC will not automatically restart after updates during active hours. The PC will attempt to restart outside of active hours. + Supported on: At least Windows 10 Server or Windows 10 + + int + + System.Int32 + + + 0 + + + + AllowAutoWindowsUpdateDownloadOverMeteredNetwork + + Enabling this policy will automatically download updates, even over metered data connections (charges may apply). + Supported on: At least Windows 10 Server, Windows 10 or Windows 10 RT + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AlwaysAutoRebootAtScheduledTime + + If you enable this policy, a restart timer will always begin immediately after Windows Update installs important updates, instead of first notifying users on the login screen for at least two days.. + Supported on: At least Windows Server 2012, Windows 8 or Windows RT + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AlwaysAutoRebootAtScheduledTimeMinutes + + The restart timer can be configured to start with any value from 15 to 180 minutes. When the timer runs out, the restart will proceed even if the PC has signed-in users. + Supported on: At least Windows Server 2012, Windows 8 or Windows RT​ + + int + + System.Int32 + + + 0 + + + + AUPowerManagement + + Specifies whether the Windows Update will use the Windows Power Management features to automatically wake up the system from sleep, if there are updates scheduled for installation. + Supported on: Windows Server 2008, Windows 7, Windows Vista, and Windows 10 + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AutoInstallMinorUpdates + + Silently install minor updates. + Supported on: At least Windows XP Professional Service Pack 1 or At least Windows 2000 Service Pack 3 through Windows 8.1 or Windows Server 2012 R2 with most current service pack. Not supported on Windows 10 and above. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AutoRestartNotificationSchedule + + Specifies the type of notification used when notifying the user about a scheduled restart to install updates. + Supported on: Windows Server 2016 through Windows Server 2022, or Windows 10 + + int + + System.Int32 + + + 0 + + + + AutoRestartRequiredNotificationDismissal + + Enable this policy to specify the method by which the auto-restart required notification is dismissed. When a restart is required to install updates, the auto-restart required notification is displayed. By default, the notification is automatically dismissed after 25 seconds. + Supported on: Windows Server 2016 through Windows Server 2022, or Windows 10 + + string + + System.String + + + + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + DeferFeatureUpdatesPeriodInDays + + Enable this policy to specify when to receive Feature Updates. + Supported on: At least Windows 10 Server or Windows 10​ + + int + + System.Int32 + + + 0 + + + + DeferQualityUpdatesPeriodInDays + + Enable this policy to specify when to receive quality updates. + Supported on: At least Windows 10 Server or Windows 10​ + + int + + System.Int32 + + + 0 + + + + DeferUpdatePeriod + + Allows IT Admins to specify update delays for up to four weeks. Supported values are 0-4, which refers to the number of weeks to defer updates. + Supported on: At least Windows 10 Server or Windows 10​ + + int + + System.Int32 + + + 0 + + + + DeferUpgrade + + You can also choose to delay updates for up to one month. If you do not delay updates, your PC will remain up to date with security updates as they become available. + Supported on: At least Windows 10 Server or Windows 10​ + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + DeferUpgradePeriod + + Allows IT Admins to specify additional upgrade delays for up to 8 months. Supported values are 0-8, which refers to the number of months to defer upgrades. + Supported on: At least Windows 10 Server or Windows 10​ + + int + + System.Int32 + + + 0 + + + + DetectionFrequency + + Time between detection cycles. Time in hours (1–22). + Supported on: At least Windows XP Professional Service Pack 1 or Windows 2000 Service Pack 3, excluding Windows RT + + int + + System.Int32 + + + 0 + + + + DetectionFrequencyEnabled + + Enable/Disable detection frequency. + Supported on: At least Windows XP Professional Service Pack 1 or Windows 2000 Service Pack 3, excluding Windows RT + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + DisableWindowsUpdateAccess + + Disables/Enables access to Windows Update. + Supported on: At least Windows Server 2003 operating systems, Windows XP Professional Service Pack 1, or Windows 2000 Service Pack 3 + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + DisableWUfBSafeguards + + This policy setting specifies that a Windows Update for Business device should skip safeguards. + Supported on: At least Windows Server, Windows 10 Version 1903​ + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ElevateNonAdmins + + This policy setting allows you to control whether non-administrative users will receive update notifications based on the "Configure Automatic Updates" policy setting. + Supported on: At least Windows XP Professional Service Pack 1 or At least Windows 2000 Service Pack 3 through Windows 8.1 or Windows Server 2012 R2 with most current service pack. Not supported on Windows 10 and above.. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + EnableFeaturedSoftware + + This policy setting allows you to control whether users see detailed enhanced notification messages about featured software from the Microsoft Update service. + Supported on: Windows Server 2008, Windows 7, and Windows Vista​ + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IncludeRecommendedUpdates + + Enable/Disable recommended updates. + Supported on: At least Windows Vista through Windows 8.1 or Windows Server 2012 R2 with most current service pack. Not supported on Windows 10 and above. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ManagePreviewBuilds + + Enable this policy to manage which updates you receive prior to the update being released to the world. + 0 Disable Preview builds. + 1 Disable Preview builds once the next release is public. + 2 Enable Preview builds. + 3 (Default) Preview builds is left to user selection. + Supported on: At least Windows Server, Windows 10 Version 1709​ + + int + + System.Int32 + + + 0 + + + + NoAUShutdownOption + + This policy setting allows you to manage whether the 'Install Updates and Shut Down' option is displayed in the Shut Down Windows dialog box. + Supported on: Windows 7, Windows Server 2008 R2, Windows Vista, Windows XP SP2 + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + NoAutoRebootWithLoggedOnUsers + + Logged-on user can decide whether to restart the client computer. + Supported on: Windows XP Professional Service Pack 1 or At least Windows 2000 Service Pack 3​ + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + NoAutoUpdate + + Enable/Disable Automatic Updates. + Supported on: Windows XP Professional Service Pack 1 or At least Windows 2000 Service Pack 3 Option 7 only supported on servers of at least Windows Server 2016 edition​ + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + NotificationLevel + + Notify mode: "Not configured", "Disabled", "Notify before download", "Notify before installation", "Scheduled installation", "Users configure" + Supported on: Windows XP Professional Service Pack 1 or At least Windows 2000 Service Pack 3 Option 7 only supported on servers of at least Windows Server 2016 edition​ + + string + + System.String + + + + + + PauseDeferrals + + Allows IT Admins to pause updates and upgrades for up to 5 weeks. + Supported on: At least Windows 10 Server or Windows 10​ + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ProductVersion + + ProductVersion allow to control maximum version of Feature updates. For example "Windows 11" or "11" or "Windows 10". + Supported on: At least Windows 10 Server or Windows 10​ + + string + + System.String + + + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + RebootRelaunchTimeout + + Time between prompts for a scheduled restart. Time in minutes (1–1440). + Supported on: Windows 7, Windows Server 2008 R2, Windows Vista, Windows Server 2003, Windows XP SP2, Windows XP SP1 , Windows 2000 SP4, Windows 2000 SP3 + + int + + System.Int32 + + + 0 + + + + RebootRelaunchTimeoutEnabled + + Specifies the amount of time for Automatic Updates to wait before prompting again with a scheduled restart. + Supported on: Windows 7, Windows Server 2008 R2, Windows Vista, Windows Server 2003, Windows XP SP2, Windows XP SP1 , Windows 2000 SP4, Windows 2000 SP3 + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + RebootWarningTimeout + + Length, in minutes, of the restart warning countdown after updates have been installed that have a deadline or scheduled updates. Time in minutes (1–30). + Supported on: Windows 7, Windows Server 2008 R2, Windows Vista, Windows Server 2003, Windows XP SP2, Windows XP SP1 , Windows 2000 SP4, Windows 2000 SP3​ + + int + + System.Int32 + + + 0 + + + + RebootWarningTimeoutEnabled + + Enable/Disable RebootWarningTimeout. + Supported on: Windows 7, Windows Server 2008 R2, Windows Vista, Windows Server 2003, Windows XP SP2, Windows XP SP1 , Windows 2000 SP4, Windows 2000 SP3​ + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + RescheduleWaitTime + + Specifies the amount of time for Automatic Updates to wait, following system startup, before proceeding with a scheduled installation that was missed previously. + Supported on: Windows 7, Windows Server 2008 R2, Windows Vista, Windows Server 2003, Windows XP SP2, Windows XP SP1 , Windows 2000 SP4, Windows 2000 SP3 + + int + + System.Int32 + + + 0 + + + + RescheduleWaitTimeEnabled + + Specifies the amount of time for Automatic Updates to wait, following system startup, before proceeding with a scheduled installation that was missed previously. + Supported on: Windows 7, Windows Server 2008 R2, Windows Vista, Windows Server 2003, Windows XP SP2, Windows XP SP1 , Windows 2000 SP4, Windows 2000 SP3 + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ScheduledInstallDay + + Scheduled day of install: "Every day", "Every Sunday", "Every Monday", "Every Tuesday", "Every Wednesday", "Every Thursday", ""Every Friday", "EverySaturday". Only valid if NotificationLevel (AUOptions) = "Scheduled installation" + Starting with Windows 8 and Windows Server 2012, ScheduledInstallationDay are not supported and will return unreliable values.If you try to modify these properties, the operation will appear to succeed but will have no effect. + + string + + System.String + + + + + + ScheduledInstallTime + + Scheduled time of install in 24-hour format(0–23). + Starting with Windows 8 and Windows Server 2012, ScheduledInstallTime are not supported and will return unreliable values.If you try to modify these properties, the operation will appear to succeed but will have no effect. + + int + + System.Int32 + + + 0 + + + + ScheduleImminentRestartWarning + + Enable this policy to control when notifications are displayed to warn users about a scheduled restart for the update installation deadline. 15 Minutes (Default), 30 Minutes or 60 Minutes. + Supported on: Windows Server 2016 through Windows Server 2022, or Windows 10 + + int + + System.Int32 + + + 0 + + + + ScheduleRestartWarning + + Enable this policy to control when notifications are displayed to warn users about a scheduled restart for the update installation deadline. 2 Hours, 4 Hours (Default), 8 Hours, 12 Hours, 24 Hours. + Supported on: Windows Server 2016 through Windows Server 2022, or Windows 10 + + int + + System.Int32 + + + 0 + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + SetActiveHours + + If you enable this policy, the PC will not automatically restart after updates during active hours. The PC will attempt to restart outside of active hours. + Supported on: At least Windows 10 Server or Windows 10 + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + SetActiveHoursMaxRange + + Enable this policy to specify the maximum number of hours from the start time that users can set their active hours. The max active hours range can be set between 8 and 18 hours. + Supported on: At least Windows 10 Server or Windows 10 + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + SetAutoRestartNotificationConfig + + Specifies the type of notification used when notifying the user about a scheduled restart to install updates. + Supported on: Windows Server 2016 through Windows Server 2022, or Windows 10 + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + SetAutoRestartNotificationDisable + + This policy setting allows you to control whether users receive notifications for auto restarts for update installations including reminder and warning notifications. + Supported on: Windows Server 2016 through Windows Server 2022, or Windows 10​ + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + SetAutoRestartRequiredNotificationDismissal + + Enable this policy to specify the method by which the auto-restart required notification is dismissed. When a restart is required to install updates, the auto-restart required notification is displayed. By default, the notification is automatically dismissed after 25 seconds. + Supported on: Windows Server 2016 through Windows Server 2022, or Windows 10​ + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + SetDisablePauseUXAccess + + This setting allows to remove access to "Pause updates" feature. Once enabled user access to pause updates is removed. + Supported on: At least Windows Server, Windows 10 Version 1809 + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + SetDisableUXWUAccess + + This setting allows you to remove access to scan Windows Update. If you enable this setting, Windows Update scan access is removed. + Supported on: At least Windows 10 Server or Windows 10 + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + SetEDURestart + + Enabling this policy for EDU devices that remain on Carts overnight will skip power checks to ensure update reboots will happen at the scheduled install time. + Supported on: At least Windows 10 Server, Windows 10 or Windows 10 RT​ + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + SetPolicyDrivenUpdateSourceForDriverUpdates + + Configure this policy to specify whether to receive Windows Driver Updates from Windows Update endpoint, managed by Windows Update for Business policies, or through your configured Windows Server Update Service (WSUS) server. + Supported on: At least Windows Server 2022, or Windows 10 Version 2004​ + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + SetPolicyDrivenUpdateSourceForFeatureUpdates + + Configure this policy to specify whether to receive Windows Feature Updates from Windows Update endpoint, managed by Windows Update for Business policies, or through your configured Windows Server Update Service (WSUS) server. + Supported on: At least Windows Server 2022, or Windows 10 Version 2004​ + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + SetPolicyDrivenUpdateSourceForOtherUpdates + + Configure this policy to specify whether to receive Other Updates from Windows Update endpoint, managed by Windows Update for Business policies, or through your configured Windows Server Update Service (WSUS) server. + Supported on: At least Windows Server 2022, or Windows 10 Version 2004​ + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + SetPolicyDrivenUpdateSourceForQualityUpdates + + Configure this policy to specify whether to receive Windows Quality Updates from Windows Update endpoint, managed by Windows Update for Business policies, or through your configured Windows Server Update Service (WSUS) server. + Supported on: At least Windows Server 2022, or Windows 10 Version 2004​ + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + SetRestartWarningSchd + + Enable this policy to control when notifications are displayed to warn users about a scheduled restart for the update installation deadline. + Supported on: Windows Server 2016 through Windows Server 2022, or Windows 10 + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + SetUpdateNotificationLevel + + This policy allows you to define what Windows Update notifications users see. This policy doesn't control how and when updates are downloaded and installed. + Supported on: At least Windows 10 Server or Windows 10 + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + TargetGroup + + Name of the computer group to which the computer belongs. + Supported on: At least Windows XP Professional Service Pack 1 or Windows 2000 Service Pack 3, excluding Windows RT + + string + + System.String + + + + + + TargetGroupEnabled + + Use/Do not use client-side targeting. + Supported on: At least Windows XP Professional Service Pack 1 or Windows 2000 Service Pack 3, excluding Windows RT + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + TargetReleaseVersion + + Enable settings for control maximum version of Feature updates. + Supported on: At least Windows 10 Server or Windows 10​ + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + TargetReleaseVersionInfo + + TargetReleaseVersionInfo allow to control maximum version of Feature updates. For example "22H2". + Supported on: At least Windows 10 Server or Windows 10​ + + string + + System.String + + + + + + UpdateNotificationLevel + + This policy allows you to define what Windows Update notifications users see. This policy doesn't control how and when updates are downloaded and installed. + Supported on: At least Windows 10 Server or Windows 10 + + string + + System.String + + + + + + UseUpdateClassPolicySource + + When this policy is enabled, devices will receive Windows updates for the classes listed from the specified update source: either Windows Update or Windows Server Update Service. + Supported on: At least Windows 10 Server or Windows 10 + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + UseWUServer + + The computer gets its updates from a WSUS server or from Microsoft Update. + Supported on: At least Windows XP Professional Service Pack 1 or Windows 2000 Service Pack 3, excluding Windows RT + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + WUServer + + HTTP(S) URL of the WSUS server that is used by Automatic Updates and API callers (by default). + Supported on: At least Windows XP Professional Service Pack 1 or Windows 2000 Service Pack 3, excluding Windows RT + + string + + System.String + + + + + + + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + AcceptTrustedPublisherCerts + + Enabled - The WSUS server distributes available signed non-Microsoft updates. + Disabled - The WSUS server does not distribute available signed non-Microsoft updates. + Supported on: At least Windows Server 2003 operating systems or Windows XP Professional with SP1, excluding Windows RT + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + DisableWindowsUpdateAccess + + Disables/Enables access to Windows Update. + Supported on: At least Windows Server 2003 operating systems, Windows XP Professional Service Pack 1, or Windows 2000 Service Pack 3 + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ElevateNonAdmins + + This policy setting allows you to control whether non-administrative users will receive update notifications based on the "Configure Automatic Updates" policy setting. + Supported on: At least Windows XP Professional Service Pack 1 or At least Windows 2000 Service Pack 3 through Windows 8.1 or Windows Server 2012 R2 with most current service pack. Not supported on Windows 10 and above.. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + TargetGroup + + Name of the computer group to which the computer belongs. + Supported on: At least Windows XP Professional Service Pack 1 or Windows 2000 Service Pack 3, excluding Windows RT + + string + + System.String + + + + + + TargetGroupEnabled + + Use/Do not use client-side targeting. + Supported on: At least Windows XP Professional Service Pack 1 or Windows 2000 Service Pack 3, excluding Windows RT + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + WUServer + + HTTP(S) URL of the WSUS server that is used by Automatic Updates and API callers (by default). + Supported on: At least Windows XP Professional Service Pack 1 or Windows 2000 Service Pack 3, excluding Windows RT + + string + + System.String + + + + + + NotificationLevel + + Notify mode: "Not configured", "Disabled", "Notify before download", "Notify before installation", "Scheduled installation", "Users configure" + Supported on: Windows XP Professional Service Pack 1 or At least Windows 2000 Service Pack 3 Option 7 only supported on servers of at least Windows Server 2016 edition​ + + string + + System.String + + + + + AUOptions + + Notify mode: "Not configured", "Disabled", "Notify before download", "Notify before installation", "Scheduled installation", "Users configure" + Supported on: Windows XP Professional Service Pack 1 or At least Windows 2000 Service Pack 3 Option 7 only supported on servers of at least Windows Server 2016 edition​ + This is an alias of the NotificationLevel parameter. + + string + + System.String + + + + + + AutoInstallMinorUpdates + + Silently install minor updates. + Supported on: At least Windows XP Professional Service Pack 1 or At least Windows 2000 Service Pack 3 through Windows 8.1 or Windows Server 2012 R2 with most current service pack. Not supported on Windows 10 and above. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + DetectionFrequency + + Time between detection cycles. Time in hours (1–22). + Supported on: At least Windows XP Professional Service Pack 1 or Windows 2000 Service Pack 3, excluding Windows RT + + int + + System.Int32 + + + 0 + + + + DetectionFrequencyEnabled + + Enable/Disable detection frequency. + Supported on: At least Windows XP Professional Service Pack 1 or Windows 2000 Service Pack 3, excluding Windows RT + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IncludeRecommendedUpdates + + Enable/Disable recommended updates. + Supported on: At least Windows Vista through Windows 8.1 or Windows Server 2012 R2 with most current service pack. Not supported on Windows 10 and above. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + NoAutoRebootWithLoggedOnUsers + + Logged-on user can decide whether to restart the client computer. + Supported on: Windows XP Professional Service Pack 1 or At least Windows 2000 Service Pack 3​ + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + NoAutoUpdate + + Enable/Disable Automatic Updates. + Supported on: Windows XP Professional Service Pack 1 or At least Windows 2000 Service Pack 3 Option 7 only supported on servers of at least Windows Server 2016 edition​ + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + RebootRelaunchTimeout + + Time between prompts for a scheduled restart. Time in minutes (1–1440). + Supported on: Windows 7, Windows Server 2008 R2, Windows Vista, Windows Server 2003, Windows XP SP2, Windows XP SP1 , Windows 2000 SP4, Windows 2000 SP3 + + int + + System.Int32 + + + 0 + + + + RebootRelaunchTimeoutEnabled + + Specifies the amount of time for Automatic Updates to wait before prompting again with a scheduled restart. + Supported on: Windows 7, Windows Server 2008 R2, Windows Vista, Windows Server 2003, Windows XP SP2, Windows XP SP1 , Windows 2000 SP4, Windows 2000 SP3 + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + RebootWarningTimeout + + Length, in minutes, of the restart warning countdown after updates have been installed that have a deadline or scheduled updates. Time in minutes (1–30). + Supported on: Windows 7, Windows Server 2008 R2, Windows Vista, Windows Server 2003, Windows XP SP2, Windows XP SP1 , Windows 2000 SP4, Windows 2000 SP3​ + + int + + System.Int32 + + + 0 + + + + RebootWarningTimeoutEnabled + + Enable/Disable RebootWarningTimeout. + Supported on: Windows 7, Windows Server 2008 R2, Windows Vista, Windows Server 2003, Windows XP SP2, Windows XP SP1 , Windows 2000 SP4, Windows 2000 SP3​ + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ScheduledInstallDay + + Scheduled day of install: "Every day", "Every Sunday", "Every Monday", "Every Tuesday", "Every Wednesday", "Every Thursday", ""Every Friday", "EverySaturday". Only valid if NotificationLevel (AUOptions) = "Scheduled installation" + Starting with Windows 8 and Windows Server 2012, ScheduledInstallationDay are not supported and will return unreliable values.If you try to modify these properties, the operation will appear to succeed but will have no effect. + + string + + System.String + + + + + + ScheduledInstallTime + + Scheduled time of install in 24-hour format(0–23). + Starting with Windows 8 and Windows Server 2012, ScheduledInstallTime are not supported and will return unreliable values.If you try to modify these properties, the operation will appear to succeed but will have no effect. + + int + + System.Int32 + + + 0 + + + + UseWUServer + + The computer gets its updates from a WSUS server or from Microsoft Update. + Supported on: At least Windows XP Professional Service Pack 1 or Windows 2000 Service Pack 3, excluding Windows RT + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + TargetReleaseVersion + + Enable settings for control maximum version of Feature updates. + Supported on: At least Windows 10 Server or Windows 10​ + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + TargetReleaseVersionInfo + + TargetReleaseVersionInfo allow to control maximum version of Feature updates. For example "22H2". + Supported on: At least Windows 10 Server or Windows 10​ + + string + + System.String + + + + + + ProductVersion + + ProductVersion allow to control maximum version of Feature updates. For example "Windows 11" or "11" or "Windows 10". + Supported on: At least Windows 10 Server or Windows 10​ + + string + + System.String + + + + + + DeferFeatureUpdatesPeriodInDays + + Enable this policy to specify when to receive Feature Updates. + Supported on: At least Windows 10 Server or Windows 10​ + + int + + System.Int32 + + + 0 + + + + DeferQualityUpdatesPeriodInDays + + Enable this policy to specify when to receive quality updates. + Supported on: At least Windows 10 Server or Windows 10​ + + int + + System.Int32 + + + 0 + + + + DisableWUfBSafeguards + + This policy setting specifies that a Windows Update for Business device should skip safeguards. + Supported on: At least Windows Server, Windows 10 Version 1903​ + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ManagePreviewBuilds + + Enable this policy to manage which updates you receive prior to the update being released to the world. + 0 Disable Preview builds. + 1 Disable Preview builds once the next release is public. + 2 Enable Preview builds. + 3 (Default) Preview builds is left to user selection. + Supported on: At least Windows Server, Windows 10 Version 1709​ + + int + + System.Int32 + + + 0 + + + + AllowAutoWindowsUpdateDownloadOverMeteredNetwork + + Enabling this policy will automatically download updates, even over metered data connections (charges may apply). + Supported on: At least Windows 10 Server, Windows 10 or Windows 10 RT + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AlwaysAutoRebootAtScheduledTime + + If you enable this policy, a restart timer will always begin immediately after Windows Update installs important updates, instead of first notifying users on the login screen for at least two days.. + Supported on: At least Windows Server 2012, Windows 8 or Windows RT + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AlwaysAutoRebootAtScheduledTimeMinutes + + The restart timer can be configured to start with any value from 15 to 180 minutes. When the timer runs out, the restart will proceed even if the PC has signed-in users. + Supported on: At least Windows Server 2012, Windows 8 or Windows RT​ + + int + + System.Int32 + + + 0 + + + + SetAutoRestartNotificationConfig + + Specifies the type of notification used when notifying the user about a scheduled restart to install updates. + Supported on: Windows Server 2016 through Windows Server 2022, or Windows 10 + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AutoRestartNotificationSchedule + + Specifies the type of notification used when notifying the user about a scheduled restart to install updates. + Supported on: Windows Server 2016 through Windows Server 2022, or Windows 10 + + int + + System.Int32 + + + 0 + + + + SetAutoRestartRequiredNotificationDismissal + + Enable this policy to specify the method by which the auto-restart required notification is dismissed. When a restart is required to install updates, the auto-restart required notification is displayed. By default, the notification is automatically dismissed after 25 seconds. + Supported on: Windows Server 2016 through Windows Server 2022, or Windows 10​ + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AutoRestartRequiredNotificationDismissal + + Enable this policy to specify the method by which the auto-restart required notification is dismissed. When a restart is required to install updates, the auto-restart required notification is displayed. By default, the notification is automatically dismissed after 25 seconds. + Supported on: Windows Server 2016 through Windows Server 2022, or Windows 10 + + string + + System.String + + + + + + SetRestartWarningSchd + + Enable this policy to control when notifications are displayed to warn users about a scheduled restart for the update installation deadline. + Supported on: Windows Server 2016 through Windows Server 2022, or Windows 10 + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ScheduleRestartWarning + + Enable this policy to control when notifications are displayed to warn users about a scheduled restart for the update installation deadline. 2 Hours, 4 Hours (Default), 8 Hours, 12 Hours, 24 Hours. + Supported on: Windows Server 2016 through Windows Server 2022, or Windows 10 + + int + + System.Int32 + + + 0 + + + + ScheduleImminentRestartWarning + + Enable this policy to control when notifications are displayed to warn users about a scheduled restart for the update installation deadline. 15 Minutes (Default), 30 Minutes or 60 Minutes. + Supported on: Windows Server 2016 through Windows Server 2022, or Windows 10 + + int + + System.Int32 + + + 0 + + + + DeferUpgrade + + You can also choose to delay updates for up to one month. If you do not delay updates, your PC will remain up to date with security updates as they become available. + Supported on: At least Windows 10 Server or Windows 10​ + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + DeferUpgradePeriod + + Allows IT Admins to specify additional upgrade delays for up to 8 months. Supported values are 0-8, which refers to the number of months to defer upgrades. + Supported on: At least Windows 10 Server or Windows 10​ + + int + + System.Int32 + + + 0 + + + + DeferUpdatePeriod + + Allows IT Admins to specify update delays for up to four weeks. Supported values are 0-4, which refers to the number of weeks to defer updates. + Supported on: At least Windows 10 Server or Windows 10​ + + int + + System.Int32 + + + 0 + + + + PauseDeferrals + + Allows IT Admins to pause updates and upgrades for up to 5 weeks. + Supported on: At least Windows 10 Server or Windows 10​ + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + SetUpdateNotificationLevel + + This policy allows you to define what Windows Update notifications users see. This policy doesn't control how and when updates are downloaded and installed. + Supported on: At least Windows 10 Server or Windows 10 + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + UpdateNotificationLevel + + This policy allows you to define what Windows Update notifications users see. This policy doesn't control how and when updates are downloaded and installed. + Supported on: At least Windows 10 Server or Windows 10 + + string + + System.String + + + + + + NoAUShutdownOption + + This policy setting allows you to manage whether the 'Install Updates and Shut Down' option is displayed in the Shut Down Windows dialog box. + Supported on: Windows 7, Windows Server 2008 R2, Windows Vista, Windows XP SP2 + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + AUPowerManagement + + Specifies whether the Windows Update will use the Windows Power Management features to automatically wake up the system from sleep, if there are updates scheduled for installation. + Supported on: Windows Server 2008, Windows 7, Windows Vista, and Windows 10 + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + SetDisablePauseUXAccess + + This setting allows to remove access to "Pause updates" feature. Once enabled user access to pause updates is removed. + Supported on: At least Windows Server, Windows 10 Version 1809 + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + SetDisableUXWUAccess + + This setting allows you to remove access to scan Windows Update. If you enable this setting, Windows Update scan access is removed. + Supported on: At least Windows 10 Server or Windows 10 + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + RescheduleWaitTimeEnabled + + Specifies the amount of time for Automatic Updates to wait, following system startup, before proceeding with a scheduled installation that was missed previously. + Supported on: Windows 7, Windows Server 2008 R2, Windows Vista, Windows Server 2003, Windows XP SP2, Windows XP SP1 , Windows 2000 SP4, Windows 2000 SP3 + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + RescheduleWaitTime + + Specifies the amount of time for Automatic Updates to wait, following system startup, before proceeding with a scheduled installation that was missed previously. + Supported on: Windows 7, Windows Server 2008 R2, Windows Vista, Windows Server 2003, Windows XP SP2, Windows XP SP1 , Windows 2000 SP4, Windows 2000 SP3 + + int + + System.Int32 + + + 0 + + + + SetActiveHoursMaxRange + + Enable this policy to specify the maximum number of hours from the start time that users can set their active hours. The max active hours range can be set between 8 and 18 hours. + Supported on: At least Windows 10 Server or Windows 10 + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ActiveHoursMaxRange + + Enable this policy to specify the maximum number of hours from the start time that users can set their active hours. The max active hours range can be set between 8 and 18 hours. + Supported on: At least Windows 10 Server or Windows 10 + + int + + System.Int32 + + + 0 + + + + UseUpdateClassPolicySource + + When this policy is enabled, devices will receive Windows updates for the classes listed from the specified update source: either Windows Update or Windows Server Update Service. + Supported on: At least Windows 10 Server or Windows 10 + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + SetPolicyDrivenUpdateSourceForFeatureUpdates + + Configure this policy to specify whether to receive Windows Feature Updates from Windows Update endpoint, managed by Windows Update for Business policies, or through your configured Windows Server Update Service (WSUS) server. + Supported on: At least Windows Server 2022, or Windows 10 Version 2004​ + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + SetPolicyDrivenUpdateSourceForQualityUpdates + + Configure this policy to specify whether to receive Windows Quality Updates from Windows Update endpoint, managed by Windows Update for Business policies, or through your configured Windows Server Update Service (WSUS) server. + Supported on: At least Windows Server 2022, or Windows 10 Version 2004​ + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + SetPolicyDrivenUpdateSourceForDriverUpdates + + Configure this policy to specify whether to receive Windows Driver Updates from Windows Update endpoint, managed by Windows Update for Business policies, or through your configured Windows Server Update Service (WSUS) server. + Supported on: At least Windows Server 2022, or Windows 10 Version 2004​ + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + SetPolicyDrivenUpdateSourceForOtherUpdates + + Configure this policy to specify whether to receive Other Updates from Windows Update endpoint, managed by Windows Update for Business policies, or through your configured Windows Server Update Service (WSUS) server. + Supported on: At least Windows Server 2022, or Windows 10 Version 2004​ + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + SetActiveHours + + If you enable this policy, the PC will not automatically restart after updates during active hours. The PC will attempt to restart outside of active hours. + Supported on: At least Windows 10 Server or Windows 10 + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + ActiveHoursStart + + If you enable this policy, the PC will not automatically restart after updates during active hours. The PC will attempt to restart outside of active hours. + Supported on: At least Windows 10 Server or Windows 10 + + int + + System.Int32 + + + 0 + + + + ActiveHoursEnd + + If you enable this policy, the PC will not automatically restart after updates during active hours. The PC will attempt to restart outside of active hours. + Supported on: At least Windows 10 Server or Windows 10 + + int + + System.Int32 + + + 0 + + + + SetAutoRestartNotificationDisable + + This policy setting allows you to control whether users receive notifications for auto restarts for update installations including reminder and warning notifications. + Supported on: Windows Server 2016 through Windows Server 2022, or Windows 10​ + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + EnableFeaturedSoftware + + This policy setting allows you to control whether users see detailed enhanced notification messages about featured software from the Microsoft Update service. + Supported on: Windows Server 2008, Windows 7, and Windows Vista​ + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + SetEDURestart + + Enabling this policy for EDU devices that remain on Carts overnight will skip power checks to ensure update reboots will happen at the scheduled install time. + Supported on: At least Windows 10 Server, Windows 10 or Windows 10 RT​ + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + System.String[] + + + + Specify one or more computer names for remote connection. + + + + + + + + PSWindowsUpdate.WUSettings + + + + OutputType for WUSettings objects. + + + + + + ---------- EXAMPLE 1 ---------- + Enable IncludeRecommendedUpdates attributes. + +Set-WUSettings -IncludeRecommendedUpdates + +Confirm +Are you sure you want to perform this action? +Performing the operation "Set Windows Update settings" on target "MG-PC". +[Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): Y + +ComputerName IncludeRecommendedUpdates +------------ ------------------------- +MG-PC True + + + + + Author Blog + https://commandlinegeeks.wordpress.com/ + + + + + + + Get-WUTest + Get + WUTest + + Test cmdlet. + + + + Use Get-WUTest cmdlet to test. + + + + + Get-WUTest + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + Credential + + Specify alternative credential. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + TestParam + + Test parameter. + + string + + System.String + + + + + + + + + ComputerName + + Specify one or more computer names for remote connection. + + string[] + + System.String[] + + + + + + Credential + + Specify alternative credential. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + SendReport + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + PSWUSettings + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + Hashtable + + System.Collections.Hashtable + + + + + + Debuger + + Debuger return original exceptions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + TestParam + + Test parameter. + + string + + System.String + + + + + + + + System.String[] + + + + Specify one or more computer names for remote connection. + + + + + + + ---------- EXAMPLE 1 ---------- + Test. + +Get-WUTest + + + + + Author Blog + https://commandlinegeeks.wordpress.com/ + + + + \ No newline at end of file diff --git a/Modules/PSWindowsUpdate/2.2.1.2/PSWindowsUpdate.psd1 b/Modules/PSWindowsUpdate/2.2.1.2/PSWindowsUpdate.psd1 new file mode 100644 index 0000000000000000000000000000000000000000..2809a873f556764d3f36ebfddece3f3d19602b2e GIT binary patch literal 47874 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 ddeN|7^v(|NHz)YCm21N{y#rYCEox5 literal 0 HcmV?d00001 diff --git a/Modules/PSWindowsUpdate/2.2.1.2/PSWindowsUpdate.xml b/Modules/PSWindowsUpdate/2.2.1.2/PSWindowsUpdate.xml new file mode 100644 index 0000000..b883e7c --- /dev/null +++ b/Modules/PSWindowsUpdate/2.2.1.2/PSWindowsUpdate.xml @@ -0,0 +1,4020 @@ + + + + PSWindowsUpdate + + + +

+ Register a new Windows Update API Service Manager. + Use Add-WUServiceManager cmdlet to register new Windows Update Service Manager. + It's combination old 'Add-WUServiceManager' and 'Add-WUOfflineSync' functions to register online and offline ServiceManager + + Author Blog + + + Try register Microsoft Update Service by custom ServiceID. + + Add-WUServiceManager -ServiceID "7971f918-a847-4430-9279-4a52d1efe18d" + + Confirm + Are you sure you want to perform this action? + Performing the operation "Register Windows Update Service Manager: 7971f918-a847-4430-9279-4a52d1efe18d" on target "MG-PC". + [Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): Y + + ServiceID IsManaged IsDefault Name + --------- --------- --------- ---- + 7971f918-a847-4430-9279-4a52d1efe18d False False Microsoft Update + + + + + Try register Microsoft Update service as Service Manager. + + Add-WUServiceManager -MicrosoftUpdate + + Confirm + Are you sure you want to perform this action? + Performing the operation "Register Windows Update Service Manager: 7971f918-a847-4430-9279-4a52d1efe18d" on target "MG-PC". + [Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): Y + + ServiceID IsManaged IsDefault Name + --------- --------- --------- ---- + 7971f918-a847-4430-9279-4a52d1efe18d False False Microsoft Update + + + + + Try register Offline Sync Service from file C:\wsusscn2.cab. + + Add-WUServiceManager -ScanFileLocation C:\wsusscn2.cab + + Confirm + Are you sure you want to perform this action? + Performing the operation "Register Offline Windows Update Service Manager: C:\wsusscn2.cab" on target "MG-PC". + [Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): Y + + ServiceID IsManaged IsDefault Name + --------- --------- --------- ---- + 7e1364ef-e30e-4f4e-9c66-84194eebcbbe False False Offline Sync Service + + + + + + Specify one or more computer names for remote connection. + + + + + Specify alternative credential. + + + + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + + + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: + \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: + \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + + + + An identifier for the service to be registered. + Examples Of ServiceID: + \r\n + \r\n -- Windows Update 9482f4b4-e343-43b6-b170-9a65bc822c77 + \r\n -- Microsoft Update 7971f918-a847-4430-9279-4a52d1efe18d + \r\n -- Windows Store 117cab2d-82b1-4b5a-a08c-4d62dbee7782 + \r\n -- Windows Server Update Service 3da21691-e39d-4da6-8a4b-b43877bcb1b7 + + + + + A combination of AddServiceFlag values: + \r\n0x1 - asfAllowPendingRegistration + \r\n0x2 - asfAllowOnlineRegistration + \r\n0x4 - asfRegisterServiceWithAU + + + + + The path of the Microsoft signed local cabinet file (.cab) that has the information that is required for a service registration. If empty, the update agent searches for the authorization cabinet file (.cab) during service registration when a network connection is available. + + + + + Register Microsoft Update Service Manager - '7971f918-a847-4430-9279-4a52d1efe18d' + + + + + Name under which it will be registered Windows Update offline service. Default name is 'Offline Sync Service'. + + + + + Path to Windows Update offline scan file (wsusscan.cab or wsusscn2.cab). + + + + + Don't return output. + + + + + Debuger return original exceptions. + + + + + Begin + + + + + Process + + + + + End + + + + + Stop + + + + + Enable firewall rules for PSWindowsUpdate remoting. + Use Enable-WURemoting cmdlet to enable nessesery firewall rules for PSWindowsUpdate remoting. + + Author Blog + + + Enable firewall rules for PSWindowsUpdate remoting. + + Enable-WURemoting -Verbose + + + + + + Specify one or more computer names for remote connection. + + + + + Specify alternative credential. + + + + + Set LocalAccountTokenFilterPolicy registry entry to builds an elevated token on the target remote computer. + + + + + Enable WinRM Public access from all subnets. Default access is only enabled from local subnet. Required for workgroup computers. + + + + + Debuger return original exceptions. + + + + + Begin + + + + + Process + + + + + End + + + + + Stop + + + + + Get list of available updates meeting the criteria. + Use Get-WindowsUpdate (aka Get-WUList) cmdlet to get list of available or installed updates meeting specific criteria. + Use Download-WindowsUpdate alias to get list of updates and download it. Equivalent Get-WindowsUpdate -Download. + Use Install-WindowsUpdate (aka Get-WUInstall) alias to get list of updates and install it. Equivalent Get-WindowsUpdate -Install. + Use Hide-WindowsUpdate alias to get list of updates and hide it. Equivalent Get-WindowsUpdate -Hide. + Use Show-WindowsUpdate (aka UnHide-WindowsUpdate) alias to get list of updates and unhide it. Equivalent Get-WindowsUpdate -Hide:$false. + There are two types of filtering update: Pre search criteria, Post search criteria. + - Pre search works on server side, like example: (IsInstalled = 0 and IsHidden = 0 and CategoryIds contains '0fa1201d-4330-4fa8-8ae9-b877473b6441' ) + - Post search work on client side after get the pre-filtered list of updates, like example $KBArticleID -match $Update.KBArticleIDs + Status info list:\r\n[A|R]DIMHUB\r\nA-IsAccetped\r\nR-IsRejected\r\n D-IsDownloaded\r\n F-DownloadFailed\r\n ?-IsInvoked\r\n I-IsInstalled\r\n F-InstallFailed\r\n ?-IsInvoked\r\n R-RebootRequired\r\n M-IsMandatory\r\n H-IsHidden\r\n U-IsUninstallable\r\n B-IsBeta + + Author Blog + + + Get windows updates available from default service manager. + + Get-WindowsUpdate -Verbose + + VERBOSE: MG-PC: Connecting to Windows Server Update Service server. Please wait... + VERBOSE: Found[4] Updates in pre search criteria + VERBOSE: Found[4] Updates in post search criteria + + ComputerName Status KB Size Title + ------------ ------ -- ---- ----- + MG-PC ------- KB890830 44MB Narzędzie Windows do usuwania złośliwego oprogramowania dla systemów Window... + MG-PC ------- KB4034658 1GB 2017-08 Aktualizacja zbiorcza dla systemu Windows 10 Version 1607 dla syste... + MG-PC ------- KB4034662 21MB 2017-08 Aktualizacja zabezpieczeń Adobe Flash Player w Windows 10 Version 1... + MG-PC ------- KB4035631 11MB 2017-08 Aktualizacja Windows 10 Version 1607 dla systemów opartych na archi... + + + + + Get all installed drivers that are available at Windows Update. Additionaly show pre search criteria. + + Get-WindowsUpdate -WindowsUpdate -UpdateType Driver -IsInstalled -ShowPreSearchCriteria -Verbose + + PreSearchCriteria: IsInstalled = 0 and Type = 'Driver' and IsHidden = 0 + VERBOSE: MG-PC: Connecting to Windows Update server.Please wait... + VERBOSE: Found[1] Updates in pre search criteria + VERBOSE: Found[1] Updates in post search criteria + + ComputerName Status KB Size Title + ------------ ------ -- ---- ----- + MGAJDALAP3 -DI---- 3MB Intel - Other hardware - Intel(R) Watchdog Timer Driver (Intel(R) WDT) + + + + + Get all available update on remote machine MG-PC, that contains in Title this two words 'Aktualizacja' and 'Windows 10' (as regular expression). + + Get-WindowsUpdate -ComputerName MG-PC -MicrosoftUpdate -Title "Aktualizacja.*Windows 10" -Verbose + + VERBOSE: MG-PC: Connecting to Microsoft Update server. Please wait... + VERBOSE: Found[14] Updates in pre search criteria + VERBOSE: Found[5] Updates in post search criteria + + ComputerName Status KB Size Title + ------------ ------ -- ---- ----- + MG-PC ------- KB3150513 2MB 2017-06 Aktualizacja Windows 10 Version 1607 dla systemów opartych na archi... + MG-PC ------- KB4034658 1GB 2017-08 Aktualizacja zbiorcza dla systemu Windows 10 Version 1607 dla syste... + MG-PC ------- KB4034662 21MB 2017-08 Aktualizacja zabezpieczeń Adobe Flash Player w Windows 10 Version 1... + MG-PC ------- KB4035631 11MB 2017-08 Aktualizacja Windows 10 Version 1607 dla systemów opartych na archi... + MG-PC ------- KB4033637 4MB Aktualizacja systemu Windows 10 Version 1607 dla komputerów z procesorami x... + + + + + Hide update with KBArticleID: KB4034658. + + Get-WindowsUpdate -KBArticleID KB4034658 -Hide -Verbose + or use alias + Hide-WindowsUpdate -KBArticleID KB4034658 -Verbose + + VERBOSE: MG-PC: Connecting to Windows Server Update Service server. Please wait... + VERBOSE: Found[4] Updates in pre search criteria + VERBOSE: Found[1] Updates in post search criteria + + Confirm + Are you sure you want to perform this action? + Performing the operation "Hide 2017-08 Aktualizacja zbiorcza dla systemu Windows 10 Version 1607 dla systemów opartych na architekturze x64 (KB4034658)[1GB]" on target "MG-PC". + [Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): Y + + ComputerName Status KB Size Title + ------------ ------ -- ---- ----- + MG-PC ---H-- KB4034658 1GB 2017-08 Aktualizacja zbiorcza dla systemu Windows 10 Version 1607 dla syste... + + + + + Unhide update with KBArticleID: KB4034658. + + Get-WindowsUpdate -KBArticleID KB4034658 -WithHidden -Hide:$false -Verbose + or use alias + Show-WindowsUpdate -KBArticleID KB4034658 -Verbose + + VERBOSE: MG-PC: Connecting to Windows Server Update Service server. Please wait... + VERBOSE: Found[4] Updates in pre search criteria + VERBOSE: Found[1] Updates in post search criteria + + Confirm + Are you sure you want to perform this action? + Performing the operation "Show 2017-08 Aktualizacja zbiorcza dla systemu Windows 10 Version 1607 dla systemów opartych na architekturze x64 (KB4034658)[1GB]" on target "MG-PC". + [Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): Y + + ComputerName Status KB Size Title + ------------ ------ -- ---- ----- + MG-PC ------ KB4034658 1GB 2017-08 Aktualizacja zbiorcza dla systemu Windows 10 Version 1607 dla syste... + + + + + Schedule job at 6:00 PM to install update with UpdateId='ddb74579-7a1f-4d1f-80c8-e8647055314e' and RevisionNumber=200. Update will be automaticaly accepted and after all serwer will be automaticaly restarted if needed. + + Get-WindowsUpdate -MicrosoftUpdate -UpdateID ddb74579-7a1f-4d1f-80c8-e8647055314e -RevisionNumber 200 -ScheduleJob (Get-Date -Hour 18 -Minute 0 -Second 0) -Install -AcceptAll -AutoReboot -Verbose + or use alias + Install-WindowsUpdate -MicrosoftUpdate -UpdateID ddb74579-7a1f-4d1f-80c8-e8647055314e -RevisionNumber 200 -ScheduleJob (Get-Date -Hour 18 -Minute 0 -Second 0) -AcceptAll -AutoReboot -Verbose + + VERBOSE: MG-PC: Connecting to Microsoft Update server. Please wait... + VERBOSE: Found[1] Updates in pre search criteria + VERBOSE: Found[1] Updates in post search criteria + VERBOSE: Choosed pre Search Criteria: (UpdateID = 'ddb74579-7a1f-4d1f-80c8-e8647055314e' and RevisionNumber = 200) + + X ComputerName Result KB Size Title + - ------------ ------ -- ---- ----- + 1 MG-PC Accepted KB4023307 13MB Microsoft Silverlight(KB4023307) + VERBOSE: Accepted[1] Updates ready to Download + VERBOSE: Invoke-WUJob: MG-PC(31.08.2017 18:00:00): + VERBOSE: powershell.exe -Command "Get-WindowsUpdate -Criteria \"(UpdateID = 'ddb74579-7a1f-4d1f-80c8-e8647055314e' and RevisionNumber = 200)\" -AcceptAll -AutoReboot -Download -Install -MicrosoftUpdate -Verbose *>&1 | Out-File $Env:TEMP\PSWindowsUpdate.log" + + + + + Install updates on remote computer. After all send a report from the installation process. + + Install-WindowsUpdate -ComputerName MG-PC -MicrosoftUpdate -AcceptAll -AutoReboot -SendReport -PSWUSettings @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";Port=25} -Verbose + or use global PSWUSettings + @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";Port=25} | Export-Clixml -Path 'C:\Program Files\WindowsPowerShell\Modules\PSWindowsUpdate\PSWUSettings.xml' + Install-WindowsUpdate -ComputerName MG-PC -MicrosoftUpdate -AcceptAll -AutoReboot -SendReport -Verbose + + VERBOSE: MG-PC: Connecting to Microsoft Update server. Please wait... + VERBOSE: Found[4] Updates in pre search criteria + VERBOSE: Found[4] Updates in post search criteria + + Confirm + Are you sure you want to perform this action? + Performing the operation "Microsoft Silverlight (KB4023307)[13MB]" on target "MG-PC". + [Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): Y + + Confirm + Are you sure you want to perform this action? + Performing the operation "2017-06 Aktualizacja Windows 10 Version 1607 dla systemów opartych na architekturze x64 (KB3150513)[2MB]" on target "MG-PC". + [Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): Y + + Confirm + Are you sure you want to perform this action? + Performing the operation "Aktualizacja pakietu językowego usługi Microsoft Dynamics 365 2.1[47MB]" on target "MG-PC". + [Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): L + + X ComputerName Result KB Size Title + - ------------ ------ -- ---- ----- + 1 MG-PC Accepted KB4023307 13MB Microsoft Silverlight (KB4023307) + 1 MG-PC Accepted KB3150513 2MB 2017-06 Aktualizacja Windows 10 Version 1607 dla systemów opartych na arc... + 1 MG-PC Rejected KB4013759 47MB Aktualizacja pakietu językowego usługi Microsoft Dynamics 365 2.1 + 1 MG-PC Rejected KB3186568 67MB Program Microsoft .NET Framework 4.7 w syst. Windows 10 Version 1607 i Wi... + VERBOSE: Accepted [2] + Updates ready to Download + VERBOSE: Invoke-WUJob: MG-PC (Now): + VERBOSE: powershell.exe -Command "Get-WindowsUpdate -Criteria \"(UpdateID = 'ddb74579-7a1f-4d1f-80c8-e8647055314e' and RevisionNumber = 200) or (UpdateID = '151c4402-513c-4f39-8da1-f84d0956b5e3' and RevisionNumber = 200)\" -AcceptAll -Download -Install -AutoReboot -MicrosoftUpdate -SendReport -ProofOfLife -Verbose *>&1 | Out-File $Env:TEMP\PSWindowsUpdate.log" + + + + + Schedule Job to install all available updates and automatically reboot system if needed. Also send report after installation (but before reboot if needed) and send second instalation history report after reboot. + + @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";Port=25} | Export-Clixml -Path 'C:\Program Files\WindowsPowerShell\Modules\PSWindowsUpdate\PSWUSettings.xml' + Install-WindowsUpdate -MicrosoftUpdate -SendReport -SendHistory -AcceptAll -AutoReboot -ScheduleJob (Get-Date -Hour 18 -Minute 30 -Second 0) -ComputerName MG-PC -Verbose + + VERBOSE: MG-PC: Connecting to Microsoft Update server. Please wait... + VERBOSE: Found[4] Updates in pre search criteria + VERBOSE: Found[4] Updates in post search criteria + + X ComputerName Result KB Size Title + - ------------ ------ -- ---- ----- + 1 MG-PC Accepted KB3038936 5MB Aktualizacja systemu Windows 8.1 dla komputerów z procesorami x64(KB3038... + 1 MG-PC Accepted KB3186606 4MB Pakiety językowe programu Microsoft.NET Framework 4.7 w syst. Windows 8.... + 1 MG-PC Accepted KB4035038 53MB Sierpień 2017: wersja zapozn. pak.zb.aktual.jakości dla pr. .NET Frame... + 1 MG-PC Accepted KB2267602 309MB Aktualizacja definicji dla: Windows Defender — KB2267602 (Definicja 1.251... + VERBOSE: Accepted[4] Updates ready to Download + VERBOSE: Invoke-WUJob: MG-PC (02.09.2017 08:30:00): + VERBOSE: powershell.exe -Command "Get-WindowsUpdate -Criteria \"(UpdateID = 'e69c9679-7ce8-489a-a21c-62fb920be67a' and RevisionNumber = 201) or(UpdateID = 'de44604d-ec38-4a7f-ac63-28b3edfdb382' and RevisionNumber = 207) or(UpdateID = '9cf1d8c9-a7c3-4603-90e8-f22131ff6d7e' and RevisionNumber = 201) or(UpdateID = 'b51935f9-0e40-4624-9c26-b29bff92dcf9' and RevisionNumber = 200)\" -AcceptAll -Install -AutoReboot -MicrosoftUpdate -SendReport -SendHistory -Verbose *>&1 | Out-File $Env:TEMP\PSWindowsUpdate.log" + VERBOSE: Send report + + + + + + Specify one or more computer names for remote connection. Interactive remote connection works only for checking updates. For download or install cmdlet creates an Invoke-WUJob task. + + + + + Specify alternative credential. + + + + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file (more preferred) in ModuleBase path. + + + + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: + \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: + \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + + + + Send install history (Get-WUHistory) report after successful update installation or system startup. + + + + + Specify time when job will start. + + + + + Do not ask confirmation for updates. Download or Install all available updates. + + + + + Specify number of cycles for check updates after successful update installation or system startup. First run is always main cycle (-RecurseCycle 1 or none). Second (-RecurseCycle 2) and n (-RecurseCycle n) cycle are recursive. + + + + + Get list of updates and hide/unhide approved updates. + + + + + Get list of updates and download approved updates, but do not install it. + + + + + Forces the download of updates that are already installed or that cannot be installed. Works only with -Download. + + + + + Get list of updates and install approved updates. + + + + + A forced installation is an installation in which an update is installed even if the metadata indicates that the update is already installed. Before you use ForceInstall to force an installation, determine whether the update is installed and available. If an update is not installed, a forced installation fails. Works only with -Install. + + + + + Do not ask for reboot if it needed. + + + + + Do not ask for reboot if it needed, but do not reboot automaticaly. + + + + + Specify time when system will be rebooted. + + + + + Use specific Service Manager if it's available. + Examples Of ServiceID: + \r\n + \r\n -- Windows Update 9482f4b4-e343-43b6-b170-9a65bc822c77 + \r\n -- Microsoft Update 7971f918-a847-4430-9279-4a52d1efe18d + \r\n -- Windows Store 117cab2d-82b1-4b5a-a08c-4d62dbee7782 + \r\n -- Windows Server Update Service 3da21691-e39d-4da6-8a4b-b43877bcb1b7 + + + + + Use Microsoft Update Service Manager - '7971f918-a847-4430-9279-4a52d1efe18d' + + + + + Use Windows Update Service Manager - '9482f4b4-e343-43b6-b170-9a65bc822c77' + + + + + Pre search criteria - native for WUAPI. Set own string that specifies the search criteria. https://docs.microsoft.com/pl-pl/windows/desktop/api/wuapi/nf-wuapi-iupdatesearcher-search + + + + + Pre search criteria - native for WUAPI. Finds updates with a specific type, such as 'Driver' and 'Software'. Default value contains all updates. + + + + + Pre search criteria - native for WUAPI. Finds updates that are deployed for a specific action, such as an installation or uninstallation that the administrator of a server specifies. "DeploymentAction='Installation'" finds updates that are deployed for installation on a destination computer. "DeploymentAction='Uninstallation'" depends on the other query criteria. + "DeploymentAction='Uninstallation'" finds updates that are deployed for uninstallation on a destination computer. "DeploymentAction='Uninstallation'" depends on the other query criteria. + If this criterion is not explicitly specified, each group of criteria that is joined to an AND operator implies "DeploymentAction='Installation'". + + + + + Pre search criteria - native for WUAPI. Finds updates that are intended for deployment by Automatic Updates. "IsAssigned=1" finds updates that are intended for deployment by Automatic Updates, which depends on the other query criteria.At most, one assigned Windows-based driver update is returned for each local device on a destination computer. + "IsAssigned=0" finds updates that are not intended to be deployed by Automatic Updates. + + + + + Pre search criteria - native for WUAPI. When set to 1, finds updates that are present on a computer. + "IsPresent=1" finds updates that are present on a destination computer.If the update is valid for one or more products, the update is considered present if it is installed for one or more of the products. + "IsPresent=0" finds updates that are not installed for any product on a destination computer. + + + + + Pre search criteria - native for WUAPI. "BrowseOnly=1" finds updates that are considered optional. "BrowseOnly=0" finds updates that are not considered optional. + + + + + Pre search criteria - native for WUAPI. Finds updates where the AutoSelectOnWebSites property has the specified value. + "AutoSelectOnWebSites=1" finds updates that are flagged to be automatically selected by Windows Update. + "AutoSelectOnWebSites=0" finds updates that are not flagged for Automatic Updates. + + + + + Pre search criteria - native for WUAPI. Finds updates with a specific UUID (or sets of UUIDs), such as '12345678-9abc-def0-1234-56789abcdef0'. + + + + + Pre search criteria - native for WUAPI. Finds updates without a specific UUID (or sets of UUIDs), such as '12345678-9abc-def0-1234-56789abcdef0'. + + + + + Pre search criteria - native for WUAPI. Finds updates with a specific RevisionNumber, such as '100'. This criterion must be combined with the UpdateID param. + + + + + Pre search criteria - native for WUAPI. Finds updates that belong to a specified category (or sets of UUIDs), such as '0fa1201d-4330-4fa8-8ae9-b877473b6441'. + + + + + Pre search criteria - native for WUAPI. Finds updates that are installed on the destination computer. + + + + + Pre search criteria - native for WUAPI. Finds updates that are marked as hidden on the destination computer. Default search criteria is only not hidden upadates. + + + + + Pre search criteria - native for WUAPI. Finds updates that are both hidden and not on the destination computer. Overwrite IsHidden param. Default search criteria is only not hidden upadates. + + + + + Show choosen search criteria. Only works for pre search criteria. + + + + + Post search criteria. Finds updates that contain a specified category name (or sets of categories name), such as 'Updates', 'Security Updates', 'Critical Updates', etc... + + + + + Post search criteria. Finds updates that contain a KBArticleID (or sets of KBArticleIDs), such as 'KB982861'. + + + + + Post search criteria. Finds updates that match part of title (case sensitive), such as '.NET Framework 4'. + + + + + Post search criteria. Finds updates that match part of severity, such as 'Important', 'Critical', 'Moderate', etc... + + + + + Post search criteria. Finds updates that not contain a specified category name (or sets of categories name), such as 'Updates', 'Security Updates', 'Critical Updates', etc... + + + + + Post search criteria. Finds updates that not contain a KBArticleID (or sets of KBArticleIDs), such as 'KB982861'. + + + + + Post search criteria. Finds updates that not match part of title (case sensitive). + + + + + Post search criteria. Finds updates that not match part of severity. + + + + + Post search criteria. Finds updates that the installation or uninstallation of an update can't prompt for user input. + + + + + Post search criteria. Finds updates that specifies the restart behavior that not occurs when you install or uninstall the update. + + + + + Install only the updates that have status AutoSelectOnWebsites on true. + + + + + Post search criteria. Finds updates that have MaxDownloadSize less or equal. Size is in Bytes. + + + + + Post search criteria. Finds updates that have MaxDownloadSize greater or equal. Size is in Bytes. + + + + + Debuger return original exceptions. For additional debug information use $DebugPreference = "Continue" + + + + + Begin + + + + + Process + + + + + End + + + + + Stop + + + + + Get list of available updates meeting the criteria. + Use Get-WindowsUpdate (aka Get-WUList) cmdlet to get list of available or installed updates meeting specific criteria. + Use Download-WindowsUpdate alias to get list of updates and download it. Equivalent Get-WindowsUpdate -Download. + Use Install-WindowsUpdate (aka Get-WUInstall) alias to get list of updates and install it. Equivalent Get-WindowsUpdate -Install. + Use Hide-WindowsUpdate alias to get list of updates and hide it. Equivalent Get-WindowsUpdate -Hide. + Use Show-WindowsUpdate (aka UnHide-WindowsUpdate) alias to get list of updates and unhide it. Equivalent Get-WindowsUpdate -Hide:$false. + There are two types of filtering update: Pre search criteria, Post search criteria. + - Pre search works on server side, like example: (IsInstalled = 0 and IsHidden = 0 and CategoryIds contains '0fa1201d-4330-4fa8-8ae9-b877473b6441' ) + - Post search work on client side after get the pre-filtered list of updates, like example $KBArticleID -match $Update.KBArticleIDs + Status info list:\r\n[A|R]DIMHUB\r\nA-IsAccetped\r\nR-IsRejected\r\n D-IsDownloaded\r\n F-DownloadFailed\r\n ?-IsInvoked\r\n I-IsInstalled\r\n F-InstallFailed\r\n ?-IsInvoked\r\n R-RebootRequired\r\n M-IsMandatory\r\n H-IsHidden\r\n U-IsUninstallable\r\n B-IsBeta + + Author Blog + + + Get windows updates available from default service manager. + + Get-WindowsUpdate -Verbose + + VERBOSE: MG-PC: Connecting to Windows Server Update Service server. Please wait... + VERBOSE: Found[4] Updates in pre search criteria + VERBOSE: Found[4] Updates in post search criteria + + ComputerName Status KB Size Title + ------------ ------ -- ---- ----- + MG-PC ------- KB890830 44MB Narzędzie Windows do usuwania złośliwego oprogramowania dla systemów Window... + MG-PC ------- KB4034658 1GB 2017-08 Aktualizacja zbiorcza dla systemu Windows 10 Version 1607 dla syste... + MG-PC ------- KB4034662 21MB 2017-08 Aktualizacja zabezpieczeń Adobe Flash Player w Windows 10 Version 1... + MG-PC ------- KB4035631 11MB 2017-08 Aktualizacja Windows 10 Version 1607 dla systemów opartych na archi... + + + + + Get all installed drivers that are available at Windows Update. Additionaly show pre search criteria. + + Get-WindowsUpdate -WindowsUpdate -UpdateType Driver -IsInstalled -ShowPreSearchCriteria -Verbose + + PreSearchCriteria: IsInstalled = 0 and Type = 'Driver' and IsHidden = 0 + VERBOSE: MG-PC: Connecting to Windows Update server.Please wait... + VERBOSE: Found[1] Updates in pre search criteria + VERBOSE: Found[1] Updates in post search criteria + + ComputerName Status KB Size Title + ------------ ------ -- ---- ----- + MGAJDALAP3 -DI---- 3MB Intel - Other hardware - Intel(R) Watchdog Timer Driver (Intel(R) WDT) + + + + + Get all available update on remote machine MG-PC, that contains in Title this two words 'Aktualizacja' and 'Windows 10' (as regular expression). + + Get-WindowsUpdate -ComputerName MG-PC -MicrosoftUpdate -Title "Aktualizacja.*Windows 10" -Verbose + + VERBOSE: MG-PC: Connecting to Microsoft Update server. Please wait... + VERBOSE: Found[14] Updates in pre search criteria + VERBOSE: Found[5] Updates in post search criteria + + ComputerName Status KB Size Title + ------------ ------ -- ---- ----- + MG-PC ------- KB3150513 2MB 2017-06 Aktualizacja Windows 10 Version 1607 dla systemów opartych na archi... + MG-PC ------- KB4034658 1GB 2017-08 Aktualizacja zbiorcza dla systemu Windows 10 Version 1607 dla syste... + MG-PC ------- KB4034662 21MB 2017-08 Aktualizacja zabezpieczeń Adobe Flash Player w Windows 10 Version 1... + MG-PC ------- KB4035631 11MB 2017-08 Aktualizacja Windows 10 Version 1607 dla systemów opartych na archi... + MG-PC ------- KB4033637 4MB Aktualizacja systemu Windows 10 Version 1607 dla komputerów z procesorami x... + + + + + Hide update with KBArticleID: KB4034658. + + Get-WindowsUpdate -KBArticleID KB4034658 -Hide -Verbose + or use alias + Hide-WindowsUpdate -KBArticleID KB4034658 -Verbose + + VERBOSE: MG-PC: Connecting to Windows Server Update Service server. Please wait... + VERBOSE: Found[4] Updates in pre search criteria + VERBOSE: Found[1] Updates in post search criteria + + Confirm + Are you sure you want to perform this action? + Performing the operation "Hide 2017-08 Aktualizacja zbiorcza dla systemu Windows 10 Version 1607 dla systemów opartych na architekturze x64 (KB4034658)[1GB]" on target "MG-PC". + [Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): Y + + ComputerName Status KB Size Title + ------------ ------ -- ---- ----- + MG-PC ---H-- KB4034658 1GB 2017-08 Aktualizacja zbiorcza dla systemu Windows 10 Version 1607 dla syste... + + + + + Unhide update with KBArticleID: KB4034658. + + Get-WindowsUpdate -KBArticleID KB4034658 -WithHidden -Hide:$false -Verbose + or use alias + Show-WindowsUpdate -KBArticleID KB4034658 -Verbose + + VERBOSE: MG-PC: Connecting to Windows Server Update Service server. Please wait... + VERBOSE: Found[4] Updates in pre search criteria + VERBOSE: Found[1] Updates in post search criteria + + Confirm + Are you sure you want to perform this action? + Performing the operation "Show 2017-08 Aktualizacja zbiorcza dla systemu Windows 10 Version 1607 dla systemów opartych na architekturze x64 (KB4034658)[1GB]" on target "MG-PC". + [Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): Y + + ComputerName Status KB Size Title + ------------ ------ -- ---- ----- + MG-PC ------ KB4034658 1GB 2017-08 Aktualizacja zbiorcza dla systemu Windows 10 Version 1607 dla syste... + + + + + Schedule job at 6:00 PM to install update with UpdateId='ddb74579-7a1f-4d1f-80c8-e8647055314e' and RevisionNumber=200. Update will be automaticaly accepted and after all serwer will be automaticaly restarted if needed. + + Get-WindowsUpdate -MicrosoftUpdate -UpdateID ddb74579-7a1f-4d1f-80c8-e8647055314e -RevisionNumber 200 -ScheduleJob (Get-Date -Hour 18 -Minute 0 -Second 0) -Install -AcceptAll -AutoReboot -Verbose + or use alias + Install-WindowsUpdate -MicrosoftUpdate -UpdateID ddb74579-7a1f-4d1f-80c8-e8647055314e -RevisionNumber 200 -ScheduleJob (Get-Date -Hour 18 -Minute 0 -Second 0) -AcceptAll -AutoReboot -Verbose + + VERBOSE: MG-PC: Connecting to Microsoft Update server. Please wait... + VERBOSE: Found[1] Updates in pre search criteria + VERBOSE: Found[1] Updates in post search criteria + VERBOSE: Choosed pre Search Criteria: (UpdateID = 'ddb74579-7a1f-4d1f-80c8-e8647055314e' and RevisionNumber = 200) + + X ComputerName Result KB Size Title + - ------------ ------ -- ---- ----- + 1 MG-PC Accepted KB4023307 13MB Microsoft Silverlight(KB4023307) + VERBOSE: Accepted[1] Updates ready to Download + VERBOSE: Invoke-WUJob: MG-PC(31.08.2017 18:00:00): + VERBOSE: powershell.exe -Command "Get-WindowsUpdate -Criteria \"(UpdateID = 'ddb74579-7a1f-4d1f-80c8-e8647055314e' and RevisionNumber = 200)\" -AcceptAll -AutoReboot -Download -Install -MicrosoftUpdate -Verbose *>&1 | Out-File $Env:TEMP\PSWindowsUpdate.log" + + + + + Install updates on remote computer. After all send a report from the installation process. + + Install-WindowsUpdate -ComputerName MG-PC -MicrosoftUpdate -AcceptAll -AutoReboot -SendReport -PSWUSettings @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";Port=25} -Verbose + or use global PSWUSettings + @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";Port=25} | Export-Clixml -Path 'C:\Program Files\WindowsPowerShell\Modules\PSWindowsUpdate\PSWUSettings.xml' + Install-WindowsUpdate -ComputerName MG-PC -MicrosoftUpdate -AcceptAll -AutoReboot -SendReport -Verbose + + VERBOSE: MG-PC: Connecting to Microsoft Update server. Please wait... + VERBOSE: Found[4] Updates in pre search criteria + VERBOSE: Found[4] Updates in post search criteria + + Confirm + Are you sure you want to perform this action? + Performing the operation "Microsoft Silverlight (KB4023307)[13MB]" on target "MG-PC". + [Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): Y + + Confirm + Are you sure you want to perform this action? + Performing the operation "2017-06 Aktualizacja Windows 10 Version 1607 dla systemów opartych na architekturze x64 (KB3150513)[2MB]" on target "MG-PC". + [Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): Y + + Confirm + Are you sure you want to perform this action? + Performing the operation "Aktualizacja pakietu językowego usługi Microsoft Dynamics 365 2.1[47MB]" on target "MG-PC". + [Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): L + + X ComputerName Result KB Size Title + - ------------ ------ -- ---- ----- + 1 MG-PC Accepted KB4023307 13MB Microsoft Silverlight (KB4023307) + 1 MG-PC Accepted KB3150513 2MB 2017-06 Aktualizacja Windows 10 Version 1607 dla systemów opartych na arc... + 1 MG-PC Rejected KB4013759 47MB Aktualizacja pakietu językowego usługi Microsoft Dynamics 365 2.1 + 1 MG-PC Rejected KB3186568 67MB Program Microsoft .NET Framework 4.7 w syst. Windows 10 Version 1607 i Wi... + VERBOSE: Accepted [2] + Updates ready to Download + VERBOSE: Invoke-WUJob: MG-PC (Now): + VERBOSE: powershell.exe -Command "Get-WindowsUpdate -Criteria \"(UpdateID = 'ddb74579-7a1f-4d1f-80c8-e8647055314e' and RevisionNumber = 200) or (UpdateID = '151c4402-513c-4f39-8da1-f84d0956b5e3' and RevisionNumber = 200)\" -AcceptAll -Download -Install -AutoReboot -MicrosoftUpdate -SendReport -ProofOfLife -Verbose *>&1 | Out-File $Env:TEMP\PSWindowsUpdate.log" + + + + + Schedule Job to install all available updates and automatically reboot system if needed. Also send report after installation (but before reboot if needed) and send second instalation history report after reboot. + + Set-PSWUSettings -SmtpServer smtp.office365.com -SmtpPort 587 -SmtpEnableSsl $true -SmtpSubject "PSWindowsUpdate Report" -SmtpTo mgajda@psmvp.pl -SmtpFrom mgajda@psmvp.pl -SmtpCredential (Get-Credential mgajda@psmvp.pl) + Install-WindowsUpdate -MicrosoftUpdate -SendReport -SendHistory -AcceptAll -AutoReboot -ScheduleJob (Get-Date -Hour 18 -Minute 30 -Second 0) -ComputerName MG-PC -Verbose + + VERBOSE: MG-PC: Connecting to Microsoft Update server. Please wait... + VERBOSE: Found[4] Updates in pre search criteria + VERBOSE: Found[4] Updates in post search criteria + + X ComputerName Result KB Size Title + - ------------ ------ -- ---- ----- + 1 MG-PC Accepted KB3038936 5MB Aktualizacja systemu Windows 8.1 dla komputerów z procesorami x64(KB3038... + 1 MG-PC Accepted KB3186606 4MB Pakiety językowe programu Microsoft.NET Framework 4.7 w syst. Windows 8.... + 1 MG-PC Accepted KB4035038 53MB Sierpień 2017: wersja zapozn. pak.zb.aktual.jakości dla pr. .NET Frame... + 1 MG-PC Accepted KB2267602 309MB Aktualizacja definicji dla: Windows Defender — KB2267602 (Definicja 1.251... + VERBOSE: Accepted[4] Updates ready to Download + VERBOSE: Invoke-WUJob: MG-PC (02.09.2017 08:30:00): + VERBOSE: powershell.exe -Command "Get-WindowsUpdate -Criteria \"(UpdateID = 'e69c9679-7ce8-489a-a21c-62fb920be67a' and RevisionNumber = 201) or(UpdateID = 'de44604d-ec38-4a7f-ac63-28b3edfdb382' and RevisionNumber = 207) or(UpdateID = '9cf1d8c9-a7c3-4603-90e8-f22131ff6d7e' and RevisionNumber = 201) or(UpdateID = 'b51935f9-0e40-4624-9c26-b29bff92dcf9' and RevisionNumber = 200)\" -AcceptAll -Install -AutoReboot -MicrosoftUpdate -SendReport -SendHistory -Verbose *>&1 | Out-File $Env:TEMP\PSWindowsUpdate.log" + VERBOSE: Send report + + + + + + Specify one or more computer names for remote connection. Interactive remote connection works only for checking updates. For download or install cmdlet creates an Invoke-WUJob task. + + + + + Specify alternative credential. + + + + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file (more preferred) in ModuleBase path. + + + + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: + \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: + \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + + + + Send install history (Get-WUHistory) report after successful update installation or system startup. + + + + + Specify time when job will start. + + + + + Do not ask confirmation for updates. Download or Install all available updates. + + + + + Specify number of cycles for check updates after successful update installation or system startup. First run is always main cycle (-RecurseCycle 1 or none). Second (-RecurseCycle 2) and n (-RecurseCycle n) cycle are recursive. + + + + + Get list of updates and hide/unhide approved updates. + + + + + Get list of updates and download approved updates, but do not install it. + + + + + Forces the download of updates that are already installed or that cannot be installed. Works only with -Download. + + + + + Get list of updates and install approved updates. + + + + + A forced installation is an installation in which an update is installed even if the metadata indicates that the update is already installed. Before you use ForceInstall to force an installation, determine whether the update is installed and available. If an update is not installed, a forced installation fails. Works only with -Install. + + + + + Do not ask for reboot if it needed. + + + + + Do not ask for reboot if it needed, but do not reboot automaticaly. + + + + + Specify time when system will be rebooted. + + + + + Use specific Service Manager if it's available. + Examples Of ServiceID: + \r\n + \r\n -- Windows Update 9482f4b4-e343-43b6-b170-9a65bc822c77 + \r\n -- Microsoft Update 7971f918-a847-4430-9279-4a52d1efe18d + \r\n -- Windows Store 117cab2d-82b1-4b5a-a08c-4d62dbee7782 + \r\n -- Windows Server Update Service 3da21691-e39d-4da6-8a4b-b43877bcb1b7 + + + + + Use Microsoft Update Service Manager - '7971f918-a847-4430-9279-4a52d1efe18d' + + + + + Use Windows Update Service Manager - '9482f4b4-e343-43b6-b170-9a65bc822c77' + + + + + Pre search criteria - native for WUAPI. Set own string that specifies the search criteria. https://docs.microsoft.com/pl-pl/windows/desktop/api/wuapi/nf-wuapi-iupdatesearcher-search + + + + + Pre search criteria - native for WUAPI. Finds updates with a specific type, such as 'Driver' and 'Software'. Default value contains all updates. + + + + + Pre search criteria - native for WUAPI. Finds updates that are deployed for a specific action, such as an installation or uninstallation that the administrator of a server specifies. "DeploymentAction='Installation'" finds updates that are deployed for installation on a destination computer. "DeploymentAction='Uninstallation'" depends on the other query criteria. + "DeploymentAction='Uninstallation'" finds updates that are deployed for uninstallation on a destination computer. "DeploymentAction='Uninstallation'" depends on the other query criteria. + If this criterion is not explicitly specified, each group of criteria that is joined to an AND operator implies "DeploymentAction='Installation'". + + + + + Pre search criteria - native for WUAPI. Finds updates that are intended for deployment by Automatic Updates. "IsAssigned=1" finds updates that are intended for deployment by Automatic Updates, which depends on the other query criteria.At most, one assigned Windows-based driver update is returned for each local device on a destination computer. + "IsAssigned=0" finds updates that are not intended to be deployed by Automatic Updates. + + + + + Pre search criteria - native for WUAPI. When set to 1, finds updates that are present on a computer. + "IsPresent=1" finds updates that are present on a destination computer.If the update is valid for one or more products, the update is considered present if it is installed for one or more of the products. + "IsPresent=0" finds updates that are not installed for any product on a destination computer. + + + + + Pre search criteria - native for WUAPI. "BrowseOnly=1" finds updates that are considered optional. "BrowseOnly=0" finds updates that are not considered optional. + + + + + Pre search criteria - native for WUAPI. Finds updates where the AutoSelectOnWebSites property has the specified value. + "AutoSelectOnWebSites=1" finds updates that are flagged to be automatically selected by Windows Update. + "AutoSelectOnWebSites=0" finds updates that are not flagged for Automatic Updates. + + + + + Pre search criteria - native for WUAPI. Finds updates with a specific UUID (or sets of UUIDs), such as '12345678-9abc-def0-1234-56789abcdef0'. + + + + + Pre search criteria - native for WUAPI. Finds updates without a specific UUID (or sets of UUIDs), such as '12345678-9abc-def0-1234-56789abcdef0'. + + + + + Pre search criteria - native for WUAPI. Finds updates with a specific RevisionNumber, such as '100'. This criterion must be combined with the UpdateID param. + + + + + Pre search criteria - native for WUAPI. Finds updates that belong to a specified category (or sets of UUIDs), such as '0fa1201d-4330-4fa8-8ae9-b877473b6441'. + + + + + Pre search criteria - native for WUAPI. Finds updates that are installed on the destination computer. + + + + + Pre search criteria - native for WUAPI. Finds updates that are marked as hidden on the destination computer. Default search criteria is only not hidden upadates. + + + + + Pre search criteria - native for WUAPI. Finds updates that are both hidden and not on the destination computer. Overwrite IsHidden param. Default search criteria is only not hidden upadates. + + + + + Show choosen search criteria. Only works for pre search criteria. + + + + + Post search criteria. Finds updates that contain a specified root category name 'Critical Updates', 'Definition Updates', 'Drivers', 'Feature Packs', 'Security Updates', 'Service Packs', 'Tools', 'Update Rollups', 'Updates', 'Upgrades', 'Microsoft'. + + + + + Post search criteria. Finds updates that contain a specified category name (or sets of categories name), such as 'Updates', 'Security Updates', 'Critical Updates', etc... + + + + + Post search criteria. Finds updates that contain a KBArticleID (or sets of KBArticleIDs), such as 'KB982861'. + + + + + Post search criteria. Finds updates that match part of title (case sensitive), such as '.NET Framework 4'. + + + + + Post search criteria. Finds updates that match part of severity, such as 'Important', 'Critical', 'Moderate', etc... + + + + + Post search criteria. Finds updates that not contain a specified category name (or sets of categories name), such as 'Updates', 'Security Updates', 'Critical Updates', etc... + + + + + Post search criteria. Finds updates that not contain a KBArticleID (or sets of KBArticleIDs), such as 'KB982861'. + + + + + Post search criteria. Finds updates that not match part of title (case sensitive). + + + + + Post search criteria. Finds updates that not match part of severity. + + + + + Post search criteria. Finds updates that the installation or uninstallation of an update can't prompt for user input. + + + + + Post search criteria. Finds updates that specifies the restart behavior that not occurs when you install or uninstall the update. + + + + + Install only the updates that have status AutoSelectOnWebsites on true. + + + + + Post search criteria. Finds updates that have MaxDownloadSize less or equal. Size is in Bytes. + + + + + Post search criteria. Finds updates that have MaxDownloadSize greater or equal. Size is in Bytes. + + + + + Debuger return original exceptions. For additional debug information use $DebugPreference = "Continue" + + + + + Begin + + + + + Process + + + + + End + + + + + Stop + + + + + Get Windows Update Agent version. + Use Get-WUAPIVersion cmdlet to get Windows Update Agent version. + + Author Blog + + + Get Windows Update Agent version. + + Get-WUAPIVersion + + ComputerName PSWindowsUpdate ApiVersion WuapiDllVersion + ------------ --------------- ---------- --------------- + MG-PC 2.0 8.0 10.0.14393.1670 + + + + + + Specify one or more computer names for remote connection. + + + + + Specify alternative credential. + + + + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + + + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: + \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: + \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + + + + Debuger return original exceptions. + + + + + Begin + + + + + Process + + + + + End + + + + + Stop + + + + + Get list of updates history. + Use function Get-WUHistory to get list of installed updates on specific machine. + + Author Blog + + + Get Windows Update history. + + Get-WUHistory + + ComputerName Operationname Date KB Title + ------------ ------------- ---- -- ----- + MG-PC Installation 30.08.2017 12:03:53 KB2267602 Definition Update for Windows Defender - KB2267602(Defini... + MG-PC Installation 29.08.2017 11:49:50 KB3186568 Microsoft .NET Framework 4.7 for Windows 10 Version 1607 a... + MG-PC Installation 29.08.2017 11:30:37 KB4035631 2017-08 Update for Windows Server 2016 for x64-based Syste... + MG-PC Installation 29.08.2017 11:21:12 KB890830 Windows Malicious Software Removal Tool for Windows 8, 8.1... + MG-PC Installation 29.08.2017 07:53:36 KB2267602 Definition Update for Windows Defender - KB2267602 (Defini... + MG-PC Installation 27.08.2017 07:53:39 KB2267602 Definition Update for Windows Defender - KB2267602 (Defini... + MG-PC Installation 25.08.2017 07:54:38 KB2267602 Definition Update for Windows Defender - KB2267602 (Defini... + MG-PC Installation 23.08.2017 13:01:26 KB2267602 Definition Update for Windows Defender - KB2267602 (Defini... + MG-PC Installation 23.08.2017 12:45:45 KB4023307 Security Update for Microsoft Silverlight (KB4023307) + MG-PC Installation 23.08.2017 07:53:56 KB2267602 Definition Update for Windows Defender - KB2267602 (Defini... + + + + + Get Windows Update Agent history for last 24h. + + Get-WUHistory -MaxDate (Get-Date).AddDays(-1) + + ComputerName Operationname Date KB Title + ------------ ------------- ---- -- ----- + MG-PC Installation 30.08.2017 12:03:53 KB2267602 Definition Update for Windows Defender - KB2267602(Defini... + + + + + + Specify one or more computer names for remote connection. + + + + + Specify alternative credential. + + + + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + + + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: + @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: + Export-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + + + + Filter results by date. + + + + + Last X history entry. + + + + + Debuger return original exceptions. + + + + + Begin + + + + + Process + + + + + End + + + + + Stop + + + + + Get Windows Update Installer status. + Use Get-WUInstallerStatus cmdlet to show Windows Update Installer status. + + Author Blog + + + Check if Windows Update Installer is busy. + + Get-WUInstallerStatus + + ComputerName IsBusy + ------------ ------ + MG-PC False + + + + + Check if Windows Update Installer is busy in silent mode. Return only True (isBusy) or False (isFree). + + Get-WUInstallerStatus -Silent + + False + + + + + + Specify one or more computer names for remote connection. + + + + + Specify alternative credential. + + + + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + + + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: + \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: + \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + + + + Return true/false only. + + + + + Debuger return original exceptions. + + + + + Begin + + + + + Process + + + + + End + + + + + Stop + + + + + Get invoked WUJob. + Use Get-WUJob cmdlet to get invoked WUJob in Task Scheduler. + + Author Blog + + + Get invoked WUJob on remote machine. + + Get-WUJob -ComputerName MG-PC + + + + + + + Specify one or more computer names for remote connection. + + + + + Specify alternative credential. + + + + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + + + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: + \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: + \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + + + + Specify custom name for Task Scheduler job. Default is 'PSWindowsUpdate'. + + + + + Clear expired WUJob. + + + + + Debuger return original exceptions. + + + + + Begin + + + + + Process + + + + + End + + + + + Stop + + + + + Get Windows Update results. + Use Get-WULastResults cmdlet to get Windows Update LastSearchSuccessDate and LastInstallationSuccessDate. + + Author Blog + + + Get last Windows Update results. + + Get-WULastResults + + ComputerName LastSearchSuccessDate LastInstallationSuccessDate + ------------ --------------------- --------------------------- + MG-PC 30.08.2017 14:02:11 03.07.2017 07:35:27 + + + + + + Specify one or more computer names for remote connection. + + + + + Specify alternative credential. + + + + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + + + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: + \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: + \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + + + + Debuger return original exceptions. + + + + + Begin + + + + + Process + + + + + End + + + + + Stop + + + + + Get offline MSU package. + Use Get-WUOfflineMSU cmdlet to download MSU package from Microsoft Update Catalog website. + + Author Blog + + + Download package for KB4551762. + PS> Get-WUOfflineMSU -KBArticleID 4551762 -Destination C:\Temp + + Confirm + Are you sure you want to perform this action? + Performing the operation "(20.04.2020 14:27:17) 2020-03 Cumulative Update for Windows Server, version 1909 for + x64-based Systems (KB4551762)[354.4 MB]" on target "DESKTOP-GCQBCBS". + [Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): N + + Confirm + Are you sure you want to perform this action? + Performing the operation "(20.04.2020 14:27:19) 2020-03 Cumulative Update for Windows 10 Version 1909 for x64-based + Systems(KB4551762) [354.4 MB]" on target "DESKTOP-GCQBCBS". + [Y] Yes[A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): Y + + Confirm + Are you sure you want to perform this action? + Performing the operation "(20.04.2020 14:27:23) 2020-03 Cumulative Update for Windows 10 Version 1903 for x64-based + Systems(KB4551762) [354.4 MB]" on target "DESKTOP-GCQBCBS". + [Y] Yes[A]Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): L + + X Result Title LastUpdated Size + - ------ ----- ----------- ---- + 1 Rejected 2020-03 Cumulative Update for Windows Server, version 1909 for x64-based Systems (... 3/12/2020 354.4 MB + 1 Accepted 2020-03 Cumulative Update for Windows 10 Version 1909 for x64-based Systems (KB455... 3/12/2020 354.4 MB + 1 Rejected 2020-03 Cumulative Update for Windows 10 Version 1903 for x64-based Systems (KB455... 3/12/2020 354.4 MB + 1 Rejected 2020-03 Cumulative Update for Windows 10 Version 1909 for x86-based Systems (KB455... 3/12/2020 191.7 MB + 1 Rejected 2020-03 Cumulative Update for Windows 10 Version 1903 for x86-based Systems (KB455... 3/12/2020 191.7 MB + 1 Rejected 2020-03 Cumulative Update for Windows 10 Version 1909 for ARM64-based Systems (KB4... 3/12/2020 396.1 MB + 1 Rejected 2020-03 Cumulative Update for Windows Server, version 1903 for x64-based Systems (... 3/12/2020 354.4 MB + 1 Rejected 2020-03 Cumulative Update for Windows 10 Version 1903 for ARM64-based Systems (KB4... 3/12/2020 396.1 MB + 2 Downloaded 2020-03 Cumulative Update for Windows 10 Version 1909 for x64-based Systems (KB455... 3/12/2020 354.4 MB + + PS> Get-ChildItem C:\Temp + Directory: C:\Temp + + Mode LastWriteTime Length Name + ---- ------------- ------ ---- + -a---- 12.03.2020 07:03 371656774 windows10.0-kb4551762-x64_dacef156c781f2018d94d5a5286076610ba97279.msu + + + + + + Specify one or more computer names for remote connection. + + + + + Specify alternative credential. + + + + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + + + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: + \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: + \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + + + + Debuger return original exceptions. + + + + + Finds updates that contain a KBArticleID. + + + + + Destination for downloaded files. + + + + + Do not ask confirmation for download updates. + + + + + Begin + + + + + Process + + + + + End + + + + + Stop + + + + + Get Windows Update reboot status. + Use Get-WURebootStatus cmdlet to check if reboot is needed. + + Author Blog + + + Check if restart is necessary. If yes, ask to do this or don't. + + Get-WURebootStatus + + Reboot is required. Do it now ? [Y/N] (default is 'N') + ComputerName RebootRequired RebootScheduled + ------------ -------------- --------------- + MG-PC True + + + + + Check if restart is necessary. If yes, then shedule it. + + Get-WURebootStatus -ScheduleReboot (Get-Date -Hour 18 -Minute 0 -Second 0) + + ComputerName RebootRequired RebootScheduled + ------------ -------------- --------------- + MG-PC True 31.08.2017 18:00:00 + + + + + + Specify one or more computer names for remote connection. + + + + + Specify alternative credential. + + + + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + + + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: + \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: + \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + + + + Return true/false only. + + + + + Do not ask for reboot if it needed, but do it now. + + + + + Specify schedule time for reboot. + + + + + Cancel scheduled reboot. + + + + + Debuger return original exceptions. + + + + + Begin + + + + + Process + + + + + End + + + + + Stop + + + + + Get Service Manager configuration. + Use Get-WUServiceManager cmdlet to get available configuration of update services. + + Author Blog + + + Check currently available Windows Update Services on machine. + + Get-WUServiceManager + + ServiceID IsManaged IsDefault Name + --------- --------- --------- ---- + 9482f4b4-e343-43b6-b170-9a65bc822c77 False False Windows Update + 7971f918-a847-4430-9279-4a52d1efe18d False False Microsoft Update + 3da21691-e39d-4da6-8a4b-b43877bcb1b7 True True Windows Server Update Service + 13df3d8f-78d7-4eb8-bb9c-2a101870d350 False False Offline Sync Service2 + a8f3b5e6-fb1f-4814-a047-2257d39c2460 False False Offline Sync Service + + + + + + Specify one or more computer names for remote connection. + + + + + Specify alternative credential. + + + + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + + + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: + \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: + \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + + + + Get specific Service Manager if it's available. + + + + + Debuger return original exceptions. + + + + + Begin + + + + + Process + + + + + End + + + + + Stop + + + + + Get Windows Update Client settings. + Use Get-WUSettings cmdlet to get current configuration of Windows Update Client. + + Author Blog + + + Get current Windows Update Client configuration. + + Get-WUSettings + + ComputerName : MG-PC + AcceptTrustedPublisherCerts : 0 + WUServer : https://wsus.commandlinegeeks.com + WUStatusServer : https://wsus.commandlinegeeks.com + DetectionFrequencyEnabled : 1 + DetectionFrequency : 2 + NoAutoRebootWithLoggedOnUsers : 1 + RebootRelaunchTimeoutEnabled : 1 + RebootRelaunchTimeout : 240 + IncludeRecommendedUpdates : 0 + NoAutoUpdate : 0 + AUOptions : 2 - Notify before download + ScheduledInstallDay : 0 - Every Day + ScheduledInstallTime : 4 + UseWUServer : 1 + + + + + + Specify one or more computer names for remote connection. + + + + + Specify alternative credential. + + + + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + + + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: + \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: + \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + + + + Debuger return original exceptions. + + + + + Begin + + + + + Process + + + + + End + + + + + Stop + + + + + Test cmdlet. + Use Get-WUTest cmdlet to test. + + Author Blog + + + Test. + + Get-WUTest + + + + + + + Specify one or more computer names for remote connection. + + + + + Specify alternative credential. + + + + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + + + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: + \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: + \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + + + + Debuger return original exceptions. + + + + + Test parameter. + + + + + Begin + + + + + Process + + + + + End + + + + + Stop + + + + + Invoke WUJobs by Task Schduler. + Use Invoke-WUJobs cmdlet to invoke PSWindowsUpdate actions remotly. It Based on TaskScheduler because CreateUpdateDownloader() and CreateUpdateInstaller() methods can't be called from a remote computer - E_ACCESSDENIED. + Note: Because we do not have the ability to interact, is recommended use -AcceptAll for Install-WindowsUpdate. + + Author Blog + + + Invoke Install-WindowsUpdate on remote machine today at 6:00 PM. + + Invoke-WUJob -ComputerName MG-PC -Script "ipmo PSWindowsUpdate; Install-WindowsUpdate -AcceptAll | Out-File C:\PSWindowsUpdate.log" -TriggerDate (Get-Date -Hour 18 -Minute 0 -Second 0) + + Confirm + Are you sure you want to perform this action? + Performing the operation "Invoke WU job: powershell.exe -Command "ipmo PSWindowsUpdate; Install-WindowsUpdate -AcceptAll | Out-File C:\PSWindowsUpdate.log"" on target "MG-PC". + [Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): Y + + + + + + Specify one or more computer names for remote connection. + + + + + Specify alternative credential. + + + + + Specify custom name for Task Scheduler job. Default is 'PSWindowsUpdate'. + + + + + Specify if task must be hidden. Default is true. + + + + + Specify EndBoundary for Task Scheduler trigger. + + + + + Specify Time trigger for Task Scheduler job. + + + + + Specify system startup trigger for Task Scheduler job. + + + + + Run Task Scheduler job immediately. + + + + + Specify PowerShell script that you what to run. Default is {ipmo PSWindowsUpdate; Get-WindowsUpdate -AcceptAll -Install | Out-File $Env:TEMP\PSWindowsUpdate.log} + + + + + Force update old Task Scheduler Job if it's available. + + + + + Debuger return original exceptions. + + + + + Begin + + + + + Process + + + + + End + + + + + Stop + + + + + Download files from url using BITS. + + Source URL + Destination path + + + + OutputType + OutputType for WindowsUpdate objects. + + + + ComputerName + + + Status + + + KB + + + Size + + + Title + + + + OutputType + OutputType for AgentInfo objects. + + + + ComputerName + + + ApiVersion + + + WuapiDll + + + + OutputType + OutputType for History objects. + + + + ComputerName + + + Operationname + + + Date + + + KB + + + Title + + + + OutputType + OutputType for InstallerStatus objects. + + + + ComputerName + + + IsBusy + + + + OutputType + OutputType for WUJob. + + + + ComputerName + + + Name + + + Action + + + + OutputType + OutputType for LastResult objects. + + + + ComputerName + + + LastSearchSuccessDate + + + LastInstallationSuccessDate + + + + OutputType + OutputType for MSU objects. + + + + Status + + + ComputerName + + + KB + + + Size + + + Title + + + + OutputType + OutputType for RebootStatus objects. + + + + ComputerName + + + RebootRequired + + + RebootScheduled + + + + OutputType + OutputType for ServiceManager objects. + + + + ComputerName + + + Name + + + ServiceID + + + IsManaged + + + IsDefaultAUService + + + + OutputType + OutputType for WUSettings objects. + + + + ComputerName + + + AcceptTrustedPublisherCerts + + + WUServer + + + WUStatusServer + + + DetectionFrequencyEnabled + + + DetectionFrequency + + + NoAutoRebootWithLoggedOnUsers + + + RebootRelaunchTimeoutEnabled + + + RebootRelaunchTimeout + + + IncludeRecommendedUpdates + + + NoAutoUpdate + + + AUOptions + + + ScheduledInstallDay + + + ScheduledInstallTime + + + UseWUServer + + + + Impersonation of a user. Allows to execute code under another user context. + Please note that the account that instantiates the Impersonator class + needs to have the 'Act as part of operating system' privilege set. + + + + + Initializes a new instance of the class and + impersonates as a built in service account. + + The built in user to impersonate - either + Local Service or Network Service. These users can only be impersonated + by code running as System. + + + + Initializes a new instance of the class and + impersonates with the specified credentials. + + his is the name of the user account to log on + to. If you use the user principal name (UPN) format, + user@DNS_domain_name, the lpszDomain parameter must be null. + The name of the domain or server whose account + database contains the lpszUsername account. If this parameter is + null, the user name must be specified in UPN format. If this + parameter is ".", the function validates the account by using only the + local account database. + The plaintext password for the user account. + + + + Constructor. Starts the impersonation with the given credentials. + Please note that the account that instantiates the Impersonator class + needs to have the 'Act as part of operating system' privilege set. + + The name of the user to act as. + The domain name of the user to act as. + The password of the user to act as. + Logon Session Type + Logon Provider + Builtin User + + + + Destructor + + + + + Specifies the type of login session used. + + + + + Intended for users who are interactively using the machine, such as a user being logged on by a terminal server, remote shell, or similar process. + + + + + Intended for high-performance servers to authenticate clear text passwords. LogonUser does not cache credentials for this logon type. + + + + + Intended for batch servers, where processes can be executed on behalf of a user without their direct intervention; or for higher performance servers that process many clear-text authentication attempts at a time, such as mail or web servers. LogonUser does not cache credentials for this logon type. + + + + + Indicates a service-type logon. The account provided must have the service privilege enabled. + + + + + Indicates a proxy-type logon. + + + + + This logon type is intended for GINA DLLs logging on users who are interactively using the machine. This logon type allows a unique audit record to be generated that shows when the workstation was unlocked. + + + + + Preserves the name and password in the authentication packages, allowing the server to make connections to other network servers while impersonating the client. This allows a server to accept clear text credentials from a client, call LogonUser, verify that the user can access the system across the network, and still communicate with other servers. + + + + + Allows the caller to clone its current token and specify new credentials for outbound connections. The new logon session has the same local identify, but uses different credentials for other network connections. + + + + + Terminal Services session that is both remote and interactive. + + + + + Attempt cached credentials without accessing the network. + + + + + Same as RemoteInteractive. This is used for internal auditing. + + + + + Workstation logon. + + + + + Specifies the logon provider. + + + + + Use the standard logon provider for the system. The default security provider is negotiate, unless you pass NULL for the domain name and the user name is not in UPN format. In this case, the default provider is NTLM. + + + + + + + + + Use the NTLM logon provider. + + + + + Use the negotiate logon provider. + + + + + Specifies the impersonation level. + + + + + The client is anonymous to the server. The server process can impersonate the client, but the impersonation token does not contain any information about the client. This level is only supported over the local interprocess communication transport. All other transports silently promote this level to identify. + + + + + The system default level. The server can obtain the client's identity, and the server can impersonate the client to do ACL checks. + + + + + The server can impersonate the client's security context while acting on behalf of the client. The server can access local resources as the client. If the server is local, it can access network resources as the client. If the server is remote, it can access only resources that are on the same computer as the server. + + + + + The most powerful impersonation level. When this level is selected, the server (whether local or remote) can impersonate the client's security context while acting on behalf of the client. During impersonation, the client's credentials (both local and network) can be passed to any number of computers. + + + + + Specifies the BuiltinUser type. + + + + + None. + + + + + Local Service. + + + + + Network Service. + + + + + Does the actual impersonation. + + The name of the user to act as. + The domain name of the user to act as. + The password of the user to act as. + Logon Session Type + Logon Provider + + + + Reverts the impersonation. + + + + + Enum CredentialType + + The type of the credential. This member cannot be changed after the credential is created. + + + + + The lack of credential type + + + + + Generic credential type + + The credential is a generic credential. The credential will not be used by any particular authentication package. + The credential will be stored securely but has no other significant characteristics. + + + + + Domain password credential type + + The credential is a password credential and is specific to Microsoft's authentication packages. + The NTLM, Kerberos, and Negotiate authentication packages will automatically use this credential when connecting to the named target. + + + + + Domain certificate credential type + + The credential is a certificate credential and is specific to Microsoft's authentication packages. + The Kerberos, Negotiate, and Schannel authentication packages automatically use this credential when connecting to the named target. + + + + + Wrapper for advapi32.dll library. + Advanced Services + Provide access to functionality additional to the kernel. + Included are things like the Windows registry, shutdown/restart the system (or abort), + start/stop/create a Windows service, manage user accounts. + These functions reside in advapi32.dll on 32-bit Windows. + + + Enum PersistenceType + Defines the persistence of this credential. This member can be read and written. + + + + + The session persistence type + The credential persists for the life of the logon session. + It will not be visible to other logon sessions of this same user. + It will not exist after this user logs off and back on. + + + + + The local computer persistence type + The credential persists for all subsequent logon sessions on this same computer. + It is visible to other logon sessions of this same user on this same computer + and not visible to logon sessions for this user on other computers. + + + + + The enterprise persistence type + The credential persists for all subsequent logon sessions on this same computer. It is visible to other logon + sessions of this same user on this same computer and to logon sessions for this user on other computers. + this option can be implemented as locally persisted credential if the administrator or user configures the user + account to not have roam-able state. For instance, if the user has no roaming profile, the credential will only + persist locally. + + + + + + + + The CredRead function reads a credential from the user's credential set. + The credential set used is the one associated with the logon session of the current token. + The token must not have the user's SID disabled. + + + If the value of the Type member of the CREDENTIAL structure specified by the Credential parameter is + CRED_TYPE_DOMAIN_EXTENDED, a namespace must be specified in the target name. This function can return only one + credential of the specified type. + + Pointer to a null-terminated string that contains the name of the credential to read. + Type of the credential to read. Type must be one of the CRED_TYPE_* defined types. + Currently reserved and must be zero. + + Pointer to a single allocated block buffer to return the credential. + Any pointers contained within the buffer are pointers to locations within this single allocated block. + The single returned buffer must be freed by calling CredFree. + + The function returns TRUE on success and FALSE on failure. + + + + The CredWrite function creates a new credential or modifies an existing credential in the user's credential set. + The new credential is associated with the logon session of the current token. + The token must not have the user's security identifier (SID) disabled. + + + This function creates a credential if a credential with the specified TargetName and Type does not exist. If a + credential with the specified TargetName and Type exists, the new specified credential replaces the existing one. + When this function writes a CRED_TYPE_CERTIFICATE credential, the Credential->CredentialBlob member specifies the + PIN protecting the private key of the certificate specified by the Credential->UserName member. The credential + manager does not maintain the PIN. Rather, the PIN is passed to the cryptographic service provider (CSP) indicated + on the certificate for later use by the CSP and the authentication packages. The CSP defines the lifetime of the + PIN. Most CSPs flush the PIN when the smart card removal from the smart card reader. + If the value of the Type member of the CREDENTIAL structure specified by the Credential parameter is + CRED_TYPE_DOMAIN_EXTENDED, a namespace must be specified in the target name. This function does not support writing + to target names that contain wildcards. + + A pointer to the CREDENTIAL structure to be written. + Flags that control the function's operation. The following flag is defined. + If the function succeeds, the function returns TRUE, if the function fails, it returns FALSE. + + + + The CredFree function frees a buffer returned by any of the credentials management functions. + + Pointer to the buffer to be freed. + + + + The CredDelete function deletes a credential from the user's credential set. + The credential set used is the one associated with the logon session of the current token. + The token must not have the user's SID disabled. + + Pointer to a null-terminated string that contains the name of the credential to delete. + + Type of the credential to delete. Must be one of the CRED_TYPE_* defined types. + For a list of the defined types, see the Type member of the CREDENTIAL structure. + If the value of this parameter is CRED_TYPE_DOMAIN_EXTENDED, + this function can delete a credential that specifies a user name when there are multiple credentials for the same + target. The value of the TargetName parameter must specify the user name as Target|UserName. + + Reserved and must be zero. + The function returns TRUE on success and FALSE on failure. + + + + Enumerate credentials in the credential store + signature: BOOL CredEnumerate ( + _In_ LPCTSTR Filter, + _In_ DWORD Flags, + _Out_ DWORD *Count, + _Out_ PCREDENTIAL **Credentials + ); + [in] + Pointer to a null-terminated string that contains the filter for the returned credentials.Only credentials with a TargetName matching the filter will be returned.The filter specifies a name prefix followed by an asterisk.For instance, the filter "FRED*" will return all credentials with a TargetName beginning with the string "FRED". + If NULL is specified, all credentials will be returned. + [in] + The value of this parameter can be zero or more of the following values combined with a bitwise-OR operation. + Value Meaning + CRED_ENUMERATE_ALL_CREDENTIALS 0x1 + This function enumerates all of the credentials in the user's credential set. The target name of each credential is returned in the "namespace:attribute=target" format. If this flag is set and the Filter parameter is not NULL, the function fails and returns ERROR_INVALID_FLAGS. + Windows Server 2003 and Windows XP: This flag is not supported. + + [out] Count of the credentials returned in the Credentials array. + [out] + Pointer to an array of pointers to credentials.The returned credential is a single allocated block. Any pointers contained within the buffer are pointers to locations within this single allocated block.The single returned buffer must be freed by calling CredFree. + Return value + + + The function returns TRUE on success and FALSE on failure. The GetLastError function can be called to get a more specific status code.The following status codes can be returned. + Return code/value Description + ERROR_NOT_FOUND + 1168 (0x490) + No credential exists matching the specified Filter. + ERROR_NO_SUCH_LOGON_SESSION + 1312 (0x520) + The logon session does not exist or there is no credential set associated with this logon session. Network logon sessions do not have an associated credential set. + ERROR_INVALID_FLAGS + 1004 (0x3EC) + A flag that is not valid was specified for the Flags parameter, or CRED_ENUMERATE_ALL_CREDENTIALS is specified for the Flags parameter and the Filter parameter is not NULL. + + + + + + The CREDENTIAL structure contains an individual credential. + + See CREDENTIAL structure documentation. + + + + + Class Credential, wrapper for native CREDENTIAL structure. + See CREDENTIAL structure + documentation. + See Credential Manager + documentation. + + + + + The lock object + + + + + The unmanaged code permission + + + + + The credential description + + + + + The disposed flag + + + + + The last write time + + + + + The password + + + + + The persistence type + + + + + The string that contains the name of the credential + + + + + The credential type + + + + + The username + + + + + Initializes UnmanagedCodePermission for the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The username. + + + + Initializes a new instance of the class. + + The username. + The password. + + + + Initializes a new instance of the class. + + The username. + The password. + The string that contains the name of the credential. + + + + Initializes a new instance of the class. + + The username. + The password. + The string that contains the name of the credential. + The credential type. + + + + Gets or sets the username. + + The user name of the account used to connect to TargetName. + + + + Gets or sets the password. + + The decoded secure string password. + + + + Gets or sets the secure password. + + The secure password of the account used to connect to TargetName. + + + + Gets or sets the target. + + + The name of the credential. The TargetName and Type members uniquely identify the credential. This member cannot + be changed after the credential is created. Instead, the credential with the old name should be deleted and the + credential with the new name created. + + + + + Gets or sets the description. + + + The string comment from the user that describes this credential. This member cannot be longer than + CRED_MAX_STRING_LENGTH (256) characters. + + + + + Gets the last write time. + + The last write time. + + + + Gets the last write time UTC. + + The last write time UTC. + + + + Gets or sets the type. + + The type of the credential. This member cannot be changed after the credential is created. + + + + Gets or sets the type of the persistence. + + Defines the persistence of this credential. This member can be read and written. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Finalizes an instance of the class. + + + + + Releases unmanaged and - optionally - managed resources. + + + true to release both managed and unmanaged resources; false to release only + unmanaged resources. + + + + + Ensures this instance is not disposed. + + Credential object is already disposed. + + + + Saves this instance. + + true if credential is saved properly, false otherwise. + password;The password has exceeded 512 bytes. + + + + Deletes this instance. + + true if credential was deleted properly, false otherwise. + Target must be specified to delete a credential. + + + + Loads this instance. + + true if credential is load properly, false otherwise. + + + + Checks if the credential with these properties exists + + true if XXXX, false otherwise. + Target must be specified to check existance of a credential. + + + + Loads all credentials + + + + + Loads the internal. + + The credential. + + + + Loads the internal. + + + + + Restart service on specific machine. + + + + + Stope service on specific machine. + + + + + Start service on specific machine. + + + + + OutputType + OutputType for credentials from Credential Manager. + + + + Username + + + Password + + + Domain + + + + Return Windows Update API COM object. + + + + ComputerName + + + Status + + + Object + + + Error + + + Exception + + + Mode + + + + Return error code description. + + + + ErrorCode in Hex + + + Short message + + + Full Description + + + Type of WUApiCode + + + + ValidateScheduleJobAttribute + + + + + ValidateRecurseCycleAttribute + + + + + ValidateTestAttribute + + + + + Int must be gt 0 + + + + + Universal function used in rest of PSWindowsUpdate module. + + + + + Encrypt string by key. + + Text to encrypt + Encryption key + + + + Decrypt string by key. + + Encrypted text + Decryption key + + + + Run reboot. + + Computer name + + + + Schedule reboot. + + Computer name + Computer name + + + + Cancel reboot. + + Computer name + + + + Check is computer is localhost or remotehost. + + Computer name + + + + Restart Windows Update service on specific machine. + + Computer name + + + + Stope service on specific machine. + + Computer name + Service name + + + + Start service on specific machine. + + Computer name + Service name + + + + Start service on specific machine. + + Name of starting file + Arguments + + + + Test ping connection for specific machine. + + Computer name + + + + Create object ServiceManager for specific machine. + + Computer name + Current Exception + + + + Possible http web request methods + + + + Post + + + Get + + + + InvokeRestMethod + + Requested url + Request method + Body + Headers + + + + Create object ServiceManager for specific machine. + + Computer name + + + + Create object ServiceManager for specific machine. + + Computer name + + + + Create object UpdateSession for specific machine. + + Computer name + + + + Create object UpdateSession for specific machine. + + Computer name + + + + Create object Installer for specific machine. + + Computer name + + + + Create object Installer for specific machine. + + Computer name + + + + Create object SystemInfo for specific machine. + + Computer name + + + + Create object SystemInfo for specific machine. + + Computer name + + + + Create object AutoUpdate for specific machine. + + Computer name + + + + Create object AutoUpdate for specific machine. + + Computer name + + + + Create object AgentInfo for specific machine. + + Computer name + + + + Create object AgentInfo for specific machine. + + Computer name + + + + convert size to human friendly format. + + Size in bytes + + + + Get PSWindowsUpdate module version on specific machine. + + Computer name + + + + Check PSWindowsUpdate module version on specific machine. + + Computer name + + + + Define minimum PSWindowsUpdate module version. + + + + + Save Credentials to Credential Manager. + + User name + Password + + + + Get credentials from Credential Manager. + + + + + Get PSWindowsUpdate module path. + + + + + Get GetPSWUSettings. + + + + + Save GetPSWUSettings. + + + + + Convert object to HTML formated table. + + Output object + Choosed properties + Send ifno about used cmdlet + Format style: Table | List + + + + test email settings. + + Send parameters + + + + Send email report. + + Send parameters + Output object + Send ifno about used cmdlet + + + + Specifies the BuiltinUser type. + + + + + Success stream. + + + + + Error stream. + + + + + Warning stream. + + + + + Verbose stream. + + + + + Debug stream. + + + + + Information stream. + + + + + Throw stream. + + + + + Get description from error code + + Error code + + + + Uninstall update. + Use Remove-WindowsUpdate to uninstall update. + + Author Blog + + + Try to uninstall update with specific KBArticleID = KB958830. + + Get-WUUninstall -KBArticleID KB958830 + + + + + + + Specify one or more computer names for remote connection. + + + + + Specify alternative credential. + + + + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + + + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: + \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: + \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + + + + Specify schedule time job. + + + + + KBArticleID that will be uninstalled. + + + + + Update ID that will be uninstalled. + + + + + Do not ask for reboot if it needed. + + + + + Do not ask for reboot if it needed, but do not reboot automaticaly. + + + + + Specify time when system will be rebooted. + + + + + Don't use automatic reboot. + + + + + Wse wusa.exe instead of WU Api. + + + + + Debuger return original exceptions. + + + + + Begin + + + + + Process + + + + + End + + + + + Stop + + + + + Remove windows update service manager. + Use Remove-WUServiceManager cmdlet to unregister Windows Update Service Manager. + + Author Blog + + + Try unregister Microsoft Update Service. + + Remove-WUServiceManager -ServiceID "7971f918-a847-4430-9279-4a52d1efe18d" + + Confirm + Are you sure you want to perform this action? + Performing the operation "Unregister Windows Update Service Manager: 7971f918-a847-4430-9279-4a52d1efe18d" on target "MG-PC". + + [Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): Y + + + + + + Specify one or more computer names for remote connection. + + + + + Specify alternative credential. + + + + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + + + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: + \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: + \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + + + + Specify schedule time job. + + + + + Specify ServiceID of Service Manager that you want to remove. + + + + + Debuger return original exceptions. + + + + + Begin + + + + + Process + + + + + End + + + + + Stop + + + + + Reset Windows Update components. + Use Reset-WUComponents cmdlet to reset all Windows Update components to default. + + Author Blog + + + Reset Windows Update components to default. + + Reset-WUComponents -Verbose + Step 1: Stop Windows Update services + VERBOSE: Background Intelligent Transfer Service(BITS) + VERBOSE: Windows Update(wuauserv) + VERBOSE: Application Identity(appidsvc) + VERBOSE: Cryptographic Services(cryptsvc) + Step 2: Delete the qmgr*.dat files + Step 3: Backup softare distribution folders + VERBOSE: Renaming Software Distribution folder to C:\WINDOWS\SoftwareDistribution.bak5 + VERBOSE: Renaming CatRoot folder to C:\WINDOWS\System32\Catroot2.bak1 + Step 4: Remove old Windows Update logs + VERBOSE: Deleting the C:\WINDOWS\WindowsUpdate.log files. + Step 5: Reset Windows Update services + VERBOSE: Reset BITS service + VERBOSE: Reset Windows Update service + Step 6: Reregister dll's + VERBOSE: regsvr32.exe / s atl.dll + VERBOSE: regsvr32.exe / s urlmon.dll + VERBOSE: regsvr32.exe / s mshtml.dll + VERBOSE: regsvr32.exe / s shdocvw.dll + VERBOSE: regsvr32.exe / s browseui.dll + VERBOSE: regsvr32.exe / s jscript.dll + VERBOSE: regsvr32.exe / s vbscript.dll + VERBOSE: regsvr32.exe / s scrrun.dll + VERBOSE: regsvr32.exe / s msxml.dll + VERBOSE: regsvr32.exe / s msxml3.dll + VERBOSE: regsvr32.exe / s msxml6.dll + VERBOSE: regsvr32.exe / s actxprxy.dll + VERBOSE: regsvr32.exe / s softpub.dll + VERBOSE: regsvr32.exe / s wintrust.dll + VERBOSE: regsvr32.exe / s dssenh.dll + VERBOSE: regsvr32.exe / s rsaenh.dll + VERBOSE: regsvr32.exe / s gpkcsp.dll + VERBOSE: regsvr32.exe / s sccbase.dll + VERBOSE: regsvr32.exe / s slbcsp.dll + VERBOSE: regsvr32.exe / s cryptdlg.dll + VERBOSE: regsvr32.exe / s oleaut32.dll + VERBOSE: regsvr32.exe / s ole32.dll + VERBOSE: regsvr32.exe / s shell32.dll + VERBOSE: regsvr32.exe / s initpki.dll + VERBOSE: regsvr32.exe / s wuapi.dll + VERBOSE: regsvr32.exe / s wuaueng.dll + VERBOSE: regsvr32.exe / s wuaueng1.dll + VERBOSE: regsvr32.exe / s wucltui.dll + VERBOSE: regsvr32.exe / s wups.dll + VERBOSE: regsvr32.exe / s wups2.dll + VERBOSE: regsvr32.exe / s wuweb.dll + VERBOSE: regsvr32.exe / s qmgr.dll + VERBOSE: regsvr32.exe / s qmgrprxy.dll + VERBOSE: regsvr32.exe / s wucltux.dll + VERBOSE: regsvr32.exe / s muweb.dll + VERBOSE: regsvr32.exe / s wuwebv.dll + Step 7: Reset WinSock + VERBOSE: netsh winsock reset + Step 8: Reset Proxy + VERBOSE: netsh winhttp reset proxy + Step 9: Start Windows Update services + VERBOSE: Cryptographic Services (cryptsvc) + VERBOSE: Application Identity (appidsvc) + VERBOSE: Windows Update (wuauserv) + VERBOSE: Background Intelligent Transfer Service (BITS) + Step 10: Start Windows Update services + VERBOSE: wuauclt /resetauthorization /detectnow + + + + + + Specify one or more computer names for remote connection. + + + + + Specify alternative credential. + + + + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + + + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: + \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: + \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + + + + Debuger return original exceptions. + + + + + Begin + + + + + Process + + + + + End + + + + + Stop + + + + + Save PSWUSettings. + Use Set-PSWUSettings save PSWindowsUpdate module settings to XML file. + + Author Blog + + + Set Office 365 as smtp server for PSWindowsUpdate module. + + Set-PSWUSettings -SmtpServer smtp.office365.com -SmtpPort 587 -SmtpEnableSsl $true -SmtpSubject "PSWindowsUpdate Report" -SmtpTo mgajda@psmvp.pl -SmtpFrom mgajda@psmvp.pl -SmtpCredential (Get-Credential mgajda@psmvp.pl) + + + + + + + Specify one or more computer names for remote connection. + + + + + Specify alternative credential. + + + + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + + + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: + \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: + \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + + + + Save smtp server to PSWUSettings file. + + + + + Save smtp port to PSWUSettings file. + + + + + Save enable ssl to PSWUSettings file. + + + + + Save smtp credential to Credential Manager. + + + + + Save smtp recipient to PSWUSettings file. + + + + + Save smtp sernder to PSWUSettings file. + + + + + Save alternative message subject to PSWUSettings file. + + + + + Alternative report message propertie.s + + + + + Alternative report message format style. + + + + + Invoke-WUJob to save credential as system user + + + + + Debuger return original exceptions. + + + + + Begin + + + + + Process + + + + + End + + + + + Stop + + + + + Set Windows Update Client settings. + Use Set-WUSettings cmdlet to Set configuration of Windows Update Client. + + Author Blog + + + Enable IncludeRecommendedUpdates attributes. + + Set-WUSettings -IncludeRecommendedUpdates + + Confirm + Are you sure you want to perform this action? + Performing the operation "Set Windows Update settings" on target "MG-PC". + [Y] Yes[A] Yes to All [N] No[L] No to All [S] Suspend[?] Help (default is "Y"): Y + + ComputerName IncludeRecommendedUpdates + ------------ ------------------------- + MG-PC True + + + + + + Specify one or more computer names for remote connection. + + + + + Specify alternative credential. + + + + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + + + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: + \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: + \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + + + + Enabled - The WSUS server distributes available signed non-Microsoft updates. + Disabled - The WSUS server does not distribute available signed non-Microsoft updates. + + + + + Disables/Enables access to Windows Update. + + + + + Enabled - All members of the Users security group can approve or disapprove updates. + Disabled - Only members of the Administrators security group can approve or disapprove updates. + + + + + Name of the computer group to which the computer belongs. + + + + + Use/Do not use client-side targeting. + + + + + HTTP(S) URL of the WSUS server that is used by Automatic Updates and API callers (by default). + + + + + Notify mode: "Not configured", "Disabled", "Notify before download", "Notify before installation", "Scheduled installation", "Users configure" + + + + + Silently install minor updates. + + + + + Time between detection cycles. Time in hours (1–22). + + + + + Enable/Disable detection frequency. + + + + + Enable/Disable recommended updates. + + + + + Logged-on user can decide whether to restart the client computer. + + + + + Enable/Disable Automatic Updates. + + + + + Time between prompts for a scheduled restart. Time in minutes (1–1440). + + + + + Enable/Disable RebootRelaunchTimeout. + + + + + Length, in minutes, of the restart warning countdown after updates have been installed that have a deadline or scheduled updates. Time in minutes (1–30). + + + + + Enable/Disable RebootWarningTimeout. + + + + + Time in minutes that Automatic Updates waits at startup before it applies updates from a missed scheduled installation time. Time in minutes (1–60). + + + + + Scheduled day of install: "Every day", "Every Sunday", "Every Monday", "Every Tuesday", "Every Wednesday", "Every Thursday", ""Every Friday", "EverySaturday". Only valid if NotificationLevel (AUOptions) = "Scheduled installation" + Starting with Windows 8 and Windows Server 2012, ScheduledInstallationDay are not supported and will return unreliable values.If you try to modify these properties, the operation will appear to succeed but will have no effect. + + + + + Scheduled time of install in 24-hour format(0–23). + Starting with Windows 8 and Windows Server 2012, ScheduledInstallTime are not supported and will return unreliable values.If you try to modify these properties, the operation will appear to succeed but will have no effect. + /// + + + + The computer gets its updates from a WSUS server or from Microsoft Update. + + + + + TargetReleaseVersion enable settings for controll maximum version of Feature updates. For example 1 or 0. + + + + + TargetReleaseVersionInfo allow to control maximum version of Feature updates. For example "22H2". + + + + + ProductVersion allow to control maximum version of Feature updates. For example "Windows 11" or "11" or "Windows 10". + + + + + Debuger return original exceptions. + + + + + Begin + + + + + Process + + + + + End + + + + + Stop + + + + + Update PSWindowsUpdate module. + Use Use Update-WUModule cmdlet to remote update PSWindowsUpdate module. + + Author Blog + + + Update PSWindowsUpdate module from PSGallery + + Update-WUModule -ComputerName MG-PC -Online + + + + + + Update PSWindowsUpdate module from current serwer. Require SMB connection to destination machine. + + Update-WUModule -ComputerName MG-PC -Local + + + + + + + Specify one or more computer names for remote connection. + + + + + Specify alternative credential. + + + + + Send report email to specific recipients. + Requires the parameter -PSWUSettings or declare the PSWUSettings.xml file in ModuleBase path. + + + + + Required parameter for -SendReport. + Passes the parameters (as hashtable) necessary to send the report: + \r\n@{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25];[Subject="Alternative Subject"];[Properties="Alternative object properties"];[Style="Table|List"]} + Send parameters can also be saved to a PSWUSettings.xml file in ModuleBase path: + \r\nExport-Clixml @{SmtpServer="your.smtp.server";From="sender@email.address";To="recipient@email.address";[Port=25]}" + + + + + Update from PSGallery. + + + + + Update from current module. + + + + + Debuger return original exceptions. + + + + + Begin + + + + + Process + + + + + End + + + + + Stop + + + + diff --git a/pswindowsupdate-installer.ps1 b/pswindowsupdate-installer.ps1 new file mode 100644 index 0000000..e9e1c01 --- /dev/null +++ b/pswindowsupdate-installer.ps1 @@ -0,0 +1,25 @@ +# Script Name: pswindowsupdate-installer.ps1 +# Beschreibung: Installiert das Modul 'PSWindowsUpdate' und alle anderen Voraussetzungen +# Lauffähig unter Windows Server 2016, 2019 und 2022 +# Aufruf: - +# Autor: Patrick Asmus +# Web: https://www.media-techport.de +# Git-Reposit.: https://git.media-techport.de/scriptos/PSWindowsUpdate.git +# Version: 1.0 +# Datum: 29.11.2023 +# Modifikation: Initial +##################################################### + +# Setze TLS 1.2 als Sicherheitsprotokoll +[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 + +# Überprüfe, ob das PowerShellGet-Modul vorhanden ist. Falls nicht, installiere es. +if (-not (Get-Module -Name PowerShellGet -ListAvailable)) { + Install-Module -Name PowerShellGet -Force -AllowClobber +} + +# Installiere PSWindowsUpdate-Modul +Install-Module -Name PSWindowsUpdate -Force + +# Zeige installiertes PSWindowsUpdate-Modul an +Get-Package -Name PSWindowsUpdate \ No newline at end of file diff --git a/windows-updater.ps1 b/windows-updater.ps1 new file mode 100644 index 0000000..acec487 --- /dev/null +++ b/windows-updater.ps1 @@ -0,0 +1,58 @@ +# Script Name: windows-updater.ps1 +# Beschreibung: Installiert Windows Updates +# Lauffähig unter Windows Server 2016, 2019 und 2022 +# Aufruf: - +# Autor: Patrick Asmus +# Web: https://www.media-techport.de +# Git-Reposit.: https://git.media-techport.de/scriptos/windows-updater.git +# Version: 1.0 +# Datum: 29.11.2023 +# Modifikation: Initial +##################################################### + +# Funktion zur Formatierung des Datums im deutschen Stil +function Format-DeutschesDatum ([datetime] $date) { + return $date.ToString("dd.MM.yyyy HH:mm:ss") +} + +# Variablen +$LogPfad = "C:\logs\windows-updater.log" +#$ModulPfad = Join-Path -Path $PSScriptRoot -ChildPath "modul-pswindowsupdate" +#$ModulPfad = "C:\scripts\PSWindowsUpdate\2.2.1.2\PSWindowsUpdate.psm1" +$ModulVerzeichnis = Join-Path -Path $PSScriptRoot -ChildPath "Module\PSWindowsUpdate" +$env:PSModulePath += ";C:\BenutzerdefinierteModule" + +# Relativer Modulpfad zum $env:PSModulePath hinzufügen +$ModulVerzeichnis = Join-Path -Path $PSScriptRoot -ChildPath "Module" +$env:PSModulePath += ";$ModulVerzeichnis" + +# Importiere das PSWindowsUpdate-Modul +Import-Module -Name "PSWindowsUpdate" -Verbose + + +# Importiere das PSWindowsUpdate-Modul +Import-Module -Name $ModulPfad -Verbose + +# Überprüfe, ob das Modul erfolgreich geladen wurde +if (Get-Module -Name PSWindowsUpdate -ListAvailable) { + Write-Host "PSWindowsUpdate-Modul erfolgreich geladen." + + # Installiere Windows-Updates und speichere die Ausgabe + $Ausgabe = Install-WindowsUpdate -MicrosoftUpdate -AcceptAll -AutoReboot + + # Überprüfe, ob ein Neustart erforderlich ist + if ($Ausgabe.RestartRequired) { + Write-Host "Ein Neustart ist erforderlich." + } else { + Write-Host "Kein Neustart erforderlich." + } + + # Gib die Ausgabe der Windows-Update-Installation in der Kommandozeile aus und schreibe sie ins Logfile + $Ausgabe | ForEach-Object { + $LogMeldung = "ComputerName: $($_.ComputerName) Result: $($_.Result) KB: $($_.KB) Size: $($_.Size) Title: $($_.Title)" + Write-Host $LogMeldung + $LogMeldung | Out-File -Append -FilePath $LogPfad + } +} else { + Write-Host "Fehler beim Laden des PSWindowsUpdate-Moduls." +}