{"id":50903,"date":"2010-03-23T00:01:00","date_gmt":"2010-03-23T00:01:00","guid":{"rendered":"https:\/\/blogs.technet.microsoft.com\/heyscriptingguy\/2010\/03\/23\/hey-scripting-guy-the-autospinstaller-windows-powershell-script\/"},"modified":"2010-03-23T00:01:00","modified_gmt":"2010-03-23T00:01:00","slug":"hey-scripting-guy-the-autospinstaller-windows-powershell-script","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/scripting\/hey-scripting-guy-the-autospinstaller-windows-powershell-script\/","title":{"rendered":"Hey, Scripting Guy! The AutoSPInstaller Windows PowerShell Script"},"content":{"rendered":"<p><a href=\"http:\/\/www.addthis.com\/bookmark.php?v=250&amp;pub=scriptingguys\" class=\"addthis_button\"><img decoding=\"async\" height=\"16\" width=\"125\" src=\"http:\/\/s7.addthis.com\/static\/btn\/v2\/lg-share-en.gif\" alt=\"Bookmark and Share\"><\/a>\n<span style=\"font-family: Calibri\"><span style=\"font-size: small\"><strong><span lang=\"EN-CA\"><\/span><\/strong><\/span><\/span>&nbsp;\n<span style=\"font-family: Calibri\"><span style=\"font-size: small\"><strong><span lang=\"EN-CA\">About the author<\/span><\/strong><span lang=\"EN-CA\">: Brian Lalancette is a consultant at <\/span><span lang=\"EN-CA\"><a title=\"Navantis, Inc\" href=\"http:\/\/www.navantis.com\">Navantis, Inc<\/a><\/span><\/span><\/span><span lang=\"EN-CA\"><span style=\"font-family: Calibri;font-size: small\">. He is MCTS certified with more than 10 years&rsquo; experience in various Microsoft platforms, including SharePoint, ISA Server, and Live Communications, and has just recently caught Windows PowerShell fever. You can follow his blog on SharePoint, virtualization, and infrastructure automation at <\/span><\/span><a href=\"http:\/\/spinsiders.com\/brianlala\/\"><span lang=\"EN-CA\"><span style=\"font-family: Calibri;font-size: small\">http:\/\/spinsiders.com\/brianlala\/<\/span><\/span><\/a><span lang=\"EN-CA\"><span style=\"font-family: Calibri\"><span style=\"font-size: small\">.<\/p>\n<p><\/span><\/span><\/span><\/p>\n<p class=\"MsoNormal\"><span style=\"font-family: Calibri;font-size: small\">&nbsp;<\/span><\/p>\n<p class=\"MsoNormal\"><span style=\"font-family: Calibri;font-size: small\">Last year, being in the position of a SharePoint administrator\/consultant who is often tasked with performing Microsoft Office SharePoint Server (MOSS) 2007 installations and being blessed (cursed?) with a desire to automate everything, I set out on the journey of scripting the MOSS installation. What was the point, I thought, of producing pages of screen captures and quickly obsolete documentation for error-prone manual MOSS installations, when that amount of effort could be applied to a process that nearly eliminates both the documentation and the probability of error? A few months of evenings\/weekends\/in-between-project work later, the <\/span><a href=\"http:\/\/automossinstaller.codeplex.com\/\"><span style=\"font-family: Calibri;font-size: small\">AutoMOSSInstaller<\/span><\/a><span style=\"font-family: Calibri\"><span style=\"font-size: small\"> was born. This is great for nearly hands-free installation of MOSS 2007. It was never really Windows PowerShell-y enough for my liking though; it did invoke a .ps1 script that disabled some Windows services, but the project was still mainly a DOS-style batch script.<\/p>\n<p><\/span><\/span><\/p>\n<p class=\"MsoNormal\"><span style=\"font-family: Calibri\"><span style=\"font-size: small\">With the news of the SharePoint 2010 command-line story being focused on Windows PowerShell, my challenge now was to automate as much of the installation and configuration as possible, this time with Windows PowerShell and the new cmdlets that the latest SharePoint version comes with. Luckily, there&rsquo;s already a great deal of documentation and samples (both official and community-authored) for Windows PowerShell and SharePoint 2010, so this made my job a lot easier. <\/p>\n<p><\/span><\/span><\/p>\n<p class=\"MsoNormal\"><span style=\"font-family: Calibri;font-size: small\">This article will walk through the <\/span><a href=\"http:\/\/autospinstaller.codeplex.com\/\"><span style=\"font-family: Calibri;font-size: small\">AutoSPInstaller<\/span><\/a><span style=\"font-family: Calibri\"><span style=\"font-size: small\"> script, its advantages, and what remains in terms of &ldquo;nice-to-haves.&rdquo;<\/p>\n<p><\/span><\/span><\/p>\n<p class=\"MsoSubtitle\"><span><span style=\"font-size: small\"><strong>Gathering Input<\/p>\n<p><\/strong><\/span><\/span><\/p>\n<p class=\"MsoNormal\"><span style=\"font-family: Calibri\"><span style=\"font-size: small\">For the end user of this script, the biggest piece in terms of effort is a bit of planning to enumerate things such as service accounts and database names, and editing the corresponding input file (SetInputs.xml). If this sounds daunting, keep in mind that in a proper deployment, you&rsquo;d want to carry out this planning anyway in one way or another. Gather values such as your farm account, SQL server name, TCP port for central admin, which service apps you&rsquo;d like configured, and so on. The SetInputs.xml file comes prepopulated with a lot of the values, so have a look. Also, if you understandably don&rsquo;t feel comfortable potentially exposing passwords in SetInputs.xml, just leave them blank and the script will prompt you for them.<\/p>\n<p><\/span><\/span><\/p>\n<p class=\"MsoNormal\"><span style=\"font-family: Calibri\"><span style=\"font-size: small\">Also, there&rsquo;s a config.xml<i> <\/i>file that&rsquo;s used by the SharePoint installer in unattended mode. There isn&rsquo;t much to modify here, except maybe the PIDKEY (Product ID&ndash;currently public knowledge for the beta and release candidate) and the value for OFFICESERVERPREMIUM (1 for Enterprise and 0 for Standard).<\/p>\n<p><\/span><\/span><\/p>\n<p class=\"MsoSubtitle\"><span><span style=\"font-size: small\"><strong>Prep and Prerequisites<\/p>\n<p><\/strong><\/span><\/span><\/p>\n<p class=\"MsoNormal\"><span style=\"font-size: small\"><span style=\"font-family: Calibri\">After it has launched (yes, with a .bat file &ndash; to enable logging and a check of the version of Windows PowerShell), the script will check whether it&rsquo;s being run with the same farm account credentials you specified in SetInputs.xml. It will warn you and stop, if not. Why? In the beta at least, SharePoint 2010 seems pretty finicky about accounts (user profile sync issues, etc.). Plus it&rsquo;s probably a good idea to install under a managed service account rather than as an individual user (whose account is more subject to things such as expiry, deletion, and password changes). Next are sections within the script that will gather an process all of the input we specified in SetInputs.xml, as well as sections for installing the SharePoint 2010 prerequisites. Thankfully, the latter is now handled by PrerequisiteInstaller.exe; all we need to do is execute it in unattended mode:<\/p>\n<p><\/span><\/span><\/p>\n<p class=\"MsoNormal\"><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><span>Start-Process <\/span><span>&#8220;$bitsPrerequisiteInstaller.exe&#8221;`<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\"><span>-ArgumentList <\/span><span>&#8220;\/unattended&#8221;`<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\"><span>-WindowStyle Minimized -Wait<\/span><span><\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\"><strong><span>$bits<\/span><\/strong><span> <\/span><span style=\"font-family: Calibri;font-size: small\">is the path to the installation root. In addition to running PrerequisiteInstaller.exe, we also need to install a Windows 2008 hotfix separately for SharePoint 2010 Beta 2 as per <\/span><a href=\"http:\/\/code.msdn.microsoft.com\/KB971831\/Release\/ProjectReleases.aspx?ReleaseId=3235\"><span style=\"font-family: Calibri;font-size: small\">KB971831 for Win2008<\/span><\/a><span style=\"font-family: Calibri;font-size: small\"> and <\/span><a href=\"http:\/\/support.microsoft.com\/kb\/KB976462\"><span style=\"font-family: Calibri;font-size: small\">KB976462 for Win2008 R2<\/span><\/a><span style=\"font-family: Calibri;font-size: small\">. The script takes care of this by first identifying the version of the operating system, and then running the required hotfix (<\/span><strong><span>$WCFHotfix<\/span><\/strong><span>)<\/span><span style=\"font-size: small\"><span style=\"font-family: Calibri\">:<\/span><\/span><\/p>\n<p class=\"MsoNormal\"><span style=\"font-size: small\"><span style=\"font-family: Calibri\"><br \/>&nbsp;<\/span><\/span>\n<span style=\"font-size: small\"><span style=\"font-family: Calibri\"><\/p>\n<p><\/span><\/span><\/p>\n<p class=\"MsoNormal\"><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><span>Start-Process <\/span><span>&#8220;$dp0Hotfixes$WCFHotfix&#8221;`<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\"><span>-ArgumentList <\/span><span>&#8220;\/quiet`<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\"><span>\/promptrestart&#8221;<\/span><span> -Wait<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\">\n<p><span style=\"font-family: Calibri;font-size: small\">&nbsp;<\/span><\/p>\n<\/p>\n<p class=\"MsoNormal\"><span style=\"font-family: Calibri;font-size: small\">Here, <\/span><strong><span>$dp0<\/span><\/strong><span style=\"font-family: Calibri\"><span style=\"font-size: small\"> is just a variable representing the path to the root where the script was launched. Note that if any of the prerequisites requires a reboot, you can do so, and then just rerun the script again. It should effectively pick up where it left off.<\/p>\n<p><\/span><\/span><\/p>\n<p class=\"MsoNormal\">\n<p><span style=\"font-family: Calibri;font-size: small\">&nbsp;<\/span><\/p>\n<\/p>\n<p class=\"MsoSubtitle\"><span><span style=\"font-size: small\"><strong>SharePoint 2010 Installation<\/p>\n<p><\/strong><\/span><\/span><\/p>\n<p class=\"MsoNormal\"><span style=\"font-size: small\"><span style=\"font-family: Calibri\">Given that you&rsquo;ve extracted the SharePoint Server 2010 installation files, the script will perform an unattended installation of SharePoint 2010:<\/p>\n<p><\/span><\/span><\/p>\n<p class=\"MsoNormal\"><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><strong><span>Start-Process<\/span><\/strong><span> <\/span><span>&#8220;$bitssetup.exe&#8221;`<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\"><i><span>-ArgumentList<\/span><\/i><span> <\/span><span>&#8220;\/config $config&#8221;`<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\"><i><span>-WindowStyle<\/span><\/i><span> <\/span><span>Minimized<\/span><span> <\/span><i><span>&ndash;Wait<\/p>\n<p><\/span><\/i><\/p>\n<p class=\"MsoNormal\">\n<p><span style=\"font-family: Calibri;font-size: small\">&nbsp;<\/span><\/p>\n<\/p>\n<p class=\"MsoNormal\"><span style=\"font-family: Calibri;font-size: small\">Here, <\/span><strong><span>$config<\/span><\/strong><span style=\"font-family: Calibri\"><span style=\"font-size: small\"> is a variable containing the full path to the config.xml file mentioned earlier. In my experience, the entire binary file installation could take 8-15 minutes. Go grab a coffee, unless you happen to be mesmerized by progress bars and blinking hard drive lights (like I am). <\/p>\n<p><\/span><\/span><\/p>\n<p class=\"MsoNormal\">\n<p><span style=\"font-family: Calibri;font-size: small\">&nbsp;<\/span><\/p>\n<\/p>\n<p class=\"MsoNormal\"><span style=\"font-family: Calibri\"><span style=\"font-size: small\">You should get back just in time to see the installation GUI disappear, and not be replaced with the SharePoint Products and Technologies Configuration Wizard. What happened? We got rid of it, and we&rsquo;re going to reproduce what the wizard used to walk us through with some Windows PowerShell.<\/p>\n<p><\/span><\/span><\/p>\n<p class=\"MsoNormal\">\n<p><span style=\"font-family: Calibri;font-size: small\">&nbsp;<\/span><\/p>\n<\/p>\n<p class=\"MsoSubtitle\"><span><span style=\"font-size: small\"><strong>SharePoint Farm Creation and Configuration<\/p>\n<p><\/strong><\/span><\/span><\/p>\n<p class=\"MsoNormal\"><span style=\"font-size: small\"><span style=\"font-family: Calibri\">Now that SharePoint Server 2010 is installed, we need to run the equivalent of the Products and Technologies Configuration Wizard (also known as PSConfigUI.exe) to create our farm. Because we&rsquo;re going to use the new SharePoint 2010 PowerShell cmdlets to do this, we first need to load them:<\/p>\n<p><\/span><\/span><\/p>\n<p class=\"MsoNormal\"><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><span>Add-PsSnapin Microsoft.SharePoint.PowerShell<\/span><span><\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\"><span style=\"font-family: Calibri;font-size: small\">You&rsquo;ll get an informational message about the farm not being accessible; this is normal because we obviously haven&rsquo;t created our farm yet. The next series of steps draws from examples by <\/span><a href=\"http:\/\/poshcode.org\/1485\"><span style=\"font-family: Calibri;font-size: small\">Jos Verlinde<\/span><\/a><span style=\"font-family: Calibri;font-size: small\"> and <\/span><a href=\"http:\/\/blogs.msdn.com\/ekraus\/archive\/2009\/11\/06\/sharepoint-2010-provisioning-a-new-farm-with-powershell.aspx\"><span style=\"font-family: Calibri;font-size: small\">Eric Kraus<\/span><\/a><span style=\"font-size: small\"><span style=\"font-family: Calibri\"> for creating a farm. I won&rsquo;t go into detail here, but here are the seven cmdlets that will replace the Configuration Wizard and create our farm:<\/p>\n<p><\/span><\/span><\/p>\n<p class=\"MsoNormal\"><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><span>New-SPConfigurationDatabase<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\"><span>New-SPCentralAdministration<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\"><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Install-SPHelpCollection -All<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\"><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Install-SPApplicationContent<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\"><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Initialize-SPResourceSecurity<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\"><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Install-SPService<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\"><span>Install-SPFeature<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\">\n<p><span style=\"font-family: Calibri;font-size: small\">&nbsp;<\/span><\/p>\n<\/p>\n<p class=\"MsoNormal\"><span style=\"font-family: Calibri\"><span style=\"font-size: small\">Here&rsquo;s a glimpse of what the command window might look like at this point:<\/p>\n<p><\/span><\/span><\/p>\n<p class=\"MsoNormal\"><img decoding=\"async\" height=\"407\" width=\"600\" src=\"http:\/\/img.microsoft.com\/library\/media\/1033\/technet\/images\/scriptcenter\/qanda\/hsg\/2010\/march\/hey0323\/inprogress1.jpg\" alt=\"Image of what command window might look like at this point\" title=\"Image of what command window might look like at this point\" style=\"width: 600px;height: 407px\"><a href=\"http:\/\/img.microsoft.com\/library\/media\/1033\/technet\/images\/scriptcenter\/qanda\/hsg\/2010\/march\/hey0323\/inprogress1.jpg\"><span style=\"font-family: Calibri;font-size: small\"><\/span><\/a><strong><\/p>\n<p><\/strong><\/p>\n<p class=\"MsoNormal\">\n<p><span style=\"font-family: Calibri;font-size: small\">&nbsp;<\/span><\/p>\n<\/p>\n<p class=\"MsoNormal\"><span style=\"font-family: Calibri\"><span style=\"font-size: small\">After this is done, we not only have our farm, but a browseable Central Administration site that is ready for further configuration. But that&rsquo;s where it gets interesting. The script isn&rsquo;t done yet, so leave that wizard alone and sit back while we register our managed accounts. Then we&rsquo;ll create some service applications, Web applications, and site collections.<\/p>\n<p><\/span><\/span><\/p>\n<p class=\"MsoNormal\">\n<p><span style=\"font-family: Calibri;font-size: small\">&nbsp;<\/span><\/p>\n<\/p>\n<p class=\"MsoSubtitle\"><span><span style=\"font-size: small\"><strong>Registering Managed Accounts and Starting Some Services<\/p>\n<p><\/strong><\/span><\/span><\/p>\n<p class=\"MsoNormal\"><span style=\"font-size: small\"><span style=\"font-family: Calibri\">Because we&rsquo;re using specific accounts to run different services and Web applications in our farm, the script will now register any accounts we&rsquo;ve specified in SetInputs.xml as managed accounts in SharePoint. Pretty straightforward, using the <strong>New-SPManagedAccount<\/strong><\/span><\/span><span> <\/span><span style=\"font-family: Calibri\"><span style=\"font-size: small\">cmdlet.<\/p>\n<p><\/span><\/span><\/p>\n<p class=\"MsoNormal\">\n<p><span style=\"font-family: Calibri;font-size: small\">&nbsp;<\/span><\/p>\n<\/p>\n<p class=\"MsoNormal\"><span style=\"font-family: Calibri\"><span style=\"font-size: small\">Next we can start some service instances and create service applications. Some of these can be toggled (with a 1 or 0) in SetInputs.xml<i>;<\/i> have a look to decide which ones apply to your particular deployment. At this time, the script can create, configure, and start the following: <\/p>\n<p><\/span><\/span><\/p>\n<p class=\"MsoNormal\">\n<p><span style=\"font-family: Calibri;font-size: small\">&nbsp;<\/span><\/p>\n<\/p>\n<p class=\"MsoNormal\"><span style=\"font-family: Calibri\"><span style=\"font-size: small\">Service Instances:<\/p>\n<p><\/span><\/span><\/p>\n<p class=\"MsoListParagraphCxSpFirst\"><span><span><span style=\"font-size: small\">&middot;<\/span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span><span style=\"font-family: Calibri\"><span style=\"font-size: small\">SharePoint Foundation User Code Service<\/p>\n<p><\/span><\/span><\/p>\n<p class=\"MsoListParagraphCxSpLast\"><span><span><span style=\"font-size: small\">&middot;<\/span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span><span style=\"font-family: Calibri\"><span style=\"font-size: small\">Search Query and Site Settings Service<\/p>\n<p><\/span><\/span><\/p>\n<p class=\"MsoNormal\"><i><\/p>\n<p><span style=\"font-family: Calibri;font-size: small\">&nbsp;<\/span><\/p>\n<p><\/i><\/p>\n<p class=\"MsoNormal\"><span style=\"font-family: Calibri\"><span style=\"font-size: small\">Service Applications:<\/p>\n<p><\/span><\/span><\/p>\n<p class=\"MsoListParagraphCxSpFirst\"><span><span><span style=\"font-size: small\">&middot;<\/span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span><span style=\"font-family: Calibri;font-size: small\">Managed Metadata Service (full credit to <\/span><a href=\"http:\/\/sharepoint.microsoft.com\/blogs\/zach\/Lists\/Posts\/Post.aspx?ID=50\"><span style=\"font-family: Calibri;font-size: small\">Zach Rosenfield<\/span><\/a><span style=\"font-family: Calibri\"><span style=\"font-size: small\"> for the script snippets)<\/p>\n<p><\/span><\/span><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><span><span><span style=\"font-size: small\">&middot;<\/span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span><span style=\"font-family: Calibri\"><span style=\"font-size: small\">User Profile Service (including Web application and site collection for My Sites)<\/p>\n<p><\/span><\/span><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><span><span><span style=\"font-size: small\">&middot;<\/span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span><span style=\"font-family: Calibri\"><span style=\"font-size: small\">State Service<\/p>\n<p><\/span><\/span><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><span><span><span style=\"font-size: small\">&middot;<\/span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span><span style=\"font-family: Calibri\"><span style=\"font-size: small\">WSS Usage Application<\/p>\n<p><\/span><\/span><\/p>\n<p class=\"MsoListParagraphCxSpLast\"><span><span><span style=\"font-size: small\">&middot;<\/span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span><span style=\"font-family: Calibri\"><span style=\"font-size: small\">Secure Store Service<\/p>\n<p><\/span><\/span><\/p>\n<p class=\"MsoNormal\">\n<p><span style=\"font-family: Calibri;font-size: small\">&nbsp;<\/span><\/p>\n<\/p>\n<p class=\"MsoNormal\"><span style=\"font-family: Calibri\"><span style=\"font-size: small\">Again I won&rsquo;t go into detail here, except to say that each instance\/application above has its own Windows PowerShell function.<\/p>\n<p><\/span><\/span><\/p>\n<p class=\"MsoNormal\">\n<p><span style=\"font-family: Calibri;font-size: small\">&nbsp;<\/span><\/p>\n<\/p>\n<p class=\"MsoSubtitle\"><span><span style=\"font-size: small\"><strong>Create Web Applications<\/p>\n<p><\/strong><\/span><\/span><\/p>\n<p class=\"MsoNo\">\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; About the author: Brian Lalancette is a consultant at Navantis, Inc. He is MCTS certified with more than 10 years&rsquo; experience in various Microsoft platforms, including SharePoint, ISA Server, and Live Communications, and has just recently caught Windows PowerShell fever. You can follow his blog on SharePoint, virtualization, and infrastructure automation at http:\/\/spinsiders.com\/brianlala\/. &nbsp; [&hellip;]<\/p>\n","protected":false},"author":595,"featured_media":87096,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[80,56,3,59,45],"class_list":["post-50903","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-scripting","tag-brian-lalancette","tag-guest-blogger","tag-scripting-guy","tag-sharepoint","tag-windows-powershell"],"acf":[],"blog_post_summary":"<p>&nbsp; About the author: Brian Lalancette is a consultant at Navantis, Inc. He is MCTS certified with more than 10 years&rsquo; experience in various Microsoft platforms, including SharePoint, ISA Server, and Live Communications, and has just recently caught Windows PowerShell fever. You can follow his blog on SharePoint, virtualization, and infrastructure automation at http:\/\/spinsiders.com\/brianlala\/. &nbsp; [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts\/50903","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/users\/595"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/comments?post=50903"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts\/50903\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/media\/87096"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/media?parent=50903"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/categories?post=50903"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/tags?post=50903"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}