In this post, I will show you how
to use external
xml file with PowerShell. The advantage for doing so is that you can avoid other people
to open up your PowerShell code
to make the configuration changes; instead all they need
to do is
to change the
xml file. I will refactor my site creation script as an example; you can download the script here and refactored code here.
1. As you can see below, I hard code all the variables in the script itself.
$url = "http://ybbest"
$WebsiteName = "Ybbest"
$WebsiteDesc = "Ybbest test site"
$Template = "STS#0"
$PrimaryLogin = "contoso\administrator"
$PrimaryDisplay = "administrator"
$PrimaryEmail = "
[email protected]"
$MembersGroup = "$WebsiteName Members"
$ViewersGroup = "$WebsiteName Viewers"
2. Next, I will show you how
to manipulate
xml file using PowerShell. You can use the get-content
to grab the content of the file.
[xml] $xmlconfigurations=get-content .\SiteCollection.
xml
3. Then you can set it
to variable (the variable has
to be typed [xml] after that you can read the content of the
xml content, PowerShell also give you nice IntelliSense by press the Tab key.
[xml] $xmlconfigurations=get-content .\SiteCollection.
xml
$xmlconfigurations.SiteCollection
$xmlconfigurations.SiteCollection.SiteName
4. After refactoring my code, I can set the variables using the
xml file as below.
#Set the parameters
$siteInformation=$xmlinput.SiteCollection
$url = $siteInformation.URL
$siteName = $siteInformation.SiteName
$siteDesc = $siteInformation.SiteDescription
$Template = $siteInformation.SiteTemplate
$PrimaryLogin = $siteInformation.PrimaryLogin
$PrimaryDisplay = $siteInformation.PrimaryDisplayName
$PrimaryEmail = $siteInformation.PrimaryLoginEmail
$MembersGroup = "$WebsiteName Members"
$ViewersGroup = "$WebsiteName Viewers"