<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6950982370652028794</id><updated>2012-02-16T09:41:04.561+01:00</updated><category term='PowerShell 2'/><category term='PowerShell'/><category term='SQL'/><category term='IIS'/><category term='Active Directory'/><category term='OpenXML'/><category term='Welcome'/><category term='Solution Accelerator'/><title type='text'>Scripting Operations Framework</title><subtitle type='html'>Microsoft best practices automation using PowerShell</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://scriptofen.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6950982370652028794/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://scriptofen.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Mouloud Amazit</name><uri>http://www.blogger.com/profile/14155493798205992403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6950982370652028794.post-4136039790056178582</id><published>2009-05-29T09:53:00.002+02:00</published><updated>2009-05-29T10:47:41.067+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Solution Accelerator'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Active Directory'/><title type='text'>Active Directory &amp; SQL: Web Portal configuration</title><content type='html'>Previous part of this post is &lt;a href="http://scriptofen.blogspot.com/2009/05/iis-automation.html"&gt;HERE&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;The last part of the Web Portal deployment is the configuration!&lt;br /&gt;&lt;br /&gt;Of course, configuration depends on Web Portal itself and the integration environment. This post is about to share some powreshell tips around Active Directory and SQL which are the common technologies used for a Web Portal.&lt;br /&gt;&lt;br /&gt;Here, our Web Portal needs a dedicated organizationnal unit (OU) in our Active Directory to store groups used to manage permissions.&lt;br /&gt;&lt;br /&gt;First, we need to create the OU:&lt;br /&gt;&lt;br /&gt;&lt;div style='width: 100%; /*height: 100%;*/ overflow: auto; font-family: Consolas, "Courier New", Courier, mono; font-size: 12px; background-color: #DDDDDD; color: #000000; padding: 2px 2px 2px 2px; white-space: nowrap'&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;Creates&amp;nbsp;Web&amp;nbsp;portal&amp;nbsp;prerequires&amp;nbsp;in&amp;nbsp;Active&amp;nbsp;Directory.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;return&amp;gt;True&amp;nbsp;on&amp;nbsp;success,&amp;nbsp;false&amp;nbsp;otherwise&amp;lt;/return&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #C86400'&gt;function&lt;/span&gt;&amp;nbsp;Configure-ADWebPortal()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;trap&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Display-Info&amp;nbsp;&lt;span style='color: #000080'&gt;$_&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Exception&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Message&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$false&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;continue&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$true&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$CONST_GLOBAL_GRP&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;2&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$CONST_UNIV_GRP&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;8&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Display-Info&amp;nbsp;&lt;span style='color: #800000'&gt;'Creating&amp;nbsp;WebPortal&amp;nbsp;Organizational&amp;nbsp;Unit...'&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objOU&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;[ADSI]&lt;span style='color: #800000'&gt;''&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objOU&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objOU&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Create(&lt;span style='color: #800000'&gt;'OrganizationalUnit'&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'OU=WebPortal'&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objOU&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SetInfo()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Create-Group&amp;nbsp;&lt;span style='color: #000080'&gt;$objOU&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'AdmWebPortal'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'WebPortal&amp;nbsp;Administrators'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$CONST_UNIV_GRP&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&lt;br /&gt;}&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;Configure-ADWebPortal&lt;/strong&gt; function creates an OU and a group in the new container.&lt;br /&gt;&lt;br /&gt;The function uses an other one to create the Active Directory group. You can find the source code here:&lt;br /&gt;&lt;br /&gt;&lt;div style='width: 100%; /*height: 100%;*/ overflow: auto; font-family: Consolas, "Courier New", Courier, mono; font-size: 12px; background-color: #DDDDDD; color: #000000; padding: 2px 2px 2px 2px; white-space: nowrap'&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;Creates&amp;nbsp;an&amp;nbsp;Active&amp;nbsp;Directory&amp;nbsp;group.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;param&amp;nbsp;name&amp;nbsp;="objOU"&amp;gt;The&amp;nbsp;container&amp;nbsp;(ADSI&amp;nbsp;object)&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;param&amp;nbsp;name&amp;nbsp;="strName"&amp;gt;Group's&amp;nbsp;name&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;param&amp;nbsp;name&amp;nbsp;="strDescription"&amp;gt;Group's&amp;nbsp;description&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;param&amp;nbsp;name&amp;nbsp;="intGroupType"&amp;gt;Group's&amp;nbsp;type&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #C86400'&gt;function&lt;/span&gt;&amp;nbsp;Create-Group(&lt;span style='color: #000080'&gt;$objOU&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strName&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strDescription&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$intGroupType&lt;/span&gt;)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;trap&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Display-Error&amp;nbsp;&lt;span style='color: #000080'&gt;$_&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Exception&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Message&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;continue&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Display-Info&amp;nbsp;&lt;span style='color: #800000'&gt;"Creating&amp;nbsp;group&amp;nbsp;$strName..."&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objGroup&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objOU&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Create(&lt;span style='color: #800000'&gt;'Group'&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;"CN=$strName"&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objGroup&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Put(&lt;span style='color: #800000'&gt;'SamAccountName'&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;"$strName"&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objGroup&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Put(&lt;span style='color: #800000'&gt;'Description'&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;"$strDescription"&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objGroup&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Put(&lt;span style='color: #800000'&gt;'GroupType'&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$intGroupType&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objGroup&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SetInfo()&lt;br /&gt;}&lt;/div&gt;&lt;br /&gt;To log errors and warnings, we call our dedicated functions.&lt;br /&gt;&lt;br /&gt;In the example, the created group type is Universal. Why ? Well, maybe it will be use in a couple of days, maybe it will be a distribution group used by Exchange 2007... :)&lt;br /&gt;&lt;br /&gt;That's fine, we successfully created Active Directory objects! And now ?&lt;br /&gt;&lt;br /&gt;We will change on the fly the Active Directory and SQL database! In fact, the next step is to write a function to:&lt;ul&gt;&lt;li&gt;Get all OU with a specific name&lt;br /&gt;&lt;li&gt;Create a group in theses OU&lt;br /&gt;&lt;li&gt;Insert the OU name in the database calling a stored procedure!&lt;/ul&gt;&lt;div style='width: 100%; /*height: 100%;*/ overflow: auto; font-family: Consolas, "Courier New", Courier, mono; font-size: 12px; background-color: #DDDDDD; color: #000000; padding: 2px 2px 2px 2px; white-space: nowrap'&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;Synchronizes&amp;nbsp;SQL&amp;nbsp;database&amp;nbsp;and&amp;nbsp;Active&amp;nbsp;Directory.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;param&amp;nbsp;name="objSQL"&amp;gt;SQL&amp;nbsp;connection&amp;nbsp;object&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;return&amp;gt;True&amp;nbsp;on&amp;nbsp;success,&amp;nbsp;false&amp;nbsp;otherwise&amp;lt;/return&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #C86400'&gt;function&lt;/span&gt;&amp;nbsp;Synchronize-ADAndSQL(&lt;span style='color: #000080'&gt;$objSQL&lt;/span&gt;)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;trap&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Display-Error&amp;nbsp;&lt;span style='color: #000080'&gt;$_&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Exception&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Message&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$false&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;continue&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$CST_GLB_GRP&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;2&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$true&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objEntry&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;[ADSI]&lt;span style='color: #800000'&gt;''&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Clean-Database&amp;nbsp;&lt;span style='color: #000080'&gt;$objSQL&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;foreach&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$obj&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;in&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objEntry&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;psbase&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Children)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$obj&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Name&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Value&amp;nbsp;&lt;span style='color: #C86400'&gt;-match&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;"^(\w+\d+)_(\w+)$"&lt;/span&gt;)&amp;nbsp;{&lt;br /&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;&lt;span style='color: #000080'&gt;$strFullName&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$matches&lt;/span&gt;[&lt;span style='color: #800000'&gt;0&lt;/span&gt;]&lt;br /&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;&lt;span style='color: #000080'&gt;$strCode&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$matches&lt;/span&gt;[&lt;span style='color: #800000'&gt;1&lt;/span&gt;]&lt;br /&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;&lt;span style='color: #000080'&gt;$strName&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$matches&lt;/span&gt;[&lt;span style='color: #800000'&gt;2&lt;/span&gt;]&lt;br /&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;&lt;span style='color: #000080'&gt;$strDN&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$obj&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;psbase&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Properties&lt;span style='color: #C86400'&gt;.&lt;/span&gt;DistinguishedName&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Value&lt;br /&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;Display-Info&amp;nbsp;&lt;span style='color: #800000'&gt;"OU&amp;nbsp;$strFullName&amp;nbsp;discovered"&lt;/span&gt;&lt;br /&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;&lt;span style='color: #000080'&gt;$strGroupName&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;"$strCode"&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'_Administrators_WebPortal'&lt;/span&gt;&lt;br /&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;Create-Group&amp;nbsp;&lt;span style='color: #000080'&gt;$obj&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;"$strGroupName"&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;"Admins&amp;nbsp;for&amp;nbsp;$strCode"&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$CST_GLB_GRP&lt;/span&gt;&lt;br /&gt;&lt;br /&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;&lt;span style='color: #000080'&gt;$objAdapter&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;New-Object&lt;/span&gt;&amp;nbsp;Data&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SqlClient&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SqlDataAdapter&lt;br /&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;&lt;span style='color: #000080'&gt;$objAdapter&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SelectCommand&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;New-Object&lt;/span&gt;&amp;nbsp;Data&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SqlClient&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SqlCommand&lt;br /&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;&lt;span style='color: #000080'&gt;$objAdapter&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SelectCommand&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Connection&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objSQL&lt;/span&gt;&lt;br /&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;&lt;span style='color: #000080'&gt;$objAdapter&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SelectCommand&lt;span style='color: #C86400'&gt;.&lt;/span&gt;CommandText&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'[PR_ADDOU]'&lt;/span&gt;&lt;br /&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;&lt;span style='color: #000080'&gt;$objAdapter&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SelectCommand&lt;span style='color: #C86400'&gt;.&lt;/span&gt;CommandType&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&lt;br /&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;[Data&lt;span style='color: #C86400'&gt;.&lt;/span&gt;CommandType]&lt;span style='color: #C86400'&gt;::&lt;/span&gt;StoredProcedure&lt;br /&gt;&lt;br /&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;&lt;span style='color: #000080'&gt;$objSqlParam&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;Build-SQLParam&amp;nbsp;&lt;span style='color: #800000'&gt;'@OUCode'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strCode&lt;/span&gt;&lt;br /&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;[void]&lt;span style='color: #000080'&gt;$objAdapter&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SelectCommand&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Parameters&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Add(&lt;span style='color: #000080'&gt;$objSqlParam&lt;/span&gt;)&lt;br /&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;&lt;span style='color: #000080'&gt;$objSqlParam&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;Build-SQLParam&amp;nbsp;&lt;span style='color: #800000'&gt;'@OUName'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strName&lt;/span&gt;&lt;br /&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;[void]&lt;span style='color: #000080'&gt;$objAdapter&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SelectCommand&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Parameters&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Add(&lt;span style='color: #000080'&gt;$objSqlParam&lt;/span&gt;)&lt;br /&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;&lt;span style='color: #000080'&gt;$objSqlParam&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;Build-SQLParam&amp;nbsp;&lt;span style='color: #800000'&gt;'@OUDN'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strDN&lt;/span&gt;&lt;br /&gt;&lt;br /&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;&lt;span style='color: #000080'&gt;$objAdapter&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SelectCommand&lt;span style='color: #C86400'&gt;.&lt;/span&gt;ExecuteNonQuery()&amp;nbsp;&lt;span style='color: #C86400'&gt;|&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;Out-Null&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&lt;br /&gt;}&lt;/div&gt;&lt;br /&gt;OU name is divided in 2 parts: a code and the OU name joined by the '_' character. The stored procedure named &lt;strong&gt;PR_ADDOU&lt;/strong&gt; has 2 parameters for theses 2 parts of the OU name. Executing a stored procedure is a good deal to separate PowerShell script and SQL traitment!&lt;br /&gt;&lt;br /&gt;This solution Accelerator is just an example but we have seen a practical case of information system automation!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6950982370652028794-4136039790056178582?l=scriptofen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scriptofen.blogspot.com/feeds/4136039790056178582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://scriptofen.blogspot.com/2009/05/active-directory-sql-web-portal.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6950982370652028794/posts/default/4136039790056178582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6950982370652028794/posts/default/4136039790056178582'/><link rel='alternate' type='text/html' href='http://scriptofen.blogspot.com/2009/05/active-directory-sql-web-portal.html' title='Active Directory &amp; SQL: Web Portal configuration'/><author><name>Grégory Schiro</name><uri>http://www.blogger.com/profile/13622288244478060512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_o9-Jc8qS7K0/SWZ25sSkRJI/AAAAAAAAAB8/1vw9G17Rj0A/S220/Sans+titre-2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6950982370652028794.post-4614287945815152994</id><published>2009-05-27T16:29:00.002+02:00</published><updated>2009-05-27T16:31:31.185+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Solution Accelerator'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>IIS automation</title><content type='html'>Previous part of this post is &lt;a href="http://scriptofen.blogspot.com/2009/05/sql-database-deployment-automation.html"&gt;HERE&lt;/a&gt; !&lt;br /&gt;&lt;br /&gt;After having deployed the SQL database on which our Web portal is based on, we are going to deploy the web site... Using the second menu:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_o9-Jc8qS7K0/SedrmFK5u2I/AAAAAAAAAGU/xh0Va243d8k/s1600-h/iis_automation.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 238px;" src="http://3.bp.blogspot.com/_o9-Jc8qS7K0/SedrmFK5u2I/AAAAAAAAAGU/xh0Va243d8k/s320/iis_automation.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5325343386356005730" /&gt;&lt;/a&gt;&lt;br /&gt;... We are discovering the GUI dedicated to the Web site deployment:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_o9-Jc8qS7K0/SedrsaqpqcI/AAAAAAAAAGc/k-jotM5dW9E/s1600-h/iis_automation2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 238px;" src="http://4.bp.blogspot.com/_o9-Jc8qS7K0/SedrsaqpqcI/AAAAAAAAAGc/k-jotM5dW9E/s320/iis_automation2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5325343495205530050" /&gt;&lt;/a&gt;&lt;br /&gt;As the previous one, GUI is very simple. Four information are needed to deploy the Web Site:&lt;ul&gt;&lt;li&gt;Web server name,&lt;br /&gt;&lt;li&gt;Listening port,&lt;br /&gt;&lt;li&gt;Path to the Web Site source,&lt;br /&gt;&lt;li&gt;Credentials used by the application pool.&lt;/ul&gt;First fields are automatically filled and can be modifiable.&lt;br /&gt;&lt;br /&gt;Let's see the PowerShell code !&lt;br /&gt;&lt;br /&gt;First, we need to check that all specified information are correct:&lt;br /&gt;&lt;br /&gt;&lt;div style='width: 100%; /*height: 100%;*/ overflow: auto; font-family: Consolas, "Courier New", Courier, mono; font-size: 12px; background-color: #DDDDDD; color: #000000; padding: 2px 2px 2px 2px; white-space: nowrap'&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;Checks&amp;nbsp;the&amp;nbsp;Web&amp;nbsp;part&amp;nbsp;parameters.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;return&amp;gt;True&amp;nbsp;if&amp;nbsp;parameters&amp;nbsp;are&amp;nbsp;correct,&amp;nbsp;false&amp;nbsp;otherwise&amp;lt;/return&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #C86400'&gt;function&lt;/span&gt;&amp;nbsp;Check-WebParameters()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$false&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$TxtWebServer&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Text&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Length&amp;nbsp;&lt;span style='color: #C86400'&gt;-gt&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;0&lt;/span&gt;)&amp;nbsp;&lt;span style='color: #C86400'&gt;-and&lt;/span&gt;&lt;br /&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 style='color: #000080'&gt;$TxtWebPort&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Text&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Length&amp;nbsp;&lt;span style='color: #C86400'&gt;-gt&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;0&lt;/span&gt;)&amp;nbsp;&lt;span style='color: #C86400'&gt;-and&lt;/span&gt;&lt;br /&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 style='color: #000080'&gt;$TxtWebPath&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Text&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Length&amp;nbsp;&lt;span style='color: #C86400'&gt;-gt&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;0&lt;/span&gt;)&amp;nbsp;&lt;span style='color: #C86400'&gt;-and&lt;/span&gt;&lt;br /&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 style='color: #000080'&gt;$TxtWebLogin&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Text&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Length&amp;nbsp;&lt;span style='color: #C86400'&gt;-gt&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;0&lt;/span&gt;)&amp;nbsp;&lt;span style='color: #C86400'&gt;-and&lt;/span&gt;&lt;br /&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 style='color: #000080'&gt;$TxtWebPassword&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Text&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Length&amp;nbsp;&lt;span style='color: #C86400'&gt;-gt&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;0&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$TxtWebServer&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Text&amp;nbsp;&lt;span style='color: #C86400'&gt;-match&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;"^\w[\w\d-_]*$"&lt;/span&gt;)&amp;nbsp;&lt;span style='color: #C86400'&gt;-or&lt;/span&gt;&lt;br /&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;(&lt;span style='color: #000080'&gt;$TxtWebServer&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Text&amp;nbsp;&lt;span style='color: #C86400'&gt;-match&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;"^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$"&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;-eq&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$false&lt;/span&gt;)&amp;nbsp;{&lt;br /&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;Display-error&amp;nbsp;&lt;span style='color: #800000'&gt;'Specified&amp;nbsp;server&amp;nbsp;name&amp;nbsp;is&amp;nbsp;invalid'&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span style='color: #C86400'&gt;else&lt;/span&gt;&amp;nbsp;{&lt;br /&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;&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$TxtWebPort&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Text&amp;nbsp;&lt;span style='color: #C86400'&gt;-match&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;"^\d{1,5}$"&lt;/span&gt;)&lt;br /&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;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;-eq&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$false&lt;/span&gt;)&amp;nbsp;{&lt;br /&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;Display-error&amp;nbsp;&lt;span style='color: #800000'&gt;'Specified&amp;nbsp;port&amp;nbsp;is&amp;nbsp;invalid'&lt;/span&gt;&lt;br /&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;&lt;span style='color: #C86400'&gt;else&lt;/span&gt;&amp;nbsp;{&lt;br /&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;&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;Test-Path&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$TxtWebPath&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Text&lt;br /&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;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;-eq&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$false&lt;/span&gt;)&amp;nbsp;{&lt;br /&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;Display-error&amp;nbsp;&lt;span style='color: #800000'&gt;'Specified&amp;nbsp;Web&amp;nbsp;folder&amp;nbsp;is&amp;nbsp;invalid'&lt;/span&gt;&lt;br /&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 style='color: #C86400'&gt;else&lt;/span&gt;&amp;nbsp;{&lt;br /&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;&lt;span style='color: #000080'&gt;$strLogin&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$TxtWebLogin&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Text&lt;br /&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;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$strLogin&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Contains(&lt;span style='color: #800000'&gt;'\'&lt;/span&gt;))&amp;nbsp;{&lt;br /&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;&lt;span style='color: #000080'&gt;$strLogin&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strLogin&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Split(&lt;span style='color: #800000'&gt;'\'&lt;/span&gt;)[&lt;span style='color: #800000'&gt;1&lt;/span&gt;]&lt;br /&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;}&lt;br /&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;&lt;span style='color: #000080'&gt;$objUser&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;SearchOne-InDomain&amp;nbsp;&lt;span style='color: #800000'&gt;''&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;"(samaccountname=$strLogin)"&lt;/span&gt;&lt;br /&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;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$objUser&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;-eq&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$null&lt;/span&gt;)&amp;nbsp;{&lt;br /&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;Display-error&amp;nbsp;&lt;span style='color: #800000'&gt;'Specified&amp;nbsp;user&amp;nbsp;doesn'&lt;/span&gt;&lt;span style='color: #800000'&gt;'t&amp;nbsp;exist&amp;nbsp;in&amp;nbsp;the&amp;nbsp;domain'&lt;/span&gt;&lt;br /&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;&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$false&lt;/span&gt;&lt;br /&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;}&lt;br /&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;}&lt;br /&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;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span style='color: #C86400'&gt;else&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Display-error&amp;nbsp;&lt;span style='color: #800000'&gt;'All&amp;nbsp;fields&amp;nbsp;are&amp;nbsp;required'&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&lt;br /&gt;}&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;Check-WebParameters&lt;/strong&gt; function checks:&lt;ul&gt;&lt;li&gt;Web server name or IP address using a regular expression,&lt;br /&gt;&lt;li&gt;Listening port (a number up to 5 digits),&lt;br /&gt;&lt;li&gt;Existence of the user account used by the application pool. &lt;strong&gt;SearchOne-InDomain&lt;/strong&gt; function makes the job:&lt;br /&gt;&lt;br /&gt;&lt;div style='width: 100%; /*height: 100%;*/ overflow: auto; font-family: Consolas, "Courier New", Courier, mono; font-size: 12px; background-color: #DDDDDD; color: #000000; padding: 2px 2px 2px 2px; white-space: nowrap'&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;Searchs&amp;nbsp;one&amp;nbsp;object&amp;nbsp;in&amp;nbsp;an&amp;nbsp;Active&amp;nbsp;Directory&amp;nbsp;container.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;param&amp;nbsp;name&amp;nbsp;="domainName"&amp;gt;The&amp;nbsp;container&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;param&amp;nbsp;name&amp;nbsp;="filter"&amp;gt;LDAP&amp;nbsp;filter&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;param&amp;nbsp;name&amp;nbsp;="scope"&amp;gt;The&amp;nbsp;scope&amp;nbsp;for&amp;nbsp;the&amp;nbsp;research&amp;nbsp;(optional)&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;returns&amp;gt;Active&amp;nbsp;Directory&amp;nbsp;object&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #C86400'&gt;function&lt;/span&gt;&amp;nbsp;SearchOne-InDomain(&lt;span style='color: #000080'&gt;$container&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$filter&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&lt;br /&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;&lt;span style='color: #000080'&gt;$scope&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;[DirectoryServices&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SearchScope]&lt;span style='color: #C86400'&gt;::&lt;/span&gt;Subtree)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;trap&lt;/span&gt;&amp;nbsp;{&amp;nbsp;&lt;span style='color: #C86400'&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$null&lt;/span&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$entry&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;New-Object&lt;/span&gt;&amp;nbsp;DirectoryServices&lt;span style='color: #C86400'&gt;.&lt;/span&gt;DirectoryEntry(&lt;span style='color: #800000'&gt;"$container"&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$searcher&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;New-Object&lt;/span&gt;&amp;nbsp;DirectoryServices&lt;span style='color: #C86400'&gt;.&lt;/span&gt;DirectorySearcher(&lt;span style='color: #000080'&gt;$entry&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$searcher&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;&lt;span style='color: #C86400'&gt;Filter&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$filter&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$searcher&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SearchScope&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$scope&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$searcher&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;FindOne()&lt;br /&gt;}&lt;/div&gt;&lt;br /&gt;We have already seen all this stuff !&lt;/ul&gt;Well, after having checked all information we can deploy our Web Site !&lt;br /&gt;&lt;br /&gt;&lt;div style='width: 100%; /*height: 100%;*/ overflow: auto; font-family: Consolas, "Courier New", Courier, mono; font-size: 12px; background-color: #DDDDDD; color: #000000; padding: 2px 2px 2px 2px; white-space: nowrap'&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;Installs&amp;nbsp;the&amp;nbsp;IIS&amp;nbsp;website.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #C86400'&gt;function&lt;/span&gt;&amp;nbsp;Deploy-WebServer()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;Check-WebParameters&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;-eq&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$false&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;&lt;span style='color: #C86400'&gt;return&lt;/span&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;Copy-Source&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;-eq&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$false&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;&lt;span style='color: #C86400'&gt;return&lt;/span&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$LblError&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Text&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;''&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$strServer&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$TxtWebServer&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Text&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$strPath&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$TxtWebPath&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Text&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$strWebSiteName&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'Provisioning'&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objLocator&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;New-Object&lt;/span&gt;&amp;nbsp;-com&amp;nbsp;WbemScripting&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SWbemLocator&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objProvider&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objLocator&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;ConnectServer(&lt;span style='color: #000080'&gt;$strServer&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'root/MicrosoftIISv2'&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objService&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objProvider&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Get(&lt;span style='color: #800000'&gt;"IIsWebService='W3SVC'"&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objBindings&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;@(&lt;span style='color: #000080'&gt;$objProvider&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Get(&lt;span style='color: #800000'&gt;'ServerBinding'&lt;/span&gt;)&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SpawnInstance_())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objBindings&lt;/span&gt;[&lt;span style='color: #800000'&gt;0&lt;/span&gt;]&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Properties_&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Item(&lt;span style='color: #800000'&gt;'Port'&lt;/span&gt;)&lt;span style='color: #C86400'&gt;.&lt;/span&gt;value&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$TxtWebPort&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Text&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$createNewSiteMethod&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objService&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Methods_&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Item(&lt;span style='color: #800000'&gt;'CreateNewSite'&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objInParameters&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$createNewSiteMethod&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;InParameters&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SpawnInstance_()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objInParameters&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Properties_&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Item(&lt;span style='color: #800000'&gt;'PathOfRootVirtualDir'&lt;/span&gt;)&lt;span style='color: #C86400'&gt;.&lt;/span&gt;value&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strPath&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objInParameters&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Properties_&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Item(&lt;span style='color: #800000'&gt;'ServerBindings'&lt;/span&gt;)&lt;span style='color: #C86400'&gt;.&lt;/span&gt;value&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objBindings&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objInParameters&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Properties_&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Item(&lt;span style='color: #800000'&gt;'ServerComment'&lt;/span&gt;)&lt;span style='color: #C86400'&gt;.&lt;/span&gt;value&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strWebSiteName&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Display-Info&amp;nbsp;&lt;span style='color: #800000'&gt;"Creating&amp;nbsp;new&amp;nbsp;WebSite&amp;nbsp;'$strWebSiteName'..."&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objOutParameters&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objService&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;ExecMethod_(&lt;span style='color: #800000'&gt;"CreateNewSite"&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objInParameters&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Display-Info&amp;nbsp;&lt;span style='color: #800000'&gt;"WebSite&amp;nbsp;'$strWebSiteName'&amp;nbsp;created"&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$id&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;''&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objOutParameters&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;properties_&amp;nbsp;&lt;span style='color: #C86400'&gt;|&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;%&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$id&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$_&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Value&amp;nbsp;&lt;span style='color: #C86400'&gt;-match&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;"[^']'([^']+)'.*"&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$id&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;&lt;span style='color: #000080'&gt;$id&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$matches&lt;/span&gt;[&lt;span style='color: #800000'&gt;1&lt;/span&gt;]&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$id&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;ToUpper()&amp;nbsp;&lt;span style='color: #C86400'&gt;-match&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;"^W3SVC/\d+$"&lt;/span&gt;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Display-Info&amp;nbsp;&lt;span style='color: #800000'&gt;"Creating&amp;nbsp;new&amp;nbsp;Application&amp;nbsp;Pool&amp;nbsp;'$strWebSiteName'..."&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;Create-ApplicationPool&amp;nbsp;&lt;span style='color: #000080'&gt;$strServer&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strWebSiteName&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;)&amp;nbsp;{&lt;br /&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;Display-Info&amp;nbsp;&lt;span style='color: #800000'&gt;"Configuring&amp;nbsp;Website&amp;nbsp;'$strWebSiteName'"&lt;/span&gt;&lt;br /&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;&lt;span style='color: #000080'&gt;$objSite&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;[ADSI]&lt;span style='color: #800000'&gt;"IIS://$strServer/$id/Root"&lt;/span&gt;&lt;br /&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;&lt;span style='color: #000080'&gt;$objSite&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Put(&lt;span style='color: #800000'&gt;"DefaultDoc"&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;"Default.aspx"&lt;/span&gt;)&lt;br /&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;&lt;span style='color: #000080'&gt;$objSite&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Put(&lt;span style='color: #800000'&gt;"AppPoolId"&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strWebSiteName&lt;/span&gt;)&lt;br /&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;&lt;span style='color: #000080'&gt;$objsite&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;put(&lt;span style='color: #800000'&gt;"AuthFlags"&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;4&lt;/span&gt;)&lt;br /&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;&lt;span style='color: #000080'&gt;$objsite&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Put(&lt;span style='color: #800000'&gt;"AppFriendlyName"&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strWebSiteName&lt;/span&gt;)&lt;br /&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;&lt;span style='color: #000080'&gt;$objsite&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Put(&lt;span style='color: #800000'&gt;"AccessFlags"&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;1&lt;/span&gt;)&lt;br /&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;&lt;span style='color: #000080'&gt;$objsite&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Put(&lt;span style='color: #800000'&gt;"AccessRead"&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$true&lt;/span&gt;)&lt;br /&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;&lt;span style='color: #000080'&gt;$objsite&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Put(&lt;span style='color: #800000'&gt;"AccessScript"&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$true&lt;/span&gt;)&lt;br /&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;&lt;span style='color: #000080'&gt;$objsite&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Put(&lt;span style='color: #800000'&gt;"AccessExecute"&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$true&lt;/span&gt;)&lt;br /&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;&lt;span style='color: #000080'&gt;$objSite&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SetInfo()&lt;br /&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;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;((&lt;span style='color: #C86400'&gt;Get-ChildItem&lt;/span&gt;&amp;nbsp;env&lt;span style='color: #C86400'&gt;:&lt;/span&gt;COMPUTERNAME)&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Value&amp;nbsp;&lt;span style='color: #C86400'&gt;-eq&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strServer&lt;/span&gt;)&amp;nbsp;{&lt;br /&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;Set-FrameWorkVersion&amp;nbsp;&lt;span style='color: #000080'&gt;$id&lt;/span&gt;&lt;br /&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;Display-Info&amp;nbsp;&lt;span style='color: #800000'&gt;"WebSite&amp;nbsp;'$strWebSiteName'&amp;nbsp;successfully&amp;nbsp;created"&lt;/span&gt;&lt;br /&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;&lt;span style='color: #C86400'&gt;else&lt;/span&gt;&amp;nbsp;{&lt;br /&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;Display-Info&amp;nbsp;&lt;span style='color: #800000'&gt;"WebSite&amp;nbsp;'$strWebSiteName'&amp;nbsp;successfully&amp;nbsp;created.&amp;nbsp;"&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;+&lt;/span&gt;&lt;br /&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;&lt;span style='color: #800000'&gt;"You&amp;nbsp;need&amp;nbsp;to&amp;nbsp;manually&amp;nbsp;set&amp;nbsp;up&amp;nbsp;the&amp;nbsp;.Net&amp;nbsp;2&amp;nbsp;version"&lt;/span&gt;&lt;br /&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;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span style='color: #C86400'&gt;else&lt;/span&gt;&amp;nbsp;{&lt;br /&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;Display-Error&amp;nbsp;&lt;span style='color: #800000'&gt;"Error&amp;nbsp;creating&amp;nbsp;Application&amp;nbsp;pool&amp;nbsp;'$strWebSiteName'"&lt;/span&gt;&lt;br /&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;Display-Info&amp;nbsp;&lt;span style='color: #800000'&gt;"WebSite&amp;nbsp;'$strWebSiteName'&amp;nbsp;has&amp;nbsp;not&amp;nbsp;been&amp;nbsp;configured"&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span style='color: #C86400'&gt;else&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Display-Error&amp;nbsp;&lt;span style='color: #800000'&gt;"Invalid&amp;nbsp;WebSite&amp;nbsp;ID&amp;nbsp;($id)"&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Display-Info&amp;nbsp;&lt;span style='color: #800000'&gt;"WebSite&amp;nbsp;'$strWebSiteName'&amp;nbsp;has&amp;nbsp;not&amp;nbsp;been&amp;nbsp;configured"&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;Deploy-WebSite&lt;/strong&gt; function makes the job!&lt;br /&gt;&lt;br /&gt;At the begining of the function, we used &lt;strong&gt;Copy-Source&lt;/strong&gt;: it's a small function called to copy Web Site source files to the Web server destination folder. This function uses Copy-Item Cmdlet (nothing special!).&lt;br /&gt;&lt;br /&gt;Then, we use ADSI to configure IIS! So, we can use this function to deploy a Web Site using IIS 6 and later version!&lt;br /&gt;&lt;br /&gt;The function makes the following operations:&lt;ul&gt;&lt;li&gt;Web Site creation using a specific name and listening port,&lt;br /&gt;&lt;li&gt;Application pool creation using &lt;strong&gt;Create-ApplicationPool&lt;/strong&gt; function:&lt;br /&gt;&lt;br /&gt;&lt;div style='width: 100%; /*height: 100%;*/ overflow: auto; font-family: Consolas, "Courier New", Courier, mono; font-size: 12px; background-color: #DDDDDD; color: #000000; padding: 2px 2px 2px 2px; white-space: nowrap'&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;Creates&amp;nbsp;the&amp;nbsp;IIS&amp;nbsp;application&amp;nbsp;pool.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #C86400'&gt;function&lt;/span&gt;&amp;nbsp;Create-ApplicationPool(&lt;span style='color: #000080'&gt;$strServer&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strAppPoolName&lt;/span&gt;)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;trap&lt;/span&gt;&amp;nbsp;[Exception]&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Display-Info&amp;nbsp;&lt;span style='color: #000080'&gt;$_&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Exception&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Message&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$false&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;continue&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$false&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objApp&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;[ADSI]&lt;span style='color: #800000'&gt;"IIS://$strServer/W3SVC/AppPools/$strAppPoolName"&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$objApp&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;distinguishedname&amp;nbsp;&lt;span style='color: #C86400'&gt;-eq&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$null&lt;/span&gt;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$strDomain&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;([ADSI]&lt;span style='color: #800000'&gt;''&lt;/span&gt;)&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Name&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Value&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objApp&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;[ADSI]&lt;span style='color: #800000'&gt;"IIS://$strServer/W3SVC/AppPools"&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objPool&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objapp&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Create(&lt;span style='color: #800000'&gt;"IIsApplicationPool"&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strAppPoolName&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objPool&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Put(&lt;span style='color: #800000'&gt;'AppPoolIdentityType'&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;3&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$strLogin&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$TxtWebLogin&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Text&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$strLogin&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Contains(&lt;span style='color: #800000'&gt;'\'&lt;/span&gt;)&amp;nbsp;&lt;span style='color: #C86400'&gt;-eq&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$false&lt;/span&gt;)&amp;nbsp;{&lt;br /&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;&lt;span style='color: #000080'&gt;$TxtWebLogin&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Text&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;"$strDomain\$strLogin"&lt;/span&gt;&lt;br /&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;&lt;span style='color: #000080'&gt;$TxtWebLogin&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Refresh()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span style='color: #C86400'&gt;else&lt;/span&gt;&amp;nbsp;{&lt;br /&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;&lt;span style='color: #000080'&gt;$strLogin&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strLogin&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Split(&lt;span style='color: #800000'&gt;'\'&lt;/span&gt;)[&lt;span style='color: #800000'&gt;1&lt;/span&gt;]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Display-Info&amp;nbsp;&lt;span style='color: #800000'&gt;"Setting&amp;nbsp;Application&amp;nbsp;pool&amp;nbsp;credentials&amp;nbsp;to&amp;nbsp;$strLogin..."&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objPool&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Put(&lt;span style='color: #800000'&gt;'WAMUserName'&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$TxtWebLogin&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Text)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objPool&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Put(&lt;span style='color: #800000'&gt;'WAMUserPass'&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$TxtWebPassword&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Text)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objPool&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SetInfo()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Display-Info&amp;nbsp;&lt;span style='color: #800000'&gt;"Adding&amp;nbsp;user&amp;nbsp;$strLogin&amp;nbsp;to&amp;nbsp;group&amp;nbsp;IIS_WPG..."&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objGroup&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;[ADSI]&lt;span style='color: #800000'&gt;"WinNT://$strServer/IIS_WPG"&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objGroup&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Add(&lt;span style='color: #800000'&gt;"WinNT://$strDomain/$strLogin"&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$true&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span style='color: #C86400'&gt;else&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Display-Info&amp;nbsp;&lt;span style='color: #800000'&gt;"Application&amp;nbsp;pool&amp;nbsp;'$strAppPoolName'&amp;nbsp;already&amp;nbsp;exists."&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$true&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&lt;br /&gt;}&lt;/div&gt;&lt;br /&gt;This function also adds the specified user account used by the application pool to the local group IIS_WPG&lt;br /&gt;&lt;li&gt;Web Site configuration:&lt;ul&gt;&lt;li&gt;Dafault web page configured to "Default.aspx"&lt;br /&gt;&lt;li&gt;Application pool assignment&lt;br /&gt;&lt;li&gt;Windows authentication configuration&lt;br /&gt;&lt;li&gt;Permisssions configuration: Read and Execute permissions&lt;/ul&gt;&lt;li&gt;.Net Framework version configuration. This step is available only if the machine running our Solution Accelerator is our Web server. &lt;strong&gt;Set-FrameworkVersion&lt;/strong&gt; function configures the Web Site to use the version 2 of the .NET framework:&lt;br /&gt;&lt;br /&gt;&lt;div style='width: 100%; /*height: 100%;*/ overflow: auto; font-family: Consolas, "Courier New", Courier, mono; font-size: 12px; background-color: #DDDDDD; color: #000000; padding: 2px 2px 2px 2px; white-space: nowrap'&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;Sets&amp;nbsp;the&amp;nbsp;.NET&amp;nbsp;framework&amp;nbsp;version&amp;nbsp;for&amp;nbsp;a&amp;nbsp;given&amp;nbsp;website.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;param&amp;nbsp;name="strID"&amp;gt;Website&amp;nbsp;ID&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #C86400'&gt;function&lt;/span&gt;&amp;nbsp;Set-FrameWorkVersion(&lt;span style='color: #000080'&gt;$strID&lt;/span&gt;)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$strPath&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #C86400'&gt;Get-ChildItem&lt;/span&gt;&amp;nbsp;Env&lt;span style='color: #C86400'&gt;:&lt;/span&gt;windir)&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Value&amp;nbsp;&lt;span style='color: #C86400'&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'\Microsoft.NET\Framework\'&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objDir&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;Get-ChildItem&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strPath&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;|&lt;/span&gt;&amp;nbsp;where&amp;nbsp;{&lt;br /&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;(&lt;span style='color: #000080'&gt;$_&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;GetType()&lt;span style='color: #C86400'&gt;.&lt;/span&gt;ToString()&amp;nbsp;&lt;span style='color: #C86400'&gt;-eq&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'system.io.directoryinfo'&lt;/span&gt;)&amp;nbsp;&lt;span style='color: #C86400'&gt;-And&lt;/span&gt;&lt;br /&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;(&lt;span style='color: #000080'&gt;$_&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;name&amp;nbsp;&lt;span style='color: #C86400'&gt;-match&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;"^(v2.[\d\.]+)$"&lt;/span&gt;)}&amp;nbsp;&lt;span style='color: #C86400'&gt;|&lt;/span&gt;&amp;nbsp;sort&amp;nbsp;name&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$objDir&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;-ne&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$null&lt;/span&gt;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$strPath&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;+=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$matches&lt;/span&gt;[&lt;span style='color: #800000'&gt;1&lt;/span&gt;]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$strPath&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;+=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;"\aspnet_regiis.exe"&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objSI&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;New-Object&lt;/span&gt;&amp;nbsp;System&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Diagnostics&lt;span style='color: #C86400'&gt;.&lt;/span&gt;ProcessStartInfo&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objSI&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;UseShellExecute&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$false&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objSI&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;FileName&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strPath&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objSI&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Arguments&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;"-s&amp;nbsp;$strID/Root"&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objSI&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;RedirectStandardOutput&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$true&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objP&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;[System&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Diagnostics&lt;span style='color: #C86400'&gt;.&lt;/span&gt;&lt;span style='color: #C86400'&gt;Process&lt;/span&gt;]&lt;span style='color: #C86400'&gt;::&lt;/span&gt;Start(&lt;span style='color: #000080'&gt;$objSI&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objP&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;WaitForExit()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/div&gt;&lt;br /&gt;aspnet_regiis.exe binary is executed here!&lt;/ul&gt;All warnings or errors are displayed at the bottom of the window!&lt;br /&gt;&lt;br /&gt;Well, IIS automation is simple! I hope that was not boring :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6950982370652028794-4614287945815152994?l=scriptofen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scriptofen.blogspot.com/feeds/4614287945815152994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://scriptofen.blogspot.com/2009/05/iis-automation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6950982370652028794/posts/default/4614287945815152994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6950982370652028794/posts/default/4614287945815152994'/><link rel='alternate' type='text/html' href='http://scriptofen.blogspot.com/2009/05/iis-automation.html' title='IIS automation'/><author><name>Grégory Schiro</name><uri>http://www.blogger.com/profile/13622288244478060512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_o9-Jc8qS7K0/SWZ25sSkRJI/AAAAAAAAAB8/1vw9G17Rj0A/S220/Sans+titre-2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_o9-Jc8qS7K0/SedrmFK5u2I/AAAAAAAAAGU/xh0Va243d8k/s72-c/iis_automation.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6950982370652028794.post-822426640683139513</id><published>2009-05-25T12:21:00.003+02:00</published><updated>2009-05-25T12:21:44.167+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Solution Accelerator'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>SQL database deployment automation</title><content type='html'>Previous part is &lt;a href="http://scriptofen.blogspot.com/2009/05/web-portal-deployment-automation.html"&gt;HERE&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Before deploying Web Portal, we have to set up the database: Which web portal haven't a database... ? :)&lt;br /&gt;&lt;br /&gt;So, that's the first job of our Solution Accelerator. In the previous post, you have seen the graphical user interface: let's use it !&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_o9-Jc8qS7K0/SdpTQbvkfVI/AAAAAAAAAFU/XY3k9SKl9Xs/s1600-h/WebPortalAutomation_SQL.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 239px;" src="http://2.bp.blogspot.com/_o9-Jc8qS7K0/SdpTQbvkfVI/AAAAAAAAAFU/XY3k9SKl9Xs/s320/WebPortalAutomation_SQL.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5321657451481955666" /&gt;&lt;/a&gt;So, just click on the first menu to deploy database !&lt;br /&gt;&lt;br /&gt;A new dedicated screen is displayed:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_o9-Jc8qS7K0/Sdprt5JTnQI/AAAAAAAAAFc/tP3OKgZfaok/s1600-h/WebPortalAutomation_DeploySQL.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 238px;" src="http://3.bp.blogspot.com/_o9-Jc8qS7K0/Sdprt5JTnQI/AAAAAAAAAFc/tP3OKgZfaok/s320/WebPortalAutomation_DeploySQL.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5321684345869802754" /&gt;&lt;/a&gt;It is a very simple GUI!&lt;br /&gt;SQL server name and instance name are the only require fields and all we need is to click on the &lt;strong&gt;OK&lt;/strong&gt; button...&lt;br /&gt;&lt;br /&gt;However, there is one thing we can do using this GUI: configuring the user account which will be use to deploy the database. This can be done on the top of the window: we can choose if you want to use windows authentication (current logged user) or an other account.&lt;br /&gt;&lt;br /&gt;At the bottom of the window, there is an empty space... So, we won't just keep this space empty! In fact, this area is dedicated to log: all information, warnings, errors will be display here.&lt;br /&gt;&lt;br /&gt;Each step, each traitment of the script is described and displayed in the log area. That's the &lt;strong&gt;Display-Info&lt;/strong&gt; and &lt;strong&gt;Display-Error&lt;/strong&gt; functions job:&lt;br /&gt;&lt;br /&gt;&lt;div style='width: 100%; /*height: 100%;*/ overflow: auto; font-family: Consolas, "Courier New", Courier, mono; font-size: 12px; background-color: #DDDDDD; color: #000000; padding: 2px 2px 2px 2px; white-space: nowrap'&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;Adds&amp;nbsp;a&amp;nbsp;log.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;param&amp;nbsp;name="str"&amp;gt;Message&amp;nbsp;to&amp;nbsp;add&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;param&amp;nbsp;name="strType"&amp;gt;Message&amp;nbsp;type&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #C86400'&gt;function&lt;/span&gt;&amp;nbsp;Log-Message(&lt;span style='color: #000080'&gt;$str&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strType&lt;/span&gt;)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$strDate&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;[DateTime]&lt;span style='color: #C86400'&gt;::&lt;/span&gt;Now&lt;span style='color: #C86400'&gt;.&lt;/span&gt;ToString(&lt;span style='color: #800000'&gt;'G'&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$strType&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strType&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;ToUpper()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$strLine&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;"[$strDate]&amp;nbsp;$strType:&amp;nbsp;$str"&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;Write-Verbose&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strLine&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$script&lt;/span&gt;&lt;span style='color: #C86400'&gt;:&lt;/span&gt;strLog&amp;nbsp;&lt;span style='color: #C86400'&gt;+=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strLine&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;"`r`n"&lt;/span&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;Displays&amp;nbsp;error&amp;nbsp;message.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;param&amp;nbsp;name="str"&amp;gt;Message&amp;nbsp;to&amp;nbsp;display&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #C86400'&gt;function&lt;/span&gt;&amp;nbsp;Display-Error(&lt;span style='color: #000080'&gt;$str&lt;/span&gt;)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$LblInfo&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Text&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;''&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$LblError&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Text&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$str&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$LblError&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Refresh()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Log-Message&amp;nbsp;&lt;span style='color: #000080'&gt;$str&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'Error'&lt;/span&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;Display&amp;nbsp;information&amp;nbsp;message.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;param&amp;nbsp;name="str"&amp;gt;Message&amp;nbsp;to&amp;nbsp;display&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #C86400'&gt;function&lt;/span&gt;&amp;nbsp;Display-Info(&lt;span style='color: #000080'&gt;$str&lt;/span&gt;)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$LblInfo&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Text&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$str&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$LblInfo&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Refresh()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Log-Message&amp;nbsp;&lt;span style='color: #000080'&gt;$str&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'Info'&lt;/span&gt;&lt;br /&gt;}&lt;/div&gt;&lt;br /&gt;All theses displayed messages are logged thanks to &lt;strong&gt;Log-Message&lt;/strong&gt; function which adds a date to the message.&lt;br /&gt;Well, logging is very helpful to debug !&lt;br /&gt;&lt;br /&gt;Since we saw the GUI and we have all prerequires we need: SQL scripts which will be executed, let's see the most interesting part: How to deploy the database using PowerShell!&lt;br /&gt;&lt;br /&gt;First, we have to check that we can access to the SQL scripts.&lt;br /&gt;We declare some variables in the script scope:&lt;br /&gt;&lt;br /&gt;&lt;div style='width: 100%; /*height: 100%;*/ overflow: auto; font-family: Consolas, "Courier New", Courier, mono; font-size: 12px; background-color: #DDDDDD; color: #000000; padding: 2px 2px 2px 2px; white-space: nowrap'&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;Path&amp;nbsp;to&amp;nbsp;current&amp;nbsp;script.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #000080'&gt;$script&lt;/span&gt;&lt;span style='color: #C86400'&gt;:&lt;/span&gt;strPath&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$MyInvocation&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;MyCommand&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Path&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;SQL&amp;nbsp;scripts&amp;nbsp;to&amp;nbsp;execute&amp;nbsp;during&amp;nbsp;installation&amp;nbsp;step.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;Order&amp;nbsp;is&amp;nbsp;essential.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #000080'&gt;$script&lt;/span&gt;&lt;span style='color: #C86400'&gt;:&lt;/span&gt;arrSQLGenerateDBScripts&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'CreateDatabase.sql'&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&lt;br /&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;&lt;span style='color: #800000'&gt;'ProvisioningDatabase.sql'&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;Installation&amp;nbsp;logs.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #000080'&gt;$script&lt;/span&gt;&lt;span style='color: #C86400'&gt;:&lt;/span&gt;strLog&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;''&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;We used the &lt;strong&gt;$MyInvocation&lt;/strong&gt; PowerShell builtin variable to get our last executed command line: usefull to get the full path where the script is located!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;arrSQLGenerateDBScripts&lt;/strong&gt; variable contains an ordered list of SQL scripts to execute.&lt;br /&gt;&lt;br /&gt;Then, &lt;strong&gt;strLog&lt;/strong&gt; variable is a simple string which is our log.&lt;br /&gt;&lt;br /&gt;The first thing to do is to check the SQL scripts access:&lt;br /&gt;&lt;br /&gt;&lt;div style='width: 100%; /*height: 100%;*/ overflow: auto; font-family: Consolas, "Courier New", Courier, mono; font-size: 12px; background-color: #DDDDDD; color: #000000; padding: 2px 2px 2px 2px; white-space: nowrap'&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;Checks&amp;nbsp;SQL&amp;nbsp;files.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;return&amp;gt;True&amp;nbsp;on&amp;nbsp;success,&amp;nbsp;false&amp;nbsp;otherwise&amp;lt;/return&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #C86400'&gt;function&lt;/span&gt;&amp;nbsp;Check-SQLFiles()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;trap&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$blnRes&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$false&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;continue&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$tab&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$script&lt;/span&gt;&lt;span style='color: #C86400'&gt;:&lt;/span&gt;strPath&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Split(&lt;span style='color: #800000'&gt;'\'&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$strPath&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;''&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;for&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$i&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;0&lt;/span&gt;;&amp;nbsp;&lt;span style='color: #000080'&gt;$i&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;-lt&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$tab&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;length&amp;nbsp;&lt;span style='color: #C86400'&gt;-&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;2&lt;/span&gt;;&amp;nbsp;&lt;span style='color: #000080'&gt;$i&lt;/span&gt;&lt;span style='color: #C86400'&gt;+&lt;/span&gt;&lt;span style='color: #C86400'&gt;+&lt;/span&gt;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$strPath&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;+=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$tab&lt;/span&gt;[&lt;span style='color: #000080'&gt;$i&lt;/span&gt;]&amp;nbsp;&lt;span style='color: #C86400'&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'\'&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$blnRes&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$true&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$true&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Display-Info&amp;nbsp;&lt;span style='color: #800000'&gt;"Checking&amp;nbsp;files&amp;nbsp;in&amp;nbsp;$strPath..."&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$script&lt;/span&gt;&lt;span style='color: #C86400'&gt;:&lt;/span&gt;arrSQLGenerateDBScripts&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Length&amp;nbsp;&lt;span style='color: #C86400'&gt;-gt&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;0&lt;/span&gt;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;foreach&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$strFile&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;in&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$script&lt;/span&gt;&lt;span style='color: #C86400'&gt;:&lt;/span&gt;arrSQLGenerateDBScripts)&amp;nbsp;{&lt;br /&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;&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;Test-Path&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;"$strPath\Database\$strFile"&lt;/span&gt;&lt;br /&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;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;-eq&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$false&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;&lt;span style='color: #C86400'&gt;break&lt;/span&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$blnRes&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$blnRes&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;-and&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$blnRes&lt;/span&gt;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Display-Info&amp;nbsp;&lt;span style='color: #800000'&gt;"Installation&amp;nbsp;files&amp;nbsp;successfully&amp;nbsp;checked"&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span style='color: #C86400'&gt;else&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Display-Error&amp;nbsp;&lt;span style='color: #800000'&gt;"Installation&amp;nbsp;files&amp;nbsp;missing."&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$blnRes&lt;/span&gt;&lt;br /&gt;}&lt;/div&gt;&lt;br /&gt;This function checks that scripts' names stored in the script variable exist and are located in the &lt;strong&gt;../Database&lt;/strong&gt; folder.&lt;br /&gt;&lt;br /&gt;Now, it's time to execute the SQL scripts!&lt;br /&gt;We have to connect to the SQL database using a connection string:&lt;br /&gt;&lt;br /&gt;&lt;div style='width: 100%; /*height: 100%;*/ overflow: auto; font-family: Consolas, "Courier New", Courier, mono; font-size: 12px; background-color: #DDDDDD; color: #000000; padding: 2px 2px 2px 2px; white-space: nowrap'&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;Generate&amp;nbsp;the&amp;nbsp;SQL&amp;nbsp;connection&amp;nbsp;string.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;param&amp;nbsp;name="strDB"&amp;gt;Database&amp;nbsp;name&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;return&amp;gt;SQL&amp;nbsp;connection&amp;nbsp;string&amp;lt;/return&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #C86400'&gt;function&lt;/span&gt;&amp;nbsp;Generate-StringConnection(&lt;span style='color: #000080'&gt;$strDB&lt;/span&gt;)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$strInstance&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$TxtDBServer&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Text&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$TxtDBInstance&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Text&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Length&amp;nbsp;&lt;span style='color: #C86400'&gt;-gt&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;0&lt;/span&gt;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$strInstance&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;+=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'\'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$TxtDBInstance&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Text&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$strInstance&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strInstance&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;ToUpper()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objBuilder&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;New-Object&lt;/span&gt;&amp;nbsp;System&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Data&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SqlClient&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SqlConnectionStringBuilder&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objBuilder&lt;/span&gt;[&lt;span style='color: #800000'&gt;'Application&amp;nbsp;Name'&lt;/span&gt;]&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'Web&amp;nbsp;Portal'&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objBuilder&lt;/span&gt;[&lt;span style='color: #800000'&gt;'Data&amp;nbsp;Source'&lt;/span&gt;]&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strInstance&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objBuilder&lt;/span&gt;[&lt;span style='color: #800000'&gt;'Initial&amp;nbsp;Catalog'&lt;/span&gt;]&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strDB&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$ChkWindowsAuth&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Checked&amp;nbsp;&lt;span style='color: #C86400'&gt;-eq&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$false&lt;/span&gt;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objBuilder&lt;/span&gt;[&lt;span style='color: #800000'&gt;'User&amp;nbsp;Id'&lt;/span&gt;]&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$TxtLogin&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Text&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objBuilder&lt;/span&gt;[&lt;span style='color: #800000'&gt;'Password'&lt;/span&gt;]&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$TxtPassword&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Text&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span style='color: #C86400'&gt;else&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objBuilder&lt;/span&gt;[&lt;span style='color: #800000'&gt;'Integrated&amp;nbsp;Security'&lt;/span&gt;]&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$true&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objBuilder&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;ConnectionString&lt;br /&gt;}&lt;/div&gt;&lt;br /&gt;This function needs a database's name which will be used by the "Initial Catalog" parameter of the connection string.&lt;br /&gt;If no SQL instance's name is provided, the server's name is used (default instance).&lt;br /&gt;&lt;br /&gt;Then, we can write the function to execute the SQL scripts:&lt;br /&gt;&lt;br /&gt;&lt;div style='width: 100%; /*height: 100%;*/ overflow: auto; font-family: Consolas, "Courier New", Courier, mono; font-size: 12px; background-color: #DDDDDD; color: #000000; padding: 2px 2px 2px 2px; white-space: nowrap'&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;Executes&amp;nbsp;a&amp;nbsp;SQL&amp;nbsp;script.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;param&amp;nbsp;name="strScript"&amp;gt;Script&amp;nbsp;full&amp;nbsp;name&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;param&amp;nbsp;name="objSQL"&amp;gt;SQL&amp;nbsp;connection&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;return&amp;gt;True&amp;nbsp;on&amp;nbsp;success,&amp;nbsp;false&amp;nbsp;otherwise&amp;lt;/return&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #C86400'&gt;function&lt;/span&gt;&amp;nbsp;Execute-SQLScript(&lt;span style='color: #000080'&gt;$objSQL&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strScript&lt;/span&gt;)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;trap&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Display-Error&amp;nbsp;&lt;span style='color: #000080'&gt;$_&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Exception&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Message&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$false&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;continue&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;Test-Path&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strScript&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Display-Info&amp;nbsp;&lt;span style='color: #800000'&gt;"Executing&amp;nbsp;script&amp;nbsp;$strScript..."&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objSQLCmd&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;New-Object&lt;/span&gt;&amp;nbsp;System&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Data&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SqlClient&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SqlCommand&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objSQLCmd&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Connection&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objSQL&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$strContent&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;''&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;foreach&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$strLine&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;in&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;Get-Content&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strScript&lt;/span&gt;)&amp;nbsp;{&lt;br /&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;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;-eq&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$false&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;&lt;span style='color: #C86400'&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&amp;nbsp;}&lt;br /&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;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$strLine&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;ToUpper()&amp;nbsp;&lt;span style='color: #C86400'&gt;-match&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;"^\s*GO\s*$"&lt;/span&gt;)&amp;nbsp;{&lt;br /&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;&lt;span style='color: #000080'&gt;$objSQLCmd&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;CommandText&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strContent&lt;/span&gt;&lt;br /&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;&lt;span style='color: #000080'&gt;$objSQLCmd&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;ExecuteNonQuery()&amp;nbsp;&lt;span style='color: #C86400'&gt;|&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;Out-Null&lt;/span&gt;&lt;br /&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;&lt;span style='color: #000080'&gt;$strContent&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;''&lt;/span&gt;&lt;br /&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;&lt;span style='color: #C86400'&gt;else&lt;/span&gt;&amp;nbsp;{&lt;br /&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;&lt;span style='color: #000080'&gt;$strContent&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;+=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strLine&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;"`r`n"&lt;/span&gt;&lt;br /&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;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span style='color: #C86400'&gt;else&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$LblError&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Text&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;"File&amp;nbsp;$strScript&amp;nbsp;not&amp;nbsp;found"&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&lt;br /&gt;}&lt;/div&gt;&lt;br /&gt;There are more than one method to execute a SQL script. Here, we read the SQL script file line per line and execute the SQL request if we find the "GO" instruction.&lt;br /&gt;&lt;br /&gt;Oh ! That's a chance to explain some regular expression basis !&lt;br /&gt;&lt;br /&gt;"^\s*GO\s*$" string means that we search a string containing a GO surrounded by spaces (or not)!&lt;br /&gt;&lt;br /&gt;Because it is relevant to know if the function has successfully executed the script, it returns a boolean :)&lt;br /&gt;&lt;br /&gt;Well, at this point we have all elements to deploy the database:&lt;br /&gt;&lt;br /&gt;&lt;div style='width: 100%; /*height: 100%;*/ overflow: auto; font-family: Consolas, "Courier New", Courier, mono; font-size: 12px; background-color: #DDDDDD; color: #000000; padding: 2px 2px 2px 2px; white-space: nowrap'&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;Installs&amp;nbsp;the&amp;nbsp;SQL&amp;nbsp;database.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #008000'&gt;###&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #C86400'&gt;function&lt;/span&gt;&amp;nbsp;Install-Database()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;trap&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Display-Error&amp;nbsp;&lt;span style='color: #000080'&gt;$_&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Exception&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Message&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;((&lt;span style='color: #000080'&gt;$objSQL&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;-ne&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$null&lt;/span&gt;)&amp;nbsp;&lt;span style='color: #C86400'&gt;-and&lt;/span&gt;&lt;br /&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;(&lt;span style='color: #000080'&gt;$objSQL&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;State&amp;nbsp;&lt;span style='color: #C86400'&gt;-eq&lt;/span&gt;&amp;nbsp;[Data&lt;span style='color: #C86400'&gt;.&lt;/span&gt;ConnectionState]&lt;span style='color: #C86400'&gt;::&lt;/span&gt;Open))&amp;nbsp;{&lt;br /&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;&lt;span style='color: #000080'&gt;$objSQL&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Close()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$false&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;continue&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$LblError&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Text&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;''&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objSQL&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;New-Object&lt;/span&gt;&amp;nbsp;System&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Data&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SqlClient&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SqlConnection&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objSQL&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;ConnectionString&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;Generate-StringConnection&amp;nbsp;&lt;span style='color: #800000'&gt;'master'&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Display-Info&amp;nbsp;&lt;span style='color: #800000'&gt;"Opening&amp;nbsp;database&amp;nbsp;connection..."&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objSQL&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Open()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$objSQL&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;State&amp;nbsp;&lt;span style='color: #C86400'&gt;-eq&lt;/span&gt;&amp;nbsp;[Data&lt;span style='color: #C86400'&gt;.&lt;/span&gt;ConnectionState]&lt;span style='color: #C86400'&gt;::&lt;/span&gt;Open)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$strPath&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;Get-SQLScriptPath&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;foreach&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$strScript&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;in&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$script&lt;/span&gt;&lt;span style='color: #C86400'&gt;:&lt;/span&gt;arrSQLGenerateDBScripts)&amp;nbsp;{&lt;br /&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;&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;Execute-SQLScript&amp;nbsp;&lt;span style='color: #000080'&gt;$objSQL&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;"$strPath\$strScript"&lt;/span&gt;&lt;br /&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;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;-eq&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$false&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;&lt;span style='color: #C86400'&gt;break&lt;/span&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objSQL&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Close()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Display-Info&amp;nbsp;&lt;span style='color: #800000'&gt;"Database&amp;nbsp;connection&amp;nbsp;closed"&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;)&amp;nbsp;{&lt;br /&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;Display-Info&amp;nbsp;&lt;span style='color: #800000'&gt;"Database&amp;nbsp;successfully&amp;nbsp;installed"&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span style='color: #C86400'&gt;else&lt;/span&gt;&amp;nbsp;{&lt;br /&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;Display-Error&amp;nbsp;&lt;span style='color: #800000'&gt;"Error&amp;nbsp;executing&amp;nbsp;script&amp;nbsp;$strPath\$strScript."&lt;/span&gt;&lt;br /&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;Display-Info&amp;nbsp;&lt;span style='color: #800000'&gt;"Database&amp;nbsp;installation&amp;nbsp;aborted"&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/div&gt;&lt;br /&gt;This function uses the previously detailed functions and deploy the database in few steps:&lt;ul&gt;&lt;li&gt;Connection string creation&lt;br /&gt;&lt;li&gt;Database connection opening&lt;br /&gt;&lt;li&gt;SQL script execution&lt;br /&gt;&lt;li&gt;Database connection closing&lt;/ul&gt;All theses steps are described in the log area of the window.&lt;br /&gt;&lt;br /&gt;Next step is to deploy our Web Portal: IIS Automation !&lt;br /&gt;See you soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6950982370652028794-822426640683139513?l=scriptofen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scriptofen.blogspot.com/feeds/822426640683139513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://scriptofen.blogspot.com/2009/05/sql-database-deployment-automation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6950982370652028794/posts/default/822426640683139513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6950982370652028794/posts/default/822426640683139513'/><link rel='alternate' type='text/html' href='http://scriptofen.blogspot.com/2009/05/sql-database-deployment-automation.html' title='SQL database deployment automation'/><author><name>Grégory Schiro</name><uri>http://www.blogger.com/profile/13622288244478060512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_o9-Jc8qS7K0/SWZ25sSkRJI/AAAAAAAAAB8/1vw9G17Rj0A/S220/Sans+titre-2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_o9-Jc8qS7K0/SdpTQbvkfVI/AAAAAAAAAFU/XY3k9SKl9Xs/s72-c/WebPortalAutomation_SQL.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6950982370652028794.post-7770593595704435716</id><published>2009-05-15T13:15:00.001+02:00</published><updated>2009-05-15T13:15:40.176+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Solution Accelerator'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Web portal deployment automation</title><content type='html'>Web Portal deployment is not really easy. You have to check all prerequires, deploy source, check permissions, configure, and more...!&lt;br /&gt;&lt;br /&gt;Here, just one simple thing will be done : Deploy a web portal using a single button : a pretty one !&lt;br /&gt;&lt;br /&gt;So, I propose to make a kind of Solution Accelerator !&lt;br /&gt;&lt;br /&gt;Let's see the graphical user interface (GUI)...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_o9-Jc8qS7K0/SdJyRTY1E4I/AAAAAAAAAFM/v_07IOEsIBI/s1600-h/WebPortalAutomation.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 239px;" src="http://3.bp.blogspot.com/_o9-Jc8qS7K0/SdJyRTY1E4I/AAAAAAAAAFM/v_07IOEsIBI/s320/WebPortalAutomation.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5319439751465735042" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;GUI is very simple, that's the goal ! It brings to light differents steps which will be detailed in the following posts:&lt;ul&gt;&lt;li&gt;SQL database deployment (SQL script execution)&lt;br /&gt;&lt;li&gt;Web portal deployment (IIS automation)&lt;br /&gt;&lt;li&gt;Web portal configuration (Acive Directory, universe... interaction)&lt;/ul&gt;So, the only thing to do rigth now is to launch our PowerShell session!&lt;br /&gt;&lt;br /&gt;See you soon for the first step!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6950982370652028794-7770593595704435716?l=scriptofen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scriptofen.blogspot.com/feeds/7770593595704435716/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://scriptofen.blogspot.com/2009/05/web-portal-deployment-automation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6950982370652028794/posts/default/7770593595704435716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6950982370652028794/posts/default/7770593595704435716'/><link rel='alternate' type='text/html' href='http://scriptofen.blogspot.com/2009/05/web-portal-deployment-automation.html' title='Web portal deployment automation'/><author><name>Grégory Schiro</name><uri>http://www.blogger.com/profile/13622288244478060512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_o9-Jc8qS7K0/SWZ25sSkRJI/AAAAAAAAAB8/1vw9G17Rj0A/S220/Sans+titre-2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_o9-Jc8qS7K0/SdJyRTY1E4I/AAAAAAAAAFM/v_07IOEsIBI/s72-c/WebPortalAutomation.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6950982370652028794.post-4092412007377165127</id><published>2009-05-14T09:36:00.001+02:00</published><updated>2009-05-14T09:36:05.789+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell 2'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenXML'/><title type='text'>PowerShell 2 &amp; OpenXML: Generate a server form</title><content type='html'>That's it, now we can generate a server form in 4 steps :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://scriptofen.blogspot.com/2009/05/create-server-form-with-powershell-2.html"&gt;Part 1&lt;/a&gt; : Prerequires installation and configuration.&lt;br /&gt;&lt;li&gt;&lt;a href="http://scriptofen.blogspot.com/2009/05/create-server-form-with-powershell-2_08.html"&gt;Part 2&lt;/a&gt; : PowerShell module creation collecting software and hardware data from a remote machine.&lt;br /&gt;&lt;li&gt;&lt;a href="http://scriptofen.blogspot.com/2009/05/create-server-form-with-powershell-2_09.html"&gt;Part 3&lt;/a&gt; : Word 2007 template creation.&lt;br /&gt;&lt;li&gt;&lt;a href="http://scriptofen.blogspot.com/2009/05/create-server-form-with-powershell-2_10.html"&gt;Part 4&lt;/a&gt; : Server form generation.&lt;/ul&gt;See you soon for the next article !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6950982370652028794-4092412007377165127?l=scriptofen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scriptofen.blogspot.com/feeds/4092412007377165127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://scriptofen.blogspot.com/2009/05/powershell-2-openxml-generate-server.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6950982370652028794/posts/default/4092412007377165127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6950982370652028794/posts/default/4092412007377165127'/><link rel='alternate' type='text/html' href='http://scriptofen.blogspot.com/2009/05/powershell-2-openxml-generate-server.html' title='PowerShell 2 &amp; OpenXML: Generate a server form'/><author><name>Grégory Schiro</name><uri>http://www.blogger.com/profile/13622288244478060512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_o9-Jc8qS7K0/SWZ25sSkRJI/AAAAAAAAAB8/1vw9G17Rj0A/S220/Sans+titre-2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6950982370652028794.post-2489188923628215749</id><published>2009-05-10T02:24:00.003+02:00</published><updated>2009-05-10T14:26:16.132+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell 2'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenXML'/><title type='text'>Create a server form with PowerShell 2 &amp; Word 2007 (Part 4)</title><content type='html'>Previous part of this article is &lt;a href="http://scriptofen.blogspot.com/2009/05/create-server-form-with-powershell-2_09.html"&gt;HERE&lt;/a&gt; !&lt;br /&gt;&lt;br /&gt;This is the last part. We will be able to generate server form using PowerShell !&lt;br /&gt;&lt;br /&gt;All we have to do is to write some functions to update our Word document.&lt;br /&gt;&lt;br /&gt;&lt;div style='width: 100%; /*height: 100%;*/ overflow: auto; font-family: Consolas, "Courier New", Courier, mono; font-size: 12px; background-color: #DDDDDD; color: #000000; padding: 2px 2px 2px 2px; white-space: nowrap'&gt;&lt;span style='color: #C86400'&gt;function&lt;/span&gt;&amp;nbsp;Set-OpenXmlText(&lt;span style='color: #000080'&gt;$objNode&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNsMgr&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strData&lt;/span&gt;)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$blnIsCheckBox&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$false&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNodeT&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$null&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNodeR&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$null&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNodeTmp&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNode&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SelectSingleNode(&lt;span style='color: #800000'&gt;'w:tc'&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNsMgr&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$objNodeTmp&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;-ne&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;&lt;span style='color: #000080'&gt;$objNode&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNodeTmp&lt;/span&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNodeTmp&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNode&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SelectSingleNode(&lt;span style='color: #800000'&gt;'w:p'&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNsMgr&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$objNodeTmp&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;-ne&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;&lt;span style='color: #000080'&gt;$objNode&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNodeTmp&lt;/span&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNodes&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNode&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SelectNodes(&lt;span style='color: #800000'&gt;'w:r'&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNsMgr&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;foreach&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$objNodeR&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;in&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNodes&lt;/span&gt;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNodeSYM&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNodeR&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SelectSingleNode(&lt;span style='color: #800000'&gt;'w:sym'&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNsMgr&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$blnIsCheckBox&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNodeSYM&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;-ne&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$null&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$blnIsCheckBox&lt;/span&gt;)&amp;nbsp;{&lt;br /&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;&lt;span style='color: #000080'&gt;$objAttr&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNodeSYM&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Attributes&amp;nbsp;&lt;span style='color: #C86400'&gt;|&lt;/span&gt;&lt;br /&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 style='color: #C86400'&gt;where-Object&lt;/span&gt;&amp;nbsp;{&amp;nbsp;&lt;span style='color: #000080'&gt;$_&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Name&amp;nbsp;&lt;span style='color: #C86400'&gt;-eq&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'w:char'&lt;/span&gt;}&lt;br /&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;&lt;span style='color: #000080'&gt;$objAttr&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Value&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'F0A8'&lt;/span&gt;&lt;br /&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;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$strData&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;-eq&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$true&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;&lt;span style='color: #000080'&gt;$objAttr&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Value&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'00FE'&lt;/span&gt;&amp;nbsp;}&lt;br /&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;&lt;span style='color: #C86400'&gt;break&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNodeT&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNodeR&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SelectSingleNode(&lt;span style='color: #800000'&gt;'w:t'&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNsMgr&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$objNodeT&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;-ne&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;&lt;span style='color: #000080'&gt;$objNodeT&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;InnerText&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;''&lt;/span&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;((&lt;span style='color: #C86400'&gt;-not&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$blnIsCheckBox&lt;/span&gt;)&amp;nbsp;&lt;span style='color: #C86400'&gt;-And&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$objNodeT&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;-ne&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$null&lt;/span&gt;))&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNodeT&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;InnerText&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strData&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/div&gt;&lt;br /&gt;We won't go inside the OpenXML format however we will need an overview and some basis to understand &lt;strong&gt;Set-OpenXmlText&lt;/strong&gt; function. Nothing complex, don't worry !&lt;br /&gt;&lt;br /&gt;The first thing we need is to understand what's happen when a content control is inserted:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_o9-Jc8qS7K0/SZ60f-nEmJI/AAAAAAAAAEk/0EYAluQxMdo/s1600-h/ContentControl.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 141px; height: 53px;" src="http://4.bp.blogspot.com/_o9-Jc8qS7K0/SZ60f-nEmJI/AAAAAAAAAEk/0EYAluQxMdo/s320/ContentControl.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5304875872564844690" /&gt;&lt;/a&gt;&lt;br /&gt;When we change the content of the Word document, we change the file &lt;strong&gt;/word/document.xml&lt;/strong&gt; in the DOCX package. In fact, we add the following tags:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_o9-Jc8qS7K0/SZ601FU_TGI/AAAAAAAAAEs/VYMXSzuWTXc/s1600-h/ContentControlXML.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 210px;" src="http://4.bp.blogspot.com/_o9-Jc8qS7K0/SZ601FU_TGI/AAAAAAAAAEs/VYMXSzuWTXc/s320/ContentControlXML.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5304876235145301090" /&gt;&lt;/a&gt;&lt;br /&gt;The content control tag is &lt;strong&gt;w:sdt&lt;/strong&gt; which is divided into two parts (green et red color on the image).&lt;br /&gt;&lt;br /&gt;Green part (&lt;strong&gt;w:sdtPr&lt;/strong&gt; tag) gathers all content control properties : by example, its name. In the example, the content control name is &lt;strong&gt;FctNetworkInfrastructure&lt;/strong&gt;. This name is get by &lt;strong&gt;Get-OpenXmlContentCtrlAlias&lt;/strong&gt; function which is detailed in &lt;a href="http://scriptofen.blogspot.com/2009/05/create-server-form-with-powershell-2_09.html"&gt;the previous article&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Set-OpenXmlText&lt;/strong&gt; function will change the blue part (&lt;strong&gt;w:sdtContent&lt;/strong&gt; tag) which is the content of the content control!&lt;br /&gt;&lt;br /&gt;That's all !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6950982370652028794-2489188923628215749?l=scriptofen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scriptofen.blogspot.com/feeds/2489188923628215749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://scriptofen.blogspot.com/2009/05/create-server-form-with-powershell-2_10.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6950982370652028794/posts/default/2489188923628215749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6950982370652028794/posts/default/2489188923628215749'/><link rel='alternate' type='text/html' href='http://scriptofen.blogspot.com/2009/05/create-server-form-with-powershell-2_10.html' title='Create a server form with PowerShell 2 &amp; Word 2007 (Part 4)'/><author><name>Grégory Schiro</name><uri>http://www.blogger.com/profile/13622288244478060512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_o9-Jc8qS7K0/SWZ25sSkRJI/AAAAAAAAAB8/1vw9G17Rj0A/S220/Sans+titre-2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_o9-Jc8qS7K0/SZ60f-nEmJI/AAAAAAAAAEk/0EYAluQxMdo/s72-c/ContentControl.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6950982370652028794.post-7910768461997576423</id><published>2009-05-09T19:20:00.001+02:00</published><updated>2009-05-09T19:21:04.386+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell 2'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenXML'/><title type='text'>Create a server form with PowerShell 2 &amp; Word 2007 (Part 3)</title><content type='html'>Previous part of this post is &lt;a href="http://scriptofen.blogspot.com/2009/05/create-server-form-with-powershell-2_08.html"&gt;HERE&lt;/a&gt; !&lt;br /&gt;&lt;br /&gt;Now we get remote server information, we can create our Word 2007 template by hand. By hand ? Why ? Because our script will refresh some parts of this document. So, the script will be independant of the template and we will be able to created a template with our company logo and colors.&lt;br /&gt;&lt;br /&gt;PowerShell will write in parts of the document. Theses parts will be called Content Control ! We can insert a content control in the Word 2007 « developer » tab and the « Controls » group:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_o9-Jc8qS7K0/SZX1yTFm1MI/AAAAAAAAAEU/-5CviRRFJvI/s1600-h/Untitled.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 96px;" src="http://3.bp.blogspot.com/_o9-Jc8qS7K0/SZX1yTFm1MI/AAAAAAAAAEU/-5CviRRFJvI/s320/Untitled.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5302414380764681410" /&gt;&lt;/a&gt;&lt;br /&gt;For each information we get in the previous post (using our PowerShell module), we will insert a content control in our document.&lt;br /&gt;&lt;br /&gt;When a content control is inserted, we can specify a name. Our PowerShell script will be able to choose the part of the document to complete matching names of content controls and object properties names.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_o9-Jc8qS7K0/SZX2Pa3inUI/AAAAAAAAAEc/U9qCzDdqhGw/s1600-h/Untitled.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 285px; height: 242px;" src="http://3.bp.blogspot.com/_o9-Jc8qS7K0/SZX2Pa3inUI/AAAAAAAAAEc/U9qCzDdqhGw/s320/Untitled.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5302414881069374786" /&gt;&lt;/a&gt;&lt;br /&gt;In the previous part of this post, we wrote some functions: &lt;span style="font-weight:bold;"&gt;Get-ComputerHardware&lt;/span&gt; and &lt;span style="font-weight:bold;"&gt;Get-ComputerSoftware&lt;/span&gt;. Theses functions return a custom object: each property is an information extracted from the remote computer.&lt;br /&gt;&lt;br /&gt;The tips is to use the same name for content controls and object properties.&lt;br /&gt;&lt;br /&gt;After having created the document with our company's colors and inserted content controls... We have to write the script to refresh the document which means write into content control !&lt;br /&gt;&lt;br /&gt;To do that, in a new file named « &lt;span style="font-weight:bold;"&gt;Generate-ServerForm.ps1&lt;/span&gt; », write the following function:&lt;br /&gt;&lt;br /&gt;&lt;div style='width: 100%; /*height: 100%;*/ overflow: auto; font-family: Consolas, "Courier New", Courier, mono; font-size: 12px; background-color: #DDDDDD; color: #000000; padding: 2px 2px 2px 2px; white-space: nowrap'&gt;&lt;ol start='1' style='border-left: solid 1px #404040; margin-left: 35px; padding: 0px;'&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&lt;span style='color: #C86400'&gt;function&lt;/span&gt;&amp;nbsp;Refresh-OpenXmlDocument(&lt;span style='color: #000080'&gt;$strDocPath&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strComputer&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;{&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objDoc&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;Get-OpenXmlDocument&amp;nbsp;-Path&amp;nbsp;&lt;span style='color: #000080'&gt;$strDocPath&lt;/span&gt;&amp;nbsp;-SuppressBackups&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$objDoc&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;-eq&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;&lt;span style='color: #C86400'&gt;return&lt;/span&gt;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objUri&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;New-Object&lt;/span&gt;&amp;nbsp;Uri(&lt;span style='color: #800000'&gt;'/word/document.xml'&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;[UriKind]&lt;span style='color: #C86400'&gt;::&lt;/span&gt;Relative)&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objPart&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objDoc&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Package&lt;span style='color: #C86400'&gt;.&lt;/span&gt;GetPart(&lt;span style='color: #000080'&gt;$objUri&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$script&lt;/span&gt;&lt;span style='color: #C86400'&gt;:&lt;/span&gt;objXmlDoc&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;New-Object&lt;/span&gt;&amp;nbsp;Xml&lt;span style='color: #C86400'&gt;.&lt;/span&gt;XmlDocument&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$script&lt;/span&gt;&lt;span style='color: #C86400'&gt;:&lt;/span&gt;objXmlDoc&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Load(&lt;span style='color: #000080'&gt;$objPart&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;GetStream())&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNsMgr&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;New-Object&lt;/span&gt;&amp;nbsp;Xml&lt;span style='color: #C86400'&gt;.&lt;/span&gt;XmlNamespaceManager(&lt;span style='color: #000080'&gt;$objXmlDoc&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;NameTable)&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$strURL&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'http://schemas.openxmlformats.org'&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNsMgr&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;AddNamespace(&lt;span style='color: #800000'&gt;'w'&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;"$strURL/wordprocessingml/2006/main"&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNodes&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$script&lt;/span&gt;&lt;span style='color: #C86400'&gt;:&lt;/span&gt;objXmlDoc&lt;span style='color: #C86400'&gt;.&lt;/span&gt;DocumentElement&lt;span style='color: #C86400'&gt;.&lt;/span&gt;GetElementsByTagName(&lt;span style='color: #800000'&gt;'w:sdt'&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objInfo&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;Get-ComputerInfo&amp;nbsp;&lt;span style='color: #000080'&gt;$strComputer&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;foreach&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$objNode&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;in&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNodes&lt;/span&gt;)&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objN&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNode&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SelectSingleNode(&lt;span style='color: #800000'&gt;'w:sdtPr'&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNsMgr&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$strAlias&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;Get-OpenXmlContentCtrlAlias&amp;nbsp;&lt;span style='color: #000080'&gt;$objN&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNsMgr&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$strAlias&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;-ne&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;''&lt;/span&gt;)&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&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;&lt;span style='color: #000080'&gt;$objProperty&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objInfo&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;|&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;Get-Member&lt;/span&gt;&amp;nbsp;-Name&amp;nbsp;&lt;span style='color: #000080'&gt;$strAlias&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&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;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$objProperty&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;-ne&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$null&lt;/span&gt;)&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&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;&lt;span style='color: #000080'&gt;$objN&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNode&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SelectSingleNode(&lt;span style='color: #800000'&gt;'w:sdtContent'&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNsMgr&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&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;&lt;span style='color: #C86400'&gt;switch&lt;/span&gt;&amp;nbsp;-regex&amp;nbsp;(&lt;span style='color: #000080'&gt;$objInfo&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;&lt;span style='color: #000080'&gt;$strAlias&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;GetType()&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Name)&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #800000'&gt;'\[\]$'&lt;/span&gt;&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Set-OpenXmlTable&amp;nbsp;&lt;span style='color: #000080'&gt;$objN&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNsMgr&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objInfo&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;&lt;span style='color: #000080'&gt;$strAlias&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;default&lt;/span&gt;&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Set-OpenXmlText&amp;nbsp;&lt;span style='color: #000080'&gt;$objN&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNsMgr&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objInfo&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;&lt;span style='color: #000080'&gt;$strAlias&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&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;}&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&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;}&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$script&lt;/span&gt;&lt;span style='color: #C86400'&gt;:&lt;/span&gt;objXmlDoc&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Save(&lt;span style='color: #000080'&gt;$objPart&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;GetStream())&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objDoc&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Close()&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;}&lt;/span&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;It's time to analyse the function !&lt;br /&gt;&lt;br /&gt;The main goal is to write into content controlsof the Word document. This function uses 2 parameters :&lt;ul&gt;&lt;li&gt;Full path to the Word document (template)&lt;br /&gt;&lt;li&gt;Remote server name : our server form will gather information about this server&lt;/ul&gt;For now, let's go inside the &lt;strong&gt;OpenXML&lt;/strong&gt; format: don't be afraid, that's an easy part !&lt;br /&gt;&lt;br /&gt;First, have a look to the &lt;span style="font-weight:bold;"&gt;Get-OpenXMLDocument&lt;/span&gt; Cmdlet. It comes from &lt;strong&gt;PowerTools&lt;/strong&gt;. So, to use it you have to install theses tools as described &lt;a href="http://scriptofen.blogspot.com/2009/05/create-server-form-with-powershell-2.html"&gt;in this post&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;As an introduction to the OpenXML format: since Office 2007, documents are ased on an opened format (XML) and compressed in a ZIP archive. In fact, if you renamed a DOCX file into a ZIP file you can decompress it!&lt;br /&gt;&lt;br /&gt;Using Word 2007, you will have a « /word/document.xml » file used to store the main content of the Word document. It is this file we will modify searching the « w:sdt » tag which is a content control!&lt;br /&gt;&lt;br /&gt;&lt;div style='width: 100%; /*height: 100%;*/ overflow: auto; font-family: Consolas, "Courier New", Courier, mono; font-size: 12px; background-color: #DDDDDD; color: #000000; padding: 2px 2px 2px 2px; white-space: nowrap'&gt;&lt;ol start='1' style='border-left: solid 1px #404040; margin-left: 25px; padding: 0px;'&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&lt;span style='color: #000080'&gt;$script&lt;/span&gt;&lt;span style='color: #C86400'&gt;:&lt;/span&gt;objXmlDoc&lt;span style='color: #C86400'&gt;.&lt;/span&gt;DocumentElement&lt;span style='color: #C86400'&gt;.&lt;/span&gt;GetElementsByTagName(&lt;span style='color: #800000'&gt;'w:sdt'&lt;/span&gt;)&lt;/span&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;here we used &lt;span style="font-weight:bold;"&gt;$script:objXmlDoc&lt;/span&gt; so we can access to this variable all over the script.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We can jump from a content control to an other just searching the specified tag! Then, for each tag found, we have to get its name which is also the name of the custom object property previously built by &lt;span style="font-weight:bold;"&gt;Get-ComputerInfo&lt;/span&gt;. This last function merges objects built by &lt;span style="font-weight:bold;"&gt;Get-ComputerHardware&lt;/span&gt; and &lt;span style="font-weight:bold;"&gt;Get-ComputerSoftware&lt;/span&gt; functions.&lt;br /&gt;&lt;br /&gt;To do that, you can add the following code to the PowerShell module:&lt;br /&gt;&lt;br /&gt;&lt;div style='width: 100%; /*height: 100%;*/ overflow: auto; font-family: Consolas, "Courier New", Courier, mono; font-size: 12px; background-color: #DDDDDD; color: #000000; padding: 2px 2px 2px 2px; white-space: nowrap'&gt;&lt;ol start='1' style='border-left: solid 1px #404040; margin-left: 35px; padding: 0px;'&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&lt;span style='color: #C86400'&gt;function&lt;/span&gt;&amp;nbsp;Merge-Object(&lt;span style='color: #000080'&gt;$objSource&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objDest&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;{&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objSource&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;|&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;Get-Member&lt;/span&gt;&amp;nbsp;-MemberType&amp;nbsp;NoteProperty&amp;nbsp;&lt;span style='color: #C86400'&gt;|&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;%&lt;/span&gt;&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Add-Property&amp;nbsp;&lt;span style='color: #000080'&gt;$objDest&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$_&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Name&amp;nbsp;&lt;span style='color: #000080'&gt;$objSource&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;(&lt;span style='color: #000080'&gt;$_&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Name)&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objDest&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;}&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&lt;span style='color: #C86400'&gt;function&lt;/span&gt;&amp;nbsp;Get-ComputerInfo(&lt;span style='color: #000080'&gt;$strComputer&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;{&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objHardware&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;Get-ComputerHardware&amp;nbsp;&lt;span style='color: #000080'&gt;$strComputer&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objSoftware&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;Get-ComputerSoftware&amp;nbsp;&lt;span style='color: #000080'&gt;$strComputer&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;return&lt;/span&gt;&amp;nbsp;(Merge-Object&amp;nbsp;&lt;span style='color: #000080'&gt;$objHardware&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objSoftware&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;}&lt;/span&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;span style="font-weight:bold;"&gt;Merge-Objet&lt;/span&gt; function merges customized objects&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Don't forget to export our new function:&lt;br /&gt;&lt;br /&gt;&lt;div style='width: 100%; /*height: 100%;*/ overflow: auto; font-family: Consolas, "Courier New", Courier, mono; font-size: 12px; background-color: #DDDDDD; color: #000000; padding: 2px 2px 2px 2px; white-space: nowrap'&gt;&lt;ol start='1' style='border-left: solid 1px #404040; margin-left: 25px; padding: 0px;'&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&lt;span style='color: #C86400'&gt;Export-ModuleMember&lt;/span&gt;&amp;nbsp;-Function&amp;nbsp;&lt;span style='color: #800000'&gt;'Get-ComputerHardware'&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&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;&amp;nbsp;&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 style='color: #800000'&gt;'Get-ComputerSoftware'&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&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;&amp;nbsp;&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 style='color: #800000'&gt;'Get-ComputerInfo'&lt;/span&gt;&lt;/span&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;Well, we need one more thing: our script have to use our module! This can be done using &lt;span style="font-weight:bold;"&gt;Import-Module&lt;/span&gt; Cmdlet. So, our script have to start with the following command:&lt;br /&gt;&lt;br /&gt;&lt;div style='width: 100%; /*height: 100%;*/ overflow: auto; font-family: Consolas, "Courier New", Courier, mono; font-size: 12px; background-color: #DDDDDD; color: #000000; padding: 2px 2px 2px 2px; white-space: nowrap'&gt;&lt;ol start='1' style='border-left: solid 1px #404040; margin-left: 25px; padding: 0px;'&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&lt;span style='color: #C86400'&gt;Import-Module&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;\Computer_Info&lt;span style='color: #C86400'&gt;.&lt;/span&gt;psm1&lt;/span&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Here, our module is located in the script directory.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Finally, for each content control, we gets its name using &lt;span style="font-weight:bold;"&gt;Get-OpenXmlContentCtrlAlias&lt;/span&gt; function:&lt;br /&gt;&lt;br /&gt;&lt;div style='width: 100%; /*height: 100%;*/ overflow: auto; font-family: Consolas, "Courier New", Courier, mono; font-size: 12px; background-color: #DDDDDD; color: #000000; padding: 2px 2px 2px 2px; white-space: nowrap'&gt;&lt;ol start='1' style='border-left: solid 1px #404040; margin-left: 35px; padding: 0px;'&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&lt;span style='color: #C86400'&gt;function&lt;/span&gt;&amp;nbsp;Get-OpenXmlContentCtrlAlias(&lt;span style='color: #000080'&gt;$objNode&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNsMgr&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;{&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$strAlias&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;''&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNode&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNode&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;SelectSingleNode(&lt;span style='color: #800000'&gt;'w:alias'&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNsMgr&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$strAlias&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objNode&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Attributes&amp;nbsp;&lt;span style='color: #C86400'&gt;|&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;where-Object&lt;/span&gt;&amp;nbsp;{&amp;nbsp;&lt;span style='color: #000080'&gt;$_&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Name&amp;nbsp;&lt;span style='color: #C86400'&gt;-eq&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'w:val'&lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$strAlias&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;-ne&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;&lt;span style='color: #000080'&gt;$strAlias&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strAlias&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Value&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;else&lt;/span&gt;&amp;nbsp;{&amp;nbsp;&lt;span style='color: #000080'&gt;$strAlias&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;''&lt;/span&gt;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strAlias&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Trim()&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;}&lt;/span&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;There are two cases: if we have to write information in a table then &lt;span style="font-weight:bold;"&gt;Set-OpenXmlTable&lt;/span&gt; is called else &lt;span style="font-weight:bold;"&gt;Set-OpenXmlText&lt;/span&gt; is called!&lt;br /&gt;&lt;br /&gt;Since we done a lot of works, it's time to have a break!&lt;br /&gt;See you soon!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6950982370652028794-7910768461997576423?l=scriptofen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scriptofen.blogspot.com/feeds/7910768461997576423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://scriptofen.blogspot.com/2009/05/create-server-form-with-powershell-2_09.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6950982370652028794/posts/default/7910768461997576423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6950982370652028794/posts/default/7910768461997576423'/><link rel='alternate' type='text/html' href='http://scriptofen.blogspot.com/2009/05/create-server-form-with-powershell-2_09.html' title='Create a server form with PowerShell 2 &amp; Word 2007 (Part 3)'/><author><name>Grégory Schiro</name><uri>http://www.blogger.com/profile/13622288244478060512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_o9-Jc8qS7K0/SWZ25sSkRJI/AAAAAAAAAB8/1vw9G17Rj0A/S220/Sans+titre-2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_o9-Jc8qS7K0/SZX1yTFm1MI/AAAAAAAAAEU/-5CviRRFJvI/s72-c/Untitled.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6950982370652028794.post-5624822405302830424</id><published>2009-05-08T17:15:00.001+02:00</published><updated>2009-05-08T17:15:34.810+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell 2'/><title type='text'>Create a server form with PowerShell 2 &amp; Word 2007 (Part 2)</title><content type='html'>Previous part of this post is &lt;a href="http://scriptofen.blogspot.com/2009/05/create-server-form-with-powershell-2.html"&gt;HERE&lt;/a&gt; !&lt;br /&gt;&lt;br /&gt;This is the first step : selecting and getting information about servers !&lt;br /&gt;&lt;br /&gt;In this post we wiil create a &lt;strong&gt;PowerShell module&lt;/strong&gt; which will gather all information from our servers. But... What is a module ? It's just a set of functions, a library we will reuse and share !&lt;br /&gt;&lt;br /&gt;Modules are only available with PowerShell 2.0.&lt;br /&gt;&lt;br /&gt;First, we have to create a file named « Computer_Info.psm1 ». File extension is &lt;strong&gt;.PSM1&lt;/strong&gt; and not .PS1 !&lt;br /&gt;Then we can write our functions into the file. Theses functions will get information we need on our servers.&lt;br /&gt;&lt;br /&gt;The PowerShell script which will generate the Word 2007 report will call functions from this module. The goal is to capitalize !&lt;br /&gt;&lt;br /&gt;By default, PowerShell searches modules in folders listed in the environment variable &lt;strong&gt;PSMODULEPATH&lt;/strong&gt; and in the working directory. To display the variable use the command:&lt;br /&gt;&lt;br /&gt;&lt;pre style='MARGIN: 0in 10pt 0in;line-height:normal';font-size:10pt&gt;&lt;span style='font-family:Courier New;color:#eeedf0;background:#012456'&gt;PS&amp;gt; $env:PSMODULEPATH&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Now we can start to get information from our servers. For this job, we will use more than one method. The first one is &lt;strong&gt;WMI&lt;/strong&gt; !&lt;br /&gt;&lt;br /&gt;The following function (the first one in our module) is just an abstract layer for the PowerShell Cmdlet &lt;strong&gt;Get-WmiObject&lt;/strong&gt;. Just to make the code easier to read... :)&lt;br /&gt;&lt;br /&gt;&lt;div style='width: 100%; /*height: 100%;*/ overflow: auto; font-family: Consolas, "Courier New", Courier, mono; font-size: 12px; background-color: #DDDDDD; color: #000000; padding: 2px 2px 2px 2px; white-space: nowrap'&gt;&lt;ol start='1' style='border-left: solid 1px #404040; margin-left: 25px; padding: 0px;'&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&lt;span style='color: #C86400'&gt;function&lt;/span&gt;&amp;nbsp;Get-WmiInfo(&lt;span style='color: #000080'&gt;$strClass&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strComputer&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;{&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;Get-WmiObject&lt;/span&gt;&amp;nbsp;-Class&amp;nbsp;&lt;span style='color: #000080'&gt;$strClass&lt;/span&gt;&amp;nbsp;-Namespace&amp;nbsp;&lt;span style='color: #800000'&gt;'root\cimv2'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;`&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-ComputerName&amp;nbsp;&lt;span style='color: #000080'&gt;$strComputer&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;}&lt;/span&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;We will add an other "tool function":&lt;br /&gt;&lt;br /&gt;&lt;div style='width: 100%; /*height: 100%;*/ overflow: auto; font-family: Consolas, "Courier New", Courier, mono; font-size: 12px; background-color: #DDDDDD; color: #000000; padding: 2px 2px 2px 2px; white-space: nowrap'&gt;&lt;ol start='1' style='border-left: solid 1px #404040; margin-left: 25px; padding: 0px;'&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&lt;span style='color: #C86400'&gt;function&lt;/span&gt;&amp;nbsp;Add-Property(&lt;span style='color: #000080'&gt;$obj&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strProperty&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objValue&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;{&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;Add-Member&lt;/span&gt;&amp;nbsp;-InputObject&amp;nbsp;&lt;span style='color: #000080'&gt;$obj&lt;/span&gt;&amp;nbsp;-Type&amp;nbsp;&lt;span style='color: #800000'&gt;'NoteProperty'&lt;/span&gt;&amp;nbsp;-Name&amp;nbsp;&lt;span style='color: #000080'&gt;$strProperty&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;`&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&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;-value&amp;nbsp;&lt;span style='color: #000080'&gt;$objValue&lt;/span&gt;&amp;nbsp;-force&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;}&lt;/span&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Add-Property&lt;/strong&gt; function is an abstract layer for the PowerShell Cmdlet &lt;strong&gt;Add-Member&lt;/strong&gt; : here, the function adds a simple property to an object.&lt;br /&gt;&lt;br /&gt;So, now we can do the main traitment: gather all information we need !&lt;br /&gt;The following function gets hardware information from servers:&lt;br /&gt;&lt;br /&gt;&lt;div style='width: 100%; /*height: 100%;*/ overflow: auto; font-family: Consolas, "Courier New", Courier, mono; font-size: 12px; background-color: #DDDDDD; color: #000000; padding: 2px 2px 2px 2px; white-space: nowrap'&gt;&lt;ol start='1' style='border-left: solid 1px #404040; margin-left: 35px; padding: 0px;'&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&lt;span style='color: #C86400'&gt;function&lt;/span&gt;&amp;nbsp;Get-ComputerHardware(&lt;span style='color: #000080'&gt;$strComputer&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;{&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objRes&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;New-Object&lt;/span&gt;&amp;nbsp;Object&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$int&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;0&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #008000'&gt;#&amp;nbsp;Processors&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$obj&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;Get-WmiInfo&amp;nbsp;&lt;span style='color: #800000'&gt;'Win32_Processor'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strComputer&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;foreach&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$objInfo&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;in&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$obj&lt;/span&gt;)&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Add-Property&amp;nbsp;&lt;span style='color: #000080'&gt;$objRes&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'Is32Bit'&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$objInfo&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Architecture&amp;nbsp;&lt;span style='color: #C86400'&gt;-eq&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;0x0&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Add-Property&amp;nbsp;&lt;span style='color: #000080'&gt;$objRes&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'Is64Bit'&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$objInfo&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Architecture&amp;nbsp;&lt;span style='color: #C86400'&gt;-eq&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;0x9&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$int&lt;/span&gt;&lt;span style='color: #C86400'&gt;+&lt;/span&gt;&lt;span style='color: #C86400'&gt;+&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Add-Property&amp;nbsp;&lt;span style='color: #000080'&gt;$objRes&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'NbCPU'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$int&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #008000'&gt;#&amp;nbsp;BIOS&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$obj&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;Get-WmiInfo&amp;nbsp;&lt;span style='color: #800000'&gt;'Win32_Bios'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strComputer&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Add-Property&amp;nbsp;&lt;span style='color: #000080'&gt;$objRes&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'BIOS'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$obj&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Name&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #008000'&gt;#&amp;nbsp;System&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$obj&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;Get-WmiInfo&amp;nbsp;&lt;span style='color: #800000'&gt;'Win32_ComputerSystem'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strComputer&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$int&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #404040'&gt;[int]&lt;/span&gt;(&lt;span style='color: #000080'&gt;$obj&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;TotalPhysicalMemory&amp;nbsp;&lt;span style='color: #C86400'&gt;/&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;1024&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;/&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;1024&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;/&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;1024&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Add-Property&amp;nbsp;&lt;span style='color: #000080'&gt;$objRes&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'TotalMemory'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;"$int&amp;nbsp;Go"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Add-Property&amp;nbsp;&lt;span style='color: #000080'&gt;$objRes&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'Manufacturer'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$obj&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Manufacturer&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Add-Property&amp;nbsp;&lt;span style='color: #000080'&gt;$objRes&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'Model'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$obj&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Model&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Add-Property&amp;nbsp;&lt;span style='color: #000080'&gt;$objRes&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'Domain'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$obj&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Domain&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Add-Property&amp;nbsp;&lt;span style='color: #000080'&gt;$objRes&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'DNSName'&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$obj&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Name&amp;nbsp;&lt;span style='color: #C86400'&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'.'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$obj&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Domain)&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Add-Property&amp;nbsp;&lt;span style='color: #000080'&gt;$objRes&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'NetBIOSName'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$obj&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Name&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #008000'&gt;#&amp;nbsp;Media&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$obj&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;Get-WmiInfo&amp;nbsp;&lt;span style='color: #800000'&gt;'Win32_CDROMDrive'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strComputer&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;foreach&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$objInfo&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;in&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$obj&lt;/span&gt;)&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;switch&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$objInfo&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;MediaType)&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&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;&lt;span style='color: #800000'&gt;'CD-ROM'&lt;/span&gt;&amp;nbsp;{&amp;nbsp;Add-Property&amp;nbsp;&lt;span style='color: #000080'&gt;$objRes&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'MediaCD'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$true&lt;/span&gt;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&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;&lt;span style='color: #800000'&gt;'DVD-ROM'&lt;/span&gt;&amp;nbsp;{&amp;nbsp;Add-Property&amp;nbsp;&lt;span style='color: #000080'&gt;$objRes&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'MediaDVD'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$true&lt;/span&gt;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&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;&lt;span style='color: #800000'&gt;'CD&amp;nbsp;Writer'&lt;/span&gt;&amp;nbsp;{&amp;nbsp;Add-Property&amp;nbsp;&lt;span style='color: #000080'&gt;$objRes&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'MediaCDRW'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$true&lt;/span&gt;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&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;&lt;span style='color: #800000'&gt;'DVD&amp;nbsp;Writer'&lt;/span&gt;&amp;nbsp;{&amp;nbsp;Add-Property&amp;nbsp;&lt;span style='color: #000080'&gt;$objRes&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'MediaDVDRW'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$true&lt;/span&gt;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&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;&lt;span style='color: #C86400'&gt;default&lt;/span&gt;&amp;nbsp;{&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #008000'&gt;#&amp;nbsp;Physical&amp;nbsp;or&amp;nbsp;virtual&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$obj&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;Get-WmiInfo&amp;nbsp;&lt;span style='color: #800000'&gt;'Win32_BaseBoard'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strComputer&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #000080'&gt;$obj&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Manufacturer&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Tolower()&amp;nbsp;&lt;span style='color: #C86400'&gt;-contains&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'microsoft'&lt;/span&gt;)&amp;nbsp;&lt;span style='color: #C86400'&gt;-Or&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&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 style='color: #000080'&gt;$obj&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Manufacturer&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Tolower()&amp;nbsp;&lt;span style='color: #C86400'&gt;-contains&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'vmware'&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Add-Property&amp;nbsp;&lt;span style='color: #000080'&gt;$objRes&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'IsVirtual'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Add-Property&amp;nbsp;&lt;span style='color: #000080'&gt;$objRes&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'IsPhysical'&lt;/span&gt;&amp;nbsp;(&lt;span style='color: #C86400'&gt;-not&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$bln&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #008000'&gt;#&amp;nbsp;Network&amp;nbsp;adapters&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;Set-StrictMode&lt;/span&gt;&amp;nbsp;-Off&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$obj&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;Get-WmiInfo&amp;nbsp;&lt;span style='color: #800000'&gt;'Win32_NetworkAdapter'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strComputer&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;|&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&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 style='color: #C86400'&gt;Where-Object&lt;/span&gt;&amp;nbsp;{&amp;nbsp;&lt;span style='color: #000080'&gt;$_&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;PhysicalAdapter&amp;nbsp;&lt;span style='color: #C86400'&gt;-eq&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$true&lt;/span&gt;&amp;nbsp;}&amp;nbsp;&lt;span style='color: #C86400'&gt;|&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&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 style='color: #C86400'&gt;Select-Object&lt;/span&gt;&amp;nbsp;ProductName&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;MACAddress&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;Set-StrictMode&lt;/span&gt;&amp;nbsp;-Version&amp;nbsp;&lt;span style='color: #800000'&gt;2.0&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Add-Property&amp;nbsp;&lt;span style='color: #000080'&gt;$objRes&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'NetworkCards'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$obj&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #008000'&gt;#&amp;nbsp;Disks&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$obj&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;Get-WmiInfo&amp;nbsp;&lt;span style='color: #800000'&gt;'Win32_DiskDrive'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strComputer&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;|&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&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 style='color: #C86400'&gt;Select-Object&lt;/span&gt;&amp;nbsp;Model&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;Size&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Add-Property&amp;nbsp;&lt;span style='color: #000080'&gt;$objRes&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'Disks'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$obj&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #008000'&gt;#&amp;nbsp;Volumes&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$obj&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;Get-WmiInfo&amp;nbsp;&lt;span style='color: #800000'&gt;'Win32_LogicalDisk'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strComputer&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;|&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&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 style='color: #C86400'&gt;Where-Object&lt;/span&gt;&amp;nbsp;{&amp;nbsp;&lt;span style='color: #000080'&gt;$_&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;DriveType&amp;nbsp;&lt;span style='color: #C86400'&gt;-eq&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;3&lt;/span&gt;&amp;nbsp;}&amp;nbsp;&lt;span style='color: #C86400'&gt;|&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&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 style='color: #C86400'&gt;Select-Object&lt;/span&gt;&amp;nbsp;VolumeName&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;DeviceID&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;Size&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;FreeSpace&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Add-Property&amp;nbsp;&lt;span style='color: #000080'&gt;$objRes&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'Volumes'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$obj&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objRes&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;}&lt;/span&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;Get-ComputerHardware&lt;/strong&gt; function returns a customized object. Each property of the object is an information about server's hardware.&lt;br /&gt;&lt;br /&gt;For softwares:&lt;br /&gt;&lt;br /&gt;&lt;div style='width: 100%; /*height: 100%;*/ overflow: auto; font-family: Consolas, "Courier New", Courier, mono; font-size: 12px; background-color: #DDDDDD; color: #000000; padding: 2px 2px 2px 2px; white-space: nowrap'&gt;&lt;ol start='1' style='border-left: solid 1px #404040; margin-left: 35px; padding: 0px;'&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&lt;span style='color: #C86400'&gt;function&lt;/span&gt;&amp;nbsp;Get-ComputerSoftware(&lt;span style='color: #000080'&gt;$strComputer&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;{&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$objRes&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;New-Object&lt;/span&gt;&amp;nbsp;Object&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #008000'&gt;#&amp;nbsp;Operating&amp;nbsp;system&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$obj&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;Get-WmiInfo&amp;nbsp;&lt;span style='color: #800000'&gt;'Win32_OperatingSystem'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strComputer&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Add-Property&amp;nbsp;&lt;span style='color: #000080'&gt;$objRes&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'OSName'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$Obj&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Caption&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Add-Property&amp;nbsp;&lt;span style='color: #000080'&gt;$objRes&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'OSVersion'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$Obj&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;Version&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Add-Property&amp;nbsp;&lt;span style='color: #000080'&gt;$objRes&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'OSServicePack'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$obj&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;CSDVersion&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Add-Property&amp;nbsp;&lt;span style='color: #000080'&gt;$objRes&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'OSArchitecture'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$obj&lt;/span&gt;&lt;span style='color: #C86400'&gt;.&lt;/span&gt;OSArchitecture&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #008000'&gt;#&amp;nbsp;Services&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$obj&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;Get-Service&lt;/span&gt;&amp;nbsp;-ComputerName&amp;nbsp;&lt;span style='color: #000080'&gt;$strComputer&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;|&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&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 style='color: #C86400'&gt;Select-Object&lt;/span&gt;&amp;nbsp;DisplayName&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;ServiceName&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;Status&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Add-Property&amp;nbsp;&lt;span style='color: #000080'&gt;$objRes&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'Services'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$Obj&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #008000'&gt;#&amp;nbsp;KB&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #000080'&gt;$obj&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;=&lt;/span&gt;&amp;nbsp;Get-WmiInfo&amp;nbsp;&lt;span style='color: #800000'&gt;'Win32_QuickFixEngineering'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$strComputer&lt;/span&gt;&amp;nbsp;&lt;span style='color: #C86400'&gt;|&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&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 style='color: #C86400'&gt;Sort-Object&lt;/span&gt;&amp;nbsp;InstalledOn&amp;nbsp;&lt;span style='color: #C86400'&gt;|&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&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 style='color: #C86400'&gt;Select-Object&lt;/span&gt;&amp;nbsp;Description&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;HotFixID&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;InstalledBy&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&amp;nbsp;InstalledOn&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Add-Property&amp;nbsp;&lt;span style='color: #000080'&gt;$objRes&lt;/span&gt;&amp;nbsp;&lt;span style='color: #800000'&gt;'KB'&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$Obj&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color: #C86400'&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style='color: #000080'&gt;$objRes&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;}&lt;/span&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;Here we use the &lt;strong&gt;Get-Service&lt;/strong&gt; Cmdlet with &lt;strong&gt;–ComputerName&lt;/strong&gt; parameter which has been added in PowerShell V2 !&lt;br /&gt;&lt;br /&gt;At this point, our module is not yet usable !&lt;br /&gt;&lt;br /&gt;In our module, we wrote some functions used only by function which get software and hardware information. We want that only the two main functions of the module are usable because use the tools function out of context could be a bad idea...&lt;br /&gt;&lt;br /&gt;&lt;div style='width: 100%; /*height: 100%;*/ overflow: auto; font-family: Consolas, "Courier New", Courier, mono; font-size: 12px; background-color: #DDDDDD; color: #000000; padding: 2px 2px 2px 2px; white-space: nowrap'&gt;&lt;ol start='1' style='border-left: solid 1px #404040; margin-left: 25px; padding: 0px;'&gt;&lt;li style='color: #404040; padding-left: 5px'&gt;&lt;span style='color: #000000'&gt;&lt;span style='color: #C86400'&gt;Export-ModuleMember&lt;/span&gt;&amp;nbsp;-Function&amp;nbsp;&lt;span style='color: #800000'&gt;'Get-ComputerHardware'&lt;/span&gt;&lt;span style='color: #C86400'&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;li style='color: #404040; padding-left: 5px'&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;&amp;nbsp;&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 style='color: #800000'&gt;'Get-ComputerSoftware'&lt;/span&gt;&lt;/span&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;Export-ModuleMember&lt;/strong&gt; Cmdlet exposes only specified functions. So, only our main functions will be usable with our module !&lt;br /&gt;&lt;br /&gt;In this post we have:&lt;br /&gt;&lt;strong&gt;1.&lt;/strong&gt; Created PowerShell 2 module,&lt;br /&gt;&lt;strong&gt;2.&lt;/strong&gt; Get hardware and software information from a remote computer.&lt;br /&gt;&lt;br /&gt;In the next post, we will create our Word 2007 document which will use to generate our server form !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6950982370652028794-5624822405302830424?l=scriptofen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scriptofen.blogspot.com/feeds/5624822405302830424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://scriptofen.blogspot.com/2009/05/create-server-form-with-powershell-2_08.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6950982370652028794/posts/default/5624822405302830424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6950982370652028794/posts/default/5624822405302830424'/><link rel='alternate' type='text/html' href='http://scriptofen.blogspot.com/2009/05/create-server-form-with-powershell-2_08.html' title='Create a server form with PowerShell 2 &amp; Word 2007 (Part 2)'/><author><name>Grégory Schiro</name><uri>http://www.blogger.com/profile/13622288244478060512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_o9-Jc8qS7K0/SWZ25sSkRJI/AAAAAAAAAB8/1vw9G17Rj0A/S220/Sans+titre-2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6950982370652028794.post-3205062714504983691</id><published>2009-05-07T20:32:00.001+02:00</published><updated>2009-05-07T22:34:09.651+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell 2'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenXML'/><title type='text'>Create a server form with PowerShell 2 &amp; Word 2007 (Part 1)</title><content type='html'>What if it was possible to get pertinent informations about all our Windows servers and generate a detailed report and then send it by mail to our manager monthly ?&lt;br /&gt;&lt;br /&gt;We will have more time for cofee ? sure... Or maybe we will have more time to enhances the efficiency of our production processes !&lt;br /&gt;&lt;br /&gt;Well, in this post splited into 4 parts, we will do the job !&lt;br /&gt;&lt;br /&gt;We need 2 things :&lt;br /&gt;&lt;strong&gt;1.&lt;/strong&gt; PowerShell V2 : of course ! :)&lt;br /&gt;&lt;strong&gt;2.&lt;/strong&gt; &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=AD0B72FB-4A1D-4C52-BDB5-7DD7E816D046&amp;displaylang=en"&gt;OpenXML SDK 1.0&lt;/a&gt; : library used to work with DOCX format (OpenXML).&lt;br /&gt;&lt;br /&gt;If you didn't install PowerShell V2, go to &lt;a href="http://scriptofen.blogspot.com/2009/05/powershell-20-introduction.html"&gt;this post&lt;/a&gt; ! Else, just download &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=AD0B72FB-4A1D-4C52-BDB5-7DD7E816D046&amp;displaylang=en"&gt;OpenXML SDK 1.0&lt;/a&gt; and install it.&lt;br /&gt;&lt;br /&gt;You have to know that Cmdlets (powerShell commands) exist to work with OpenXML format. Theses Cmdlets will make easier our job : &lt;a href="http://www.codeplex.com/PowerTools"&gt;PowerTools&lt;/a&gt; (Open source project developed using C#).&lt;br /&gt;&lt;br /&gt;To install PowerTools, you will need to download the source code and then compile it using &lt;a href="http://msdn.microsoft.com/fr-fr/express/aa975050.aspx"&gt;Visual C# Express&lt;/a&gt; (the free edition :)) to build the DLL which contain Cmdlets. Or you can download the DLL from here...&lt;br /&gt;&lt;br /&gt;Then, you have to do in a PowerShell session :&lt;br /&gt;&lt;br /&gt;&lt;pre style='MARGIN: 0in 10pt 0in;line-height:normal';font-size:10pt&gt;&lt;span style='font-family:Courier New;color:#eeedf0;background:#012456'&gt;PS&amp;gt; cd C:\Windows\Microsoft.NET\Framework64\v2.0.50727&lt;br&gt;PS&amp;gt; .\InstallUtil.exe C:\OpenXml.PowerTools.dll       &lt;br&gt;PS&amp;gt; Add-PSSnapin OpenXml.PowerTools                   &lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Installutil.exe is located in the .Net 2 Framework folder. In the previous example: « C:\Windows\Microsoft.NET\Framework64\v2.0.50727». The POwerTools DLL is located in C: root folder.&lt;br /&gt;&lt;br /&gt;Since we have all the prerequires we can do the job : Generate a Word 2007 document !&lt;br /&gt;This work is divided into 3 parts:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1.&lt;/strong&gt; Selecting and getting pertinent information from our servers,&lt;br /&gt;&lt;strong&gt;2.&lt;/strong&gt; Creating a Word 2007 template for the report,&lt;br /&gt;&lt;strong&gt;3.&lt;/strong&gt; Report creation.&lt;br /&gt;&lt;br /&gt;Each step will be detailed in a post to preserve the suspense... ok sorry... :)&lt;br /&gt;&lt;br /&gt;See you soon for the first step !&lt;br /&gt;Until then, check that you installed all the prerequires !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6950982370652028794-3205062714504983691?l=scriptofen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scriptofen.blogspot.com/feeds/3205062714504983691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://scriptofen.blogspot.com/2009/05/create-server-form-with-powershell-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6950982370652028794/posts/default/3205062714504983691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6950982370652028794/posts/default/3205062714504983691'/><link rel='alternate' type='text/html' href='http://scriptofen.blogspot.com/2009/05/create-server-form-with-powershell-2.html' title='Create a server form with PowerShell 2 &amp; Word 2007 (Part 1)'/><author><name>Grégory Schiro</name><uri>http://www.blogger.com/profile/13622288244478060512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_o9-Jc8qS7K0/SWZ25sSkRJI/AAAAAAAAAB8/1vw9G17Rj0A/S220/Sans+titre-2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6950982370652028794.post-4045203606644041735</id><published>2009-05-06T21:20:00.001+02:00</published><updated>2009-05-06T21:20:23.721+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell 2'/><title type='text'>PowerShell 2.0: Introduction</title><content type='html'>PowerShell is a command line tool used to manage Windows based computers. Ok, that's a beautiful theoretical definition...&lt;br /&gt;&lt;br /&gt;Theory is good but practice is sometimes better ! So let's go !&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_o9-Jc8qS7K0/SX93AsnljGI/AAAAAAAAAD0/h3jPloul4pg/s1600-h/powershell.png"&gt;&lt;img style="float:left; margin:0 0px 0px 0;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://1.bp.blogspot.com/_o9-Jc8qS7K0/SX93AsnljGI/AAAAAAAAAD0/h3jPloul4pg/s200/powershell.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5296082540671896674" /&gt;&lt;/a&gt;Oh, just another thing ! For my first post, we will set up our environment to test our PowerShell script.&lt;br /&gt;&lt;br /&gt;PowerShell current version is 1.0 however we will use PowerShell 2 ! (Which is actually in CTP3 version). This new version is just awesome : we will play with some cool features !&lt;br /&gt;&lt;br /&gt;So, the first thing to do is to check prerequires !&lt;br /&gt;Operating system version has to be at least Windows XP SP3 or Windows Server 2003 SP2. To use some PowerShell V2 features we need at least Windows Vista SP1 or Windows Server 2008.&lt;br /&gt;&lt;br /&gt;Next, we have to uninstall PowerShell 1.0 if installed and download then install the following prerequires :&lt;br /&gt;    &lt;strong&gt;1.&lt;/strong&gt; &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=0856eacb-4362-4b0d-8edd-aab15c5e04f5&amp;displaylang=en"&gt;.NET Framework 2.0&lt;/a&gt; : PowerShell is based on .NET Framework !&lt;br /&gt;    &lt;strong&gt;2.&lt;/strong&gt; &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=AB99342F-5D1A-413D-8319-81DA479AB0D7&amp;displaylang=en"&gt;Framework .NET 3.5.1&lt;/a&gt; : if we want to use PowerShell Integrated Script Environment (ISE)... And we want !&lt;br /&gt;    &lt;strong&gt;3.&lt;/strong&gt; &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c913aeab-d7b4-4bb1-a958-ee6d7fe307bc&amp;displaylang=en"&gt;PowerShell V2 CTP3&lt;/a&gt; : our command line tool and its editor (ISE) : all in one !&lt;br /&gt;    &lt;strong&gt;4.&lt;/strong&gt; &lt;a href="https://connect.microsoft.com/wsman"&gt;WinRM 2.0 CTP3&lt;/a&gt; : for remoting ! Because it is cool to manage thousand of computers from the sofa...&lt;br /&gt;&lt;br /&gt;After having installed theses components observing order we can start to play !&lt;br /&gt;&lt;br /&gt;Well, maybe we have to configure some component in order to use the coolest feature of PowerShell V2 : remote management using WinRM 2.0 !&lt;br /&gt;&lt;br /&gt;WinRM is an implementation of WS-Management protocol by Microsoft. It is used to manage computer using HTTP as transport protocol (which can be secured with HTTPS).&lt;br /&gt;&lt;br /&gt;In fact, WinRM is a Windows service installed on the computer : we have to start it before using PowerShell V2 remote management features.&lt;br /&gt;&lt;br /&gt;So, in a PowerShell session running as local Administrator, execute the following command to start WinRM service :&lt;br /&gt;&lt;br /&gt;&lt;pre style='MARGIN: 0in 10pt 0in;line-height:normal';font-size:10pt&gt;&lt;span style='font-family:Courier New;color:#eeedf0;background:#012456'&gt;PS&gt; Start-Service WinRM&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Now, we can use the PowerShell V2 WinRM provider to configure the remote management.&lt;br /&gt;&lt;br /&gt;PowerShell V2 is a client and a server. In other terms, we need PowerShell V2 installed and configured on the local machine and the remote machine !&lt;br /&gt;&lt;br /&gt;Well, stop talking and let's configure the port used to listen requests and the protocol to use :&lt;br /&gt;&lt;br /&gt;&lt;pre style='MARGIN: 0in 10pt 0in;line-height:normal';font-size:10pt&gt;&lt;span style='font-family:Courier New;color:#eeedf0;background:#012456'&gt;PS&gt; cd WSMan:\localhost\Listener                          &lt;br /&gt;PS&gt; New-Item –Path . –Address * -Transport HTTP –Port 8080&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;PowerShell will use HTTP as transport protocol, the port 8080 and will listen on all interfaces. If an other application uses the same port (as a web server) there is no problem because WinRM shares the port.&lt;br /&gt;&lt;br /&gt;This configuration has to be done on all managed computers.&lt;br /&gt;&lt;br /&gt;Now, we are ready to start playing with our tool.&lt;br /&gt;You will discover PowerShell V2 across posts on this blog and how to use it in your production environment.&lt;br /&gt;&lt;br /&gt;See you soon !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6950982370652028794-4045203606644041735?l=scriptofen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scriptofen.blogspot.com/feeds/4045203606644041735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://scriptofen.blogspot.com/2009/05/powershell-20-introduction.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6950982370652028794/posts/default/4045203606644041735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6950982370652028794/posts/default/4045203606644041735'/><link rel='alternate' type='text/html' href='http://scriptofen.blogspot.com/2009/05/powershell-20-introduction.html' title='PowerShell 2.0: Introduction'/><author><name>Grégory Schiro</name><uri>http://www.blogger.com/profile/13622288244478060512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_o9-Jc8qS7K0/SWZ25sSkRJI/AAAAAAAAAB8/1vw9G17Rj0A/S220/Sans+titre-2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_o9-Jc8qS7K0/SX93AsnljGI/AAAAAAAAAD0/h3jPloul4pg/s72-c/powershell.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6950982370652028794.post-1776765280112129490</id><published>2009-05-04T21:26:00.001+02:00</published><updated>2009-05-04T21:32:20.297+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Welcome'/><title type='text'>Welcome</title><content type='html'>Hello and welcome on this blog dedicated to the process oriented and best practises PowerShell development. You will find information on ITIL best practices associated with Microsoft technologies and ideas to deploy automated IT operations, this information will be based on the following:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Microsoft Operations Framework (MOF)&lt;/li&gt;&lt;li&gt;Microsoft PowerShell&lt;/li&gt;&lt;li&gt;Microsoft Operational guides&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This blog is primarily intended for architects, administrators, and system engineers wishing to find information and simple solutions to optimize and streamline their technical operations recurring infrastructure management Microsoft.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Good Reading &lt;/p&gt;&lt;p&gt;Mouloud&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6950982370652028794-1776765280112129490?l=scriptofen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scriptofen.blogspot.com/feeds/1776765280112129490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://scriptofen.blogspot.com/2009/05/welcome.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6950982370652028794/posts/default/1776765280112129490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6950982370652028794/posts/default/1776765280112129490'/><link rel='alternate' type='text/html' href='http://scriptofen.blogspot.com/2009/05/welcome.html' title='Welcome'/><author><name>Mouloud Amazit</name><uri>http://www.blogger.com/profile/14155493798205992403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
