#---------------------------------------------------------------------------------------# # # # GLOBAL VARIABLE SECTION # # # #---------------------------------------------------------------------------------------# $url = "http://FabricInterconnectIP/nuova" $numServers = "1" $zoneFileLocation = "C:\ZoningOutputDirectory\" #---------------------------------------------------------------------------------------# # # # FUNCTIONS SECTION # # # #---------------------------------------------------------------------------------------# #SendUCScmd with optional command(xml) and xml filter(switch statement) function SendUCScmd{ param([string]$command, [string]$xmlFilter) $request = [System.Net.HttpWebRequest] [System.Net.HttpWebRequest]::Create($url) $request.Method = "POST" $request.ContentType = "text/xml" $sendData = new-object System.IO.StreamWriter($request.GetRequestStream()) $sendData.Write($command) $sendData.Close() $response = $request.GetResponse() $sr = new-object System.IO.StreamReader($response.GetResponseStream()) $xml = [xml]$sr.ReadToEnd() switch ($xmlFilter) { "login" {$output = $xml.aaaLogin.outCookie} "serverName" {$output = $xml.lsInstantiateNTemplate.outConfigs.lsServer.name} "wwnn" {$output = $xml.configResolveChildren.outConfigs.vnicFcNode.addr} "wwpn" {$output = $xml.configResolveChildren.outConfigs.vnicFcIf.initiator} } return $output } #End SendUCScmd Function #createZoning Function - creates the Cisco MDS Zone configuration Files for each HBA function createZoning{ param ([string]$hba0, [string]$hba1, [string]$hbaName0, [string]$hbaName1) $hba0File = New-Item -type file "$zoneFileLocation$hbaName0.txt" -Force $hba1File = New-Item -type file "$zoneFileLocation$hbaName1.txt" -Force Add-Content $hba0File "fcalias name $hbaName0 vsan 10" Add-Content $hba0File "`tmember pwwn $hba0" Add-Content $hba0File "zone name $hbaName0`_CX380-1`_SPA0 vsan 10" Add-Content $hba0File "`tmember fcalias $hbaName0 " Add-Content $hba0File "`tmember fcalias CX380-1`_SPA0" Add-Content $hba0File "zone name $hbaName0`_CX380-1`_SPA2 vsan 10" Add-Content $hba0File "`tmember fcalias $hbaName0" Add-Content $hba0File "`tmember fcalias CX380-1`_SPA2" Add-Content $hba0File "zone name $hbaName0`_CX380-1`_SPB1 vsan 10" Add-Content $hba0File "`tmember fcalias $hbaName0" Add-Content $hba0File "`tmember fcalias CX380-1`_SPB1" Add-Content $hba0File "zone name $hbaName0`_CX380-1`_SPB3 vsan 10" Add-Content $hba0File "`tmember fcalias $hbaName0" Add-Content $hba0File "`tmember fcalias CX380-1`_SPB3" Add-Content $hba0File "zoneset name ActiveZoneSet vsan 20" Add-Content $hba0File "`tmember $hbaName0`_CX380-1`_SPA0" Add-Content $hba0File "`tmember $hbaName0`_CX380-1`_SPA2" Add-Content $hba0File "`tmember $hbaName0`_CX380-1`_SPB1" Add-Content $hba0File "`tmember $hbaName0`_CX380-1`_SPB3" Add-Content $hba1File "fcalias name $hbaName1 vsan 20" Add-Content $hba1File "`tmember pwwn $hba1" Add-Content $hba1File "zone name $hbaName1`_CX380-1`_SPA1 vsan 20" Add-Content $hba1File "`tmember fcalias $hbaName1" Add-Content $hba1File "`tmember fcalias CX380-1`_SPA1" Add-Content $hba1File "zone name$hbaName1`_CX380-1`_SPA3 vsan 20" Add-Content $hba1File "`tmember fcalias $hbaName1" Add-Content $hba1File "`tmember fcalias CX380-1`_SPA3" Add-Content $hba1File "zone name $hbaName1`_CX380-1`_SPB0 vsan 20" Add-Content $hba1File "`tmember fcalias $hbaName1" Add-Content $hba1File "`tmember fcalias CX380-1`_SPB0" Add-Content $hba1File "zone name $hbaName1`_CX380-1`_SPB2 vsan 20" Add-Content $hba1File "`tmember fcalias $hbaName1" Add-Content $hba1File "`tmember fcalias CX380-1`_SPB2" Add-Content $hba1File "zoneset name ActiveZoneSet vsan 20" Add-Content $hba1File "`tmember $hbaName1`_CX380-1`_SPA1" Add-Content $hba1File "`tmember $hbaName1`_CX380-1`_SPA3" Add-Content $hba1File "`tmember $hbaName1`_CX380-1`_SPB0" Add-Content $hba1File "`tmember $hbaName1`_CX380-1`_SPB2" } #End createZoning Funcation #---------------------------------------------------------------------------------------# # # # USER INPUT SECTION # # # #---------------------------------------------------------------------------------------# #Gather Parameter Routine #Get Username do { $username = Read-Host "Please enter the username" if ($username -eq "") {Write-Host "`n`nYou must enter a username"} } while ($username -eq "") #Get Password do { $password = Read-Host -assecurestring "`n`nPlease enter the password" if ($password -eq "") {Write-Host "`n`nYou must enter a password"} } while ($password -eq "") #Get Server Type and set $serverDN do { $serverDN = Read-Host "`n`n[1] = ESX`n[2] = Windows`n[3] = SQL`nWhat type of server" if ($serverDN -eq ""){Write-Host "`n`nYou must choose one"} if ($serverDN -eq "1"){$serverDN = "org-root/ls-site-esx"; $serverPrefix = "site-esx0"} if ($serverDN -eq "2"){$serverDN = "org-root/ls-site-sql" do { $serverPrefix = Read-Host "`n`nPlease enter the server prefix (e.g., for ESX = site-esx0)" if ($serverPrefix -eq "") {Write-Host "`n`nYou must enter a prefix"} if ($serverPrefix -ne ""){Write-Host "Your service profile(s) has been created`n`n"} } while ($serverPrefix -eq "") } if ($serverDN -eq "3"){$serverDN = "org-root/ls-site-win" do { $serverPrefix = Read-Host "`n`nPlease enter the server prefix (e.g., for ESX = site-esx0)" if ($serverPrefix -eq "") {Write-Host "`n`nYou must enter a prefix"} if ($serverPrefix -ne ""){Write-Host "Your service profile(s) has been created`n`n"} } while ($serverPrefix -eq "") } } while ($serverDN -eq "") #---------------------------------------------------------------------------------------# # # # EXECUTION SECTION # # # #---------------------------------------------------------------------------------------# #Login Process $aaaLogin = '""' $outCookie = SendUCScmd -command $aaaLogin -xmlFilter "login" #Server Creation From Template Command $buildCommand = '""' $serverName = SendUCScmd -command $buildCommand -xmlFilter "serverName" #Retrieve Server Information $wwnncmd = '""' $hba0cmd = '""' $hba1cmd = '""' $wwnn = SendUCScmd -command $wwnncmd -xmlFilter "wwnn" $hba0 = SendUCScmd -command $hba0cmd -xmlFilter "wwpn" $hba1 = SendUCScmd -command $hba1cmd -xmlFilter "wwpn" #Create Zone Configuration Files $hbaName0 = $serverName + "-hba0" $hbaName1 = $serverName + "-hba1" createZoning -hba0 $hba0 -hba1 $hba1 -hbaName0 $hbaName0 -hbaName1 $hbaName1 #Logout Process $aaaLogout = '' SendUCScmd ($aaaLogout)