{"id":11401,"date":"2012-01-22T00:01:00","date_gmt":"2012-01-22T00:01:00","guid":{"rendered":"https:\/\/blogs.technet.microsoft.com\/heyscriptingguy\/2012\/01\/22\/use-the-free-poshwsus-powershell-module-for-wsus-administrative-work\/"},"modified":"2012-01-22T00:01:00","modified_gmt":"2012-01-22T00:01:00","slug":"use-the-free-poshwsus-powershell-module-for-wsus-administrative-work","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/scripting\/use-the-free-poshwsus-powershell-module-for-wsus-administrative-work\/","title":{"rendered":"Use the Free PoshWSUS PowerShell Module for WSUS Administrative Work"},"content":{"rendered":"<p><b>Summary<\/b>: Learn how to use the free PoshWSUS Windows PowerShell module to administer your WSUS server.<\/p>\n<p>Microsoft Scripting Guy, Ed Wilson, is here. We wrap up the weekend and the week with guest blogger, Boe Prox. In case you missed them, here are links for Boe&rsquo;s blogs:<\/p>\n<p>Day 1: <a href=\"http:\/\/blogs.technet.com\/b\/heyscriptingguy\/archive\/2012\/01\/16\/introduction-to-wsus-and-powershell.aspx\" target=\"_blank\">Introduction to WSUS and PowerShell<\/a><\/p>\n<p>Day 2: <a href=\"http:\/\/blogs.technet.com\/b\/heyscriptingguy\/archive\/2012\/01\/17\/use-powershell-to-perform-basic-administrative-tasks-on-wsus.aspx\" target=\"_blank\">Use PowerShell to Perform Basic Administrative Tasks on WSUS<\/a><\/p>\n<p>Day 3: <a href=\"http:\/\/blogs.technet.com\/b\/heyscriptingguy\/archive\/2012\/01\/18\/approve-or-decline-wsus-updates-by-using-powershell.aspx\" target=\"_blank\">Approve or Decline WSUS Updates by Using PowerShell<\/a><\/p>\n<p>Day 4: <a href=\"http:\/\/blogs.technet.com\/b\/heyscriptingguy\/archive\/2012\/01\/19\/use-powershell-to-find-missing-updates-on-wsus-client-computers.aspx\" target=\"_blank\">Use PowerShell to Find Missing Updates on WSUS Client Computers<\/a><\/p>\n<p>Day 5: <a href=\"http:\/\/blogs.technet.com\/b\/heyscriptingguy\/archive\/2012\/01\/20\/get-windows-update-status-information-by-using-powershell.aspx\" target=\"_blank\">Get Windows Update Status Information by Using PowerShell<\/a><\/p>\n<p>Day 6: <a href=\"http:\/\/blogs.technet.com\/b\/heyscriptingguy\/archive\/2012\/01\/21\/introduction-to-poshwsus-a-free-powershell-module-to-manage-wsus.aspx\" target=\"_blank\">Introduction to PoshWSUS, a Free PowerShell Module to Manage WSUS<\/a><\/p>\n<p>Take it away, Boe&hellip;<\/p>\n<p>We are at the final stopping point in our week of WSUS and this final blog is all about WSUS administration using my PoshWSUS module. The past week has seen us create a WSUS server and managing the server by using Windows PowerShell and the WSUS assemblies, but now we are going to look at this using fewer commands by using the PoshWSUS module. I will now show some examples that use the module to perform some of the exact commands that were done earlier in the week.<\/p>\n<h3>Initial use of PoshWSUS<\/h3>\n<p>To download the module, see <a href=\"http:\/\/poshwsus.codeplex.com\/\" target=\"_blank\">PoshWSUS<\/a> in CodePlex. Unzip the files to your Modules directory&mdash;in my case for Windows&nbsp;7, it is C:\\Users\\Boe\\Documents\\WindowsPowerShell\\Modules. I saved the modules to a folder named PoshWSUS. This location is shown here.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/0676.wes-1-22-12-1.jpg\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/0676.wes-1-22-12-1.jpg\" alt=\"Image of menu\" title=\"Image of menu\" \/><\/a><\/p>\n<p>Load the module by using the <b>Import-Module<\/b> cmdlet. This command is shown here.<\/p>\n<p style=\"padding-left: 30px\">Import-Module PoshWSUS<\/p>\n<p>The following image shows me using the <b>Get-Module<\/b> cmdlet to view the available cmdlets and using the <b>Import-Module<\/b> cmdlet to import the module.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/6102.wes-1-22-12-2.jpg\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/6102.wes-1-22-12-2.jpg\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><\/p>\n<p>Make your initial connection to the WSUS server. To do this, use the <b>Connect-WSUSServer<\/b> cmdlet as shown here.<\/p>\n<p style=\"padding-left: 30px\">Connect-WSUSServer -WsusServer DC1<\/p>\n<p>The following image shows the connection to the WSUS server named DC1.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/5518.wes-1-22-12-3.jpg\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/5518.wes-1-22-12-3.jpg\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><\/p>\n<p>Now you are set to go!<\/p>\n<h3>Client and group management<\/h3>\n<p>Let&rsquo;s start by looking at some basic client and group administration commands that you may find yourself using when you administer the server. The following example lists all clients that are registered in the WSUS Server.<\/p>\n<p style=\"padding-left: 30px\">Get-WSUSClient<\/p>\n<p>The output from the Get-WSUSClient cmdlet is shown here.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/3323.wes-1-22-12-4.jpg\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/3323.wes-1-22-12-4.jpg\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><\/p>\n<p>If you only want to list a specific client that is registered on the WSUS server, you can run the following command to get the data.<\/p>\n<p style=\"padding-left: 30px\">Get-WSUSClient -Computer boe-pc<\/p>\n<p>The following image shows the result of running the Get-WSUSClient cmdlet. Note that it provides lots of good information about the client computer.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/4478.wes-1-22-12-5.jpg\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/4478.wes-1-22-12-5.jpg\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><\/p>\n<p>For some extra fun, you can even use the <b>Group-Object<\/b> cmdlet to group all of your clients by operating system. A command to do this is shown here.<\/p>\n<p style=\"padding-left: 30px\">Get-WSUSClient | Group OSDescription | Select Count,Name<\/p>\n<p>The command and associated output are shown in the image that follows.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/8688.wes-1-22-12-6.jpg\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/8688.wes-1-22-12-6.jpg\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><\/p>\n<p>If you want to display all of the target groups that are in the WSUS server, you can run use the <b>Get-WSUSGroup<\/b> command.<\/p>\n<p style=\"padding-left: 30px\">Get-WSUSGroup<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/6303.wes-1-22-12-7.jpg\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/6303.wes-1-22-12-7.jpg\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><\/p>\n<p>If you want to add a client into a specific group, you can run this one-liner:<\/p>\n<p style=\"padding-left: 30px\">Get-WSUSClient boe-pc | Add-WSUSClientToGroup -Group TESTGROUP<\/p>\n<p>Let&rsquo;s verify that my client is actually in that group by using <b>Get-WSUSClientGroupMembership<\/b>.<\/p>\n<p style=\"padding-left: 30px\">Get-WSUSClientGroupMembership -Computer boe-pc<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/6266.wes-1-22-12-8.jpg\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/6266.wes-1-22-12-8.jpg\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><\/p>\n<p>Looking at the returned data, it would appear that the client is in the TESTGROUP group.<\/p>\n<p>Removing a WSUS client from a group is just as simple as using <b>Remove-WSUSClientFromGroup<\/b>. This command is shown here.<\/p>\n<p style=\"padding-left: 30px\">Remove-WSUSClientFromGroup -Computer boe-pc -Group TESTGROUP<\/p>\n<p>One more check to see if my client is no longer in TESTGROUP. The results are shown here.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/3386.wes-1-22-12-9.jpg\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/3386.wes-1-22-12-9.jpg\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><\/p>\n<p>As you can see, my client is now a member of <b>Unassigned Computers<\/b>, meaning that it is not a member of any group in WSUS other than the default <b>All Computers<\/b> group.<\/p>\n<p>Creating a new group on WSUS is made simple by using <b>New-WSUSGroup<\/b>. Here, I create a new group named <b>MyGroup<\/b><i>. <\/i><\/p>\n<p style=\"padding-left: 30px\">New-WSUSGroup &ldquo;MYGROUP&rdquo; &ndash;PassThru<\/p>\n<p>The results of creating the new <b>MyGroup<\/b><i> <\/i>group are shown in the following image.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/0044.wes-1-22-12-10.jpg\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/0044.wes-1-22-12-10.jpg\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><\/p>\n<p>In addition to creating new groups, I can remove a WSUS group. It is just as easy to remove a group, as it is to create a group. I use the <b>Remove-WSUSGroup<\/b> cmdlet. An example of doing this is shown here.<\/p>\n<p style=\"padding-left: 30px\">Get-WSUSGroup -Name MYGROUP | Remove-WSUSGroup<\/p>\n<h3>Update administration<\/h3>\n<p>Now for some more fun stuff: using PoshWSUS to work with Update administration. I have two commands (<b>Approve-WSUSUpdate<\/b> and <b>Deny-WSUSUpdate<\/b>) that make approving and declining updates easy to do. Besides that, you can use <b>Get-WSUSUpdate<\/b> to look for updates on the WSUS server.&nbsp; Unfortunately, &ldquo;Decline&rdquo; is not an approved verb in Windows PowerShell, so I went with &ldquo;Deny&rdquo; instead.<\/p>\n<p>Using <b>Get-WSUSUpdate<\/b> without any parameters will return every single update on the WSUS server. In this case, I want to see all of the Windows&nbsp;7 updates.<\/p>\n<p style=\"padding-left: 30px\">$updates = Get-WSUSUpdate &#8216;Windows 7&#8217;<\/p>\n<p style=\"padding-left: 30px\">$updates.count<\/p>\n<p style=\"padding-left: 30px\">$updates | Select -first 10<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/8611.wes-1-22-12-11.jpg\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/8611.wes-1-22-12-11.jpg\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><\/p>\n<p><b>Approve-WSUSUpdate<\/b> does take pipeline input from the Update object, so if you wanted to approve some updates that you queried, you could do the following:<\/p>\n<p style=\"padding-left: 30px\">$updates[1..10] | Approve-WSUSUpdate -Action Install -Group &#8216;All Computers&#8217; &ndash;PassThru<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/7536.wes-1-22-12-12.jpg\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/7536.wes-1-22-12-12.jpg\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><\/p>\n<p>In the same way, you can decline updates by piping the updates into <b>Deny-WSUSUpdate<\/b>. This command is shown here.<\/p>\n<p style=\"padding-left: 30px\">$updates[1..10] | Deny-WSUSUpdate<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/1663.wes-1-22-12-13.jpg\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/1663.wes-1-22-12-13.jpg\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><\/p>\n<p>Here is a fun one! You can use <b>Get-WSUSUpdate <\/b>and<b> New-WSUSUpdateScope<\/b> to list all the updates that have been released on the last Patch Tuesday and are required by the clients, as shown here.<\/p>\n<p style=\"padding-left: 30px\">Get-WSUSUpdate -UpdateScope (New-WSUSUpdateScope -IncludedInstallationStates NotInstalled -FromArrivalDate &#8220;12\/13\/2011&#8221;)<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/7711.wes-1-22-12-14.jpg\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/7711.wes-1-22-12-14.jpg\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><\/p>\n<p>You can then pipe this output into <b>Approve-WSUSUpdate<\/b>:<\/p>\n<p style=\"padding-left: 30px\">Get-WSUSUpdate -UpdateScope (New-WSUSUpdateScope -IncludedInstallationStates NotInstalled -FromArrivalDate &#8220;12\/13\/2011&#8221;) | Approve-WSUSUpdate -Action Install -Group &#8216;All Computers&#8217; &ndash;PassThru<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/4111.wes-1-22-12-15.jpg\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/4111.wes-1-22-12-15.jpg\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><\/p>\n<p>It is always a good idea to review each update to make sure that you want to approve it in your environment.<\/p>\n<h3>Reporting<\/h3>\n<p>So I have covered some administration examples that use this module, but what about some type of reporting capability? Well, I will show you some different types of reports that you can do with this module.<\/p>\n<p>I can look for updates that have failed to install by using the following command:<\/p>\n<p style=\"padding-left: 30px\">Get-WSUSUpdatePerClient -UpdateScope (New-WSUSUpdateScope -IncludedInstallationStates Failed)<\/p>\n<p>Fortunately for me (but unfortunate for this example), I do not have any updates that reported failures in the installation.<\/p>\n<p>I can mimic what is shown in the following example of the Administration Console by using <b>Get-WSUSUpdateSummaryPerClient<\/b>.<b><\/b><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/8270.wes-1-22-12-16.jpg\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/8270.wes-1-22-12-16.jpg\" alt=\"Image of menu\" title=\"Image of menu\" \/><\/a><\/p>\n<p style=\"padding-left: 30px\">Get-WSUSUpdateSummaryPerClient -ComputerScope (New-WSUSComputerScope) -UpdateScope (New-WSUSUpdateScope)<\/p>\n<p>The output is shown here:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/2860.wes-1-22-12-17.jpg\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/2860.wes-1-22-12-17.jpg\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><\/p>\n<p>We can even generate a report of update approvals by using <b>Get-WSUSUpdateApproval<\/b> if you want to go back to see what has been approved and\/or who approved a specific update. In this case, let&rsquo;s go back and look at my update approvals for all of the updates from this Patch Tuesday.<\/p>\n<p style=\"padding-left: 30px\">$updatescope = New-WSUSUpdateScope -FromArrivalDate &#8220;12\/13\/2011&#8221;<\/p>\n<p style=\"padding-left: 30px\">Get-WSUSUpdateApproval -UpdateScope $updatescope<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/3124.wes-1-22-12-18.jpg\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/3124.wes-1-22-12-18.jpg\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><\/p>\n<p>If you wanted to get a report of patches that are needed by clients in a specific group, you can give this command a run:<\/p>\n<p style=\"padding-left: 30px\">Get-WSUSUpdateSummaryForGroup -GroupName &#8216;All Computers&#8217; -UpdateObject $updates[200..300]<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/3073.wes-1-22-12-19.jpg\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/3073.wes-1-22-12-19.jpg\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a>&nbsp;<\/p>\n<h3>Other commands to use<\/h3>\n<p>Besides the commands that I have shown in this blog post, there are other commands that you may find useful during your administration of a WSUS server. So, without further ado, here are some command examples:<\/p>\n<p>Show the current synchronization schedule by using <b>Get-WSUSSubscription<\/b>:<\/p>\n<p style=\"padding-left: 30px\">Get-WSUSSubscription<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/8875.wes-1-22-12-20.jpg\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/8875.wes-1-22-12-20.jpg\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><\/p>\n<p>Listing all Install Approval rules on your WSUS server is also easy by using <b>Get-WSUSInstallApprovalRule<\/b>. For those of you who are not familiar with Install Approval, basically it allow you set up automatic approvals of specific products for specific computer target groups. Pretty nice if you know that you want to approve critical security updates for all of your clients every month.<\/p>\n<p style=\"padding-left: 30px\">Get-WSUSInstallApprovalRule<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/0876.wes-1-22-12-21.jpg\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/0876.wes-1-22-12-21.jpg\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><\/p>\n<p>In the same way, you can configure a new Install Approval rule by using <b>New-WSUSApprovalRule<\/b> and <b>Set-WSUSApprovalRule<\/b>.<\/p>\n<p style=\"padding-left: 30px\">$group = Get-WSUSGroup -Name &#8216;All Computers&#8217;<\/p>\n<p style=\"padding-left: 30px\">$class = Get-WSUSUpdateClassification | Where {$_.Title -eq &#8220;Updates&#8221;}<\/p>\n<p style=\"padding-left: 30px\">New-WSUSInstallApprovalRule -Name &#8220;Rule1&#8221; -Category $cat -Classification $class -Group $group &ndash;Enable &ndash;PassThru<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/3343.wes-1-22-12-22.jpg\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/3343.wes-1-22-12-22.jpg\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><\/p>\n<p>You can even run the Install Approval rules by using <b>Start-WSUSInstallApprovalRule<\/b>.<\/p>\n<p style=\"padding-left: 30px\">Start-WSUSInstallApprovalRule -Name &#8220;Rule1&#8221;<\/p>\n<p>If you wanted to locate the files for each update and their location on the server, you can run the <b>Get-WSUSInstallableItem<\/b> command.<\/p>\n<p style=\"padding-left: 30px\">$updates[0] | Get-WSUSInstallableItem<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/1715.wes-1-22-12-23.jpg\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/1715.wes-1-22-12-23.jpg\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><\/p>\n<p>You can dig into the files a little deeper to see how many files and where exactly they are located:<\/p>\n<p style=\"padding-left: 30px\">$updates[0] | Get-WSUSInstallableItem | Select &ndash;Expand Files<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/6014.wes-1-22-12-24.jpg\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/6014.wes-1-22-12-24.jpg\" alt=\"Image of command output\" title=\"Image of command output\" \/><\/a><\/p>\n<p>That wraps it up for my week with WSUS and Windows PowerShell and also talking about my PoshWSUS module. I have more updates planned, including adding more commands (such as publishing non-Microsoft updates to WSUS) and updating existing commands. Remember that if you see something that you would like to see added to the module or you find a bug in it, please log your issues and ideas in the <a href=\"http:\/\/poshwsus.codeplex.com\/workitem\/list\/basic\" target=\"_blank\">CodePlex Issue Tracker<\/a>. Thank you everyone for checking out my blogs and thanks to Ed for allowing me to take over a week of Hey, Scripting Guy! to talk WSUS and Windows PowerShell!<\/p>\n<p>~Boe<\/p>\n<p>Thanks, Boe, for an awesome week of Windows PowerShell goodness. Join us tomorrow for a new week on the Hey, Scripting Guy! blog.<\/p>\n<p>I invite you to follow me on <a href=\"http:\/\/bit.ly\/scriptingguystwitter\" target=\"_blank\">Twitter<\/a> and <a href=\"http:\/\/bit.ly\/scriptingguysfacebook\" target=\"_blank\">Facebook<\/a>. If you have any questions, send email to me at <a href=\"mailto:scripter@microsoft.com\" target=\"_blank\">scripter@microsoft.com<\/a>, or post your questions on the <a href=\"http:\/\/bit.ly\/scriptingforum\" target=\"_blank\">Official Scripting Guys Forum<\/a>. See you tomorrow. Until then, peace.<\/p>\n<p><b>Ed Wilson, Microsoft Scripting Guy<\/b>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Summary: Learn how to use the free PoshWSUS Windows PowerShell module to administer your WSUS server. Microsoft Scripting Guy, Ed Wilson, is here. We wrap up the weekend and the week with guest blogger, Boe Prox. In case you missed them, here are links for Boe&rsquo;s blogs: Day 1: Introduction to WSUS and PowerShell Day [&hellip;]<\/p>\n","protected":false},"author":596,"featured_media":87096,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[162,56,3,130,61,45,318],"class_list":["post-11401","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-scripting","tag-boe-prox","tag-guest-blogger","tag-scripting-guy","tag-servers","tag-weekend-scripter","tag-windows-powershell","tag-wsus"],"acf":[],"blog_post_summary":"<p>Summary: Learn how to use the free PoshWSUS Windows PowerShell module to administer your WSUS server. Microsoft Scripting Guy, Ed Wilson, is here. We wrap up the weekend and the week with guest blogger, Boe Prox. In case you missed them, here are links for Boe&rsquo;s blogs: Day 1: Introduction to WSUS and PowerShell Day [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts\/11401","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/users\/596"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/comments?post=11401"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts\/11401\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/media\/87096"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/media?parent=11401"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/categories?post=11401"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/tags?post=11401"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}