For prerequisites, refer to Deploying the Survivable Branch Appliance and Using Powershell 3 to Access REST.
The action below defines the login resource used to log into the
### Allow self Sign Cert add-type @" using System.Net; using System.Security.Cryptography.X509Certificates; public class IDontCarePolicy : ICertificatePolicy { public IDontCarePolicy() {} public bool CheckValidationResult( ServicePoint sPoint, X509Certificate cert, WebRequest wRequest, int certProb) { return true; } } "@ [System.Net.ServicePointManager]::CertificatePolicy = new-object IDontCarePolicy ### Login $BodyValue = "Username=restuser&Password=restpass" $url = "https://134.56.226.215/rest/login" $Result = Invoke-RestMethod -Uri $url -Method Post -Body $BodyValue -SessionVariable ps
The action below enables you to load new software into the Recovery partition of the ASM through USB. Refer to Resource - sbaconfig.
$url = "https://134.56.226.215/rest/sbaconfig?action=asmupdaterecoverypartition" Invoke-RestMethod -Uri $url -Method POST -Body "" -WebSession $ps
<?xml version="1.0"?> <root> <status> <http_code>200</http_code> </status> </root>
$url = "https://134.56.226.215/rest/sbaactionstatus" Invoke-RestMethod -Uri $url -Method GET -WebSession $MyPs <?xml version="1.0"?> <root> <status> <http_code>200</http_code> </status> <sbaactionstatus href="https://134.56.226.217/rest/sbaactionstatus"> <rt_Success>1</rt_Success> <rt_ActionType>28</rt_ActionType> <rt_PercentComplete>100</rt_PercentComplete> <rt_Duration>271</rt_Duration> <rt_StatusText>Image installation complete. If you need to apply this image, please remove the USB flash drive and perform the 'Reinitialize' action now</rt_StatusText> <rt_AllActionsBitmap>127</rt_AllActionsBitmap> <rt_ActionStartTime>0</rt_ActionStartTime> </sbaactionstatus> </root>
The action below retrieves the factory image information available on ASM. Refer to Resource - asmfactoryimage.
$url = "https://134.56.226.215/rest/asmfactoryimage" Invoke-RestMethod -Uri $url -Method GET -WebSession $ps
<?xml version="1.0"?> <root> <status> <http_code>200</http_code> </status> <asmfactoryimage_list count="3"> <asmfactoryimage_pk id="1" href="https://134.56.226.215/rest/asmfactoryimage/1"/> <asmfactoryimage_pk id="3" href="https://134.56.226.215/rest/asmfactoryimage/3"/> <asmfactoryimage_pk id="2" href="https://134.56.226.215/rest/asmfactoryimage/2"/> </asmfactoryimage_list> </root>
The action below retrieves the detailed factory image information on ASM. Refer to Resource - asmfactoryimage.
$url = "https://134.56.226.215/rest/asmfactoryimage/1" Invoke-RestMethod -Uri $url -Method GET -WebSession $ps $url = "https://134.56.226.215/rest/asmfactoryimage/2" Invoke-RestMethod -Uri $url -Method GET -WebSession $ps $url = "https://134.56.226.215/rest/asmfactoryimage/3" Invoke-RestMethod -Uri $url -Method GET -WebSession $ps
<?xml version="1.0"?> <root> <status> <http_code>200</http_code> </status> <asmfactoryimage id="1" href="https://134.56.226.215/rest/asmfactoryimage/1"> <Description>Lync 2013 SBA with SBC Comms 2.2.0b175</Description> <ImageDirectoryName>2013-05-02_10-08-26</ImageDirectoryName> <IsDefault>1</IsDefault> </asmfactoryimage> </root>
The action below re-initializes the ASM and puts it in default factory state. Refer to Resource - sbaconfig.
########## $dirNam = "2013-05-02_10-08-26" ########## $BodyValue = "dirName=$dirName" $url = "https://134.56.226.215/rest/sbaconfig?action=asmreinitialize" Invoke-RestMethod -Uri $url -Method POST -Body $BodyValue -WebSession $ps
<?xml version="1.0"?> <root> <status> <http_code>200</http_code> </status> </root>
$url = "https://134.56.226.215/rest/sbaactionstatus" Invoke-RestMethod -Uri $url -Method GET -WebSession $MyPs <?xml version="1.0"?> <root> <status> <http_code>200</http_code> </status> <sbaactionstatus href="https://134.56.226.215/rest/sbaactionstatus"> <rt_Success>1</rt_Success> <rt_ActionType>9</rt_ActionType> <rt_PercentComplete>100</rt_PercentComplete> <rt_Duration>0</rt_Duration> <rt_StatusText>Re-initialization complete</rt_StatusText> <rt_AllActionsBitmap>0</rt_AllActionsBitmap> <rt_ActionStartTime>0</rt_ActionStartTime> </sbaactionstatus> </root>
The action below modifies the SBA configuration resource. This is the first step in setting up the SBA. Refer to Resource - sbaconfig.
$DHCPEnabled = 0 $ipv4Address = "134.56.226.214" $ipv4Netmask = "255.255.255.0" $ipv4Gateway = "134.56.226.5" $RemoteDesktopEnabled = 1 $DNSServer1 = "134.56.227.32" $DNSServer2 = "134.56.226.75" $AclEnable = 1 ########## $BodyValue = "DHCPEnabled=$DHCPEnabled&ipv4Address=$ipv4Address&ipv4Netmask=$ipv4Netmask&ipv4Gateway=$ipv4Gateway&RemoteDesktopEnabled=$RemoteDesktopEnabled&DNSServer1=$DNSServer1&DNSServer2=$DNSServer2&AclEnable=$AclEnable" $url = "https://134.56.226.215/rest/sbaconfig" Invoke-RestMethod -Uri $url -Method POST -Body $BodyValue -WebSession $ps
<?xml version="1.0"?> <root> <status> <http_code>200</http_code> </status> </root>
$url = "https://134.56.226.215/rest/sbaactionstatus" Invoke-RestMethod -Uri $url -Method GET -WebSession $MyPs <?xml version="1.0"?> <root> <status> <http_code>200</http_code> </status> <sbaactionstatus href="https://134.56.226.215/rest/sbaactionstatus"> <rt_Success>1</rt_Success> <rt_ActionType>31</rt_ActionType> <rt_PercentComplete>100</rt_PercentComplete> <rt_Duration>0</rt_Duration> <rt_StatusText>ASM Configuration successfully applied</rt_StatusText> <rt_AllActionsBitmap>0</rt_AllActionsBitmap> <rt_ActionStartTime>0</rt_ActionStartTime> </sbaactionstatus> </root>
The action below configures the domain in which the SBA will connect. Refer to Resource - sbaconfig.
$hostName = "SBA2010-226-214" $domainName = "UX2013.COM" $userName = "UX2013\administrator" $userPassword = "Password1" ########## $BodyValue = "hostName=$hostName&domainName=$domainName&userName=$userName&userPassword=$userPassword" $url = "https://134.56.226.215/rest/sbaconfig?action=joindomain" Invoke-RestMethod -Uri $url -Method POST -Body $BodyValue -WebSession $ps
<?xml version="1.0"?> <root> <status> <http_code>200</http_code> </status> </root>
$url = "https://134.56.226.215/rest/sbaactionstatus" Invoke-RestMethod -Uri $url -Method GET -WebSession $MyPs <?xml version="1.0"?> <root> <status> <http_code>200</http_code> </status> <sbaactionstatus href="https://134.56.226.215/rest/sbaactionstatus"> <rt_Success>1</rt_Success> <rt_ActionType>4</rt_ActionType> <rt_PercentComplete>100</rt_PercentComplete> <rt_Duration>107</rt_Duration> <rt_StatusText>join complete</rt_StatusText> <rt_AllActionsBitmap>1</rt_AllActionsBitmap> <rt_ActionStartTime>0</rt_ActionStartTime> </sbaactionstatus> </root>
The action below performs a number of low-level steps necessary to deploy the ASM packages. Refer to Resource - sbaconfig.
$url = "https://134.56.226.215/rest/sbaconfig?action=deploy" Invoke-RestMethod -Uri $url -Method POST -Body "" -WebSession $ps
<?xml version="1.0"?> <root> <status> <http_code>200</http_code> </status> </root>
$url = "https://134.56.226.215/rest/sbaactionstatus" Invoke-RestMethod -Uri $url -Method GET -WebSession $MyPs <?xml version="1.0"?> <root> <status> <http_code>200</http_code> </status> <sbaactionstatus href="https://134.56.226.215/rest/sbaactionstatus"> <rt_Success>1</rt_Success> <rt_ActionType>22</rt_ActionType> <rt_PercentComplete>100</rt_PercentComplete> <rt_Duration>1502</rt_Duration> <rt_StatusText>Complete</rt_StatusText> <rt_AllActionsBitmap>3</rt_AllActionsBitmap> <rt_ActionStartTime>0</rt_ActionStartTime> </sbaactionstatus> </root>
The action below causes the Communications Server (CS) to begin configuration replication with the domain. This is a necessary step for bringing up the CS configuration, as well as receiving updates from the domain. Refer to Resource - sbaconfig.
$url = "https://134.56.226.215/rest/sbaconfig?action=startreplication" Invoke-RestMethod -Uri $url -Method POST -Body "" -WebSession $ps
<?xml version="1.0"?> <root> <status> <http_code>200</http_code> </status> </root>
$url = "https://134.56.226.215/rest/sbaactionstatus" Invoke-RestMethod -Uri $url -Method GET -WebSession $MyPs <?xml version="1.0"?> <root> <status> <http_code>200</http_code> </status> <sbaactionstatus href="https://134.56.226.215/rest/sbaactionstatus"> <rt_Success>1</rt_Success> <rt_ActionType>20</rt_ActionType> <rt_PercentComplete>100</rt_PercentComplete> <rt_Duration>268</rt_Duration> <rt_StatusText>replication started</rt_StatusText> <rt_AllActionsBitmap>7</rt_AllActionsBitmap> <rt_ActionStartTime>0</rt_ActionStartTime> </sbaactionstatus> </root>
The action below activates the Communications Server (CS) and must be done before the certificates are installed. Refer to Resource - sbaconfig.
$url = "https://134.56.226.215/rest/sbaconfig?action=activatewithlync" Invoke-RestMethod -Uri $url -Method POST -Body "" -WebSession $ps
<?xml version="1.0"?> <root> <status> <http_code>200</http_code> </status> </root>
$url = "https://134.56.226.215/rest/sbaactionstatus" Invoke-RestMethod -Uri $url -Method GET -WebSession $MyPs <?xml version="1.0"?> <root> <status> <http_code>200</http_code> </status> <sbaactionstatus href="https://134.56.226.215/rest/sbaactionstatus"> <rt_Success>1</rt_Success> <rt_ActionType>7</rt_ActionType> <rt_PercentComplete>100</rt_PercentComplete> <rt_Duration>12</rt_Duration> <rt_StatusText>Activation Complete</rt_StatusText> <rt_AllActionsBitmap>15</rt_AllActionsBitmap> <rt_ActionStartTime>0</rt_ActionStartTime> </sbaactionstatus> </root>
This resource defines the generatecsr action on the SBA CSR Resource. It returns the CSR as the response. It is also able to auto-submit the request. Refer to Resource - sbacsr.
$CA = "RDC.UX2013.COM\UX2013-RDC-CA" $CALogin = "ux2013\Administrator" $CAPassword = "Password1" $Domain = "ux2013.com" $Email = "Adrien@ux2013.com" $Organization = "SONUS" $OU = "AUTOMAITON" $City = "FREMONT" $State = "CA" $Country = "US" $CsrTemplate = "WebServer" $KeySize = 2048 ########## $BodyValue = "CA=$CA&CALogin=$CALogin&CAPassword=$CAPassword&Domain=$Domain&Email=$Email&Organization=$Organization&OU=$OU&City=$City&State=$State&Country=$Country&CsrTemplate=$CsrTemplate&KeySize=$KeySize" $url = "https://134.56.226.215/rest/sbacsr?action=generatecsr" $Result = Invoke-RestMethod -Uri $url -Method POST -Body $BodyValue -WebSession $ps
<?xml version="1.0"?> <root> <status> <http_code>200</http_code> </status> </root>
$url = "https://134.56.226.215/rest/sbaactionstatus" Invoke-RestMethod -Uri $url -Method GET -WebSession $MyPs <?xml version="1.0"?> <root> <status> <http_code>200</http_code> </status> <sbaactionstatus href="https://134.56.226.215/rest/sbaactionstatus"> <rt_Success>1</rt_Success> <rt_ActionType>14</rt_ActionType> <rt_PercentComplete>100</rt_PercentComplete> <rt_Duration>11</rt_Duration> <rt_StatusText>Certificate successfully applied</rt_StatusText> <rt_AllActionsBitmap>31</rt_AllActionsBitmap> <rt_ActionStartTime>0</rt_ActionStartTime> </sbaactionstatus> </root>
The action below starts the network daemons for the services indicated. Refer to Resource - sbaconfig.
$BodyValue = "serviceName=16" $url = "https://134.56.226.215/rest/sbaconfig?action=enablesvc" Invoke-RestMethod -Uri $url -Method POST -Body $BodyValue -WebSession $ps
<?xml version="1.0"?><root> <status> <http_code>200</http_code> </status> </root>
$url = "https://134.56.226.215/rest/sbaactionstatus" Invoke-RestMethod -Uri $url -Method GET -WebSession $MyPs <?xml version="1.0"?> <root> <status> <http_code>200</http_code> </status> <sbaactionstatus href="https://134.56.226.215/rest/sbaactionstatus"> <rt_Success>1</rt_Success> <rt_ActionType>1</rt_ActionType> <rt_PercentComplete>100</rt_PercentComplete> <rt_Duration>139</rt_Duration> <rt_StatusText>Services successfully started (16)</rt_StatusText> <rt_AllActionsBitmap>63</rt_AllActionsBitmap> <rt_ActionStartTime>0</rt_ActionStartTime> </sbaactionstatus> </root>
The action below applies a security template to the node to prevent unauthorized changes from being made to the system. Refer to Resource - sbaconfig.
$BodyValue = "templateType=0&sbaInstallFilename=0" $url = "https://134.56.226.215/rest/sbaconfig?action=applysectemplate" $Result = Invoke-RestMethod -Uri $url -Method POST -Body $BodyValue -WebSession $ps
<?xml version="1.0"?><root> <status> <http_code>200</http_code> </status> </root>
$url = "https://134.56.226.215/rest/sbaactionstatus" Invoke-RestMethod -Uri $url -Method GET -WebSession $MyPs <?xml version="1.0"?> <root> <status> <http_code>200</http_code> </status> <sbaactionstatus href="https://134.56.226.215/rest/sbaactionstatus"> <rt_Success>1</rt_Success> <rt_ActionType>21</rt_ActionType> <rt_PercentComplete>100</rt_PercentComplete> <rt_Duration>1</rt_Duration> <rt_StatusText>Security Template Applied</rt_StatusText> <rt_AllActionsBitmap>127</rt_AllActionsBitmap> <rt_ActionStartTime>0</rt_ActionStartTime> </sbaactionstatus> </root>
To confirm that all the SBA services are running properly, refer to Viewing the SBA Operational Status to check the status.
$url = "https://134.56.226.215/rest/asmfactoryimage/1" $Result = Invoke-RestMethod -Uri $url -Method GET -WebSession $ps
### 1. Login $NodeUrl = "134.56.226.215" $NodeLogin = "restuser" $NodePassword = "restpass" ### 2. Re-initialize the ASM $LyncVersion = "Lync 2013" ### 3. Configuring the ASM IP Settings $DHCPEnabled = 0 $ipv4Address = "134.56.226.214" $ipv4Netmask = "255.255.255.0" $ipv4Gateway = "134.56.226.5" $RemoteDesktopEnabled = 1 $DNSServer1 = "134.56.227.32" $DNSServer2 = "134.56.226.75" $AclEnable = 1 ### 4. Update SbcComms $SbcCommsFilePath = "c:\setup.msi" ### 5. Joining the ASM to a Domain $hostName = "AUTO-SBA226-214" $domainName = "UX2013.COM" $userName = "UX2013\administrator" $userPassword = "Password1"
### 7. Generate and Import an SBA Certificate $CA = "RDC.UX2013.COM\UX2013-RDC-CA" $CALogin = "ux2013\Administrator" $CAPassword = "Password1" $Domain = "ux2013.com" $Email = "Adrien@ux2013.com" $Organization = "SONUS" $OU = "AUTOMAITON" $City = "FREMONT" $State = "CA" $Country = "US" $CsrTemplate = "WebServer" $KeySize = 2048 ### 10. Install the Latest Lync SBA Cumulative Update (CU) $CUFilePath = "c:\CU.pkg" ################################### #### Define some function Helper ###################################
### Re-initialize the ASM with the correct ASM Image function SearchImageDirectoryName { Param($MyLyncVersion, $MyNodeUrl, $MyPs) $url = "https://$MyNodeUrl/rest/asmfactoryimage" $ImageCmd = Invoke-RestMethod -Uri $url -Method GET -WebSession $MyPs if ((BasicHandler $ImageCmd) -ne 1) { write-host "Failed on SearchImageDirectoryName: "(BasicHandler $ImageCmd) return 0 } [xml]$ImageCmdXml= $ImageCmd.Substring(5) foreach ($image in $ImageCmdXml.root.asmfactoryimage_list.asmfactoryimage_pk.href) { $url = $image $ImageDetail = Invoke-RestMethod -Uri $url -Method GET -WebSession $MyPs [xml]$ImageDetailXml= $ImageDetail.Substring(5) if($ImageDetailXml.root.asmfactoryimage.Description.contains($MyLyncVersion)) { return $ImageDetailXml.root.asmfactoryimage.ImageDirectoryName} } return 0 }
### Return the result of the request Function BasicHandler { Param($MyResult) [xml]$XmlResult = $MyResult.Substring(5) if($XmlResult.root.status.http_code.contains("200")) { return 1 } else { return "Error Code:<"+$XmlResult.root.status.app_status.app_status_entry.code+"> Param:<"+$XmlResult.root.status.app_status.app_status_entry.params+">" } } ### Return the result of the request Function BasicHandlerCurl { Param($MyResult) $FiltredMyResult = "" foreach ($line in $MyResult) { if ($line.StartsWith("<")) { $FiltredMyResult += $line } elseif ($line.StartsWith(" ")) { $FiltredMyResult += $line } } [xml]$XmlResult = $FiltredMyResult if($XmlResult.root.status.http_code.contains("200")) { return 1 } else { return "Error Code:<"+$XmlResult.root.status.app_status.app_status_entry.code+"> Param:<"+$XmlResult.root.status.app_status.app_status_entry.params+">" } }
### Return the result of the last action function LookCompletionStatus { Param($MyNodeUrl, $MyPs) $url = "https://$MyNodeUrl/rest/sbaactionstatus" $timer = 0 while($timer -lt 3600) { $Result = Invoke-RestMethod -Uri $url -Method GET -WebSession $MyPs if ((BasicHandler $Result) -ne 1) { return 0} [xml]$FinalResult= $Result.Substring(5) if ($FinalResult.root.sbaactionstatus.rt_Success -eq 1) { if ($FinalResult.root.sbaactionstatus.rt_PercentComplete -eq 100) { return 1 } } else { return $FinalResult.root.sbaactionstatus.rt_StatusText } sleep 10 $timer += 10 write-host "- "$FinalResult.root.sbaactionstatus.rt_PercentComplete"% "$FinalResult.root.sbaactionstatus.rt_StatusText } return "Timout out" } ################################### #### Main Code ################################### $ActualStep = 0
### 1. Login $ActualStep = "1. Login" add-type @" using System.Net; using System.Security.Cryptography.X509Certificates; public class IDontCarePolicy : ICertificatePolicy { public IDontCarePolicy() {} public bool CheckValidationResult( ServicePoint sPoint, X509Certificate cert, WebRequest wRequest, int certProb) { return true; } } "@ [System.Net.ServicePointManager]::CertificatePolicy = new-object IDontCarePolicy $BodyValue = "Username=$NodeLogin&Password=$NodePassword" $url = "https://$NodeUrl/rest/login" $Result = Invoke-RestMethod -Uri $url -Method Post -Body $BodyValue -SessionVariable ps if ((BasicHandler $Result) -ne 1) { write-host "Failed on "$ActualStep": "(BasicHandler $Result) return 0 }
### 2. Re-initialize the ASM $ActualStep = "2. Re-initialize the ASM" $dirName = SearchImageDirectoryName $LyncVersion $NodeUrl $ps if ($dirName -eq 0) { write-host $ActualStep" Failed: Unable to find the proper ASM Image" return 0 } $BodyValue = "dirName=$dirName" $url = "https://$NodeUrl/rest/sbaconfig?action=asmreinitialize" $Result = Invoke-RestMethod -Uri $url -Method POST -Body $BodyValue -WebSession $ps if ((BasicHandler $Result) -ne 1) { write-host $ActualStep" Failed: "(BasicHandler $Result) return 0 } if ((LookCompletionStatus $NodeUrl $ps) -ne 1) { write-host $ActualStep" Failed: "(BasicHandler $Result) return 0 }
### 3. Configuring the ASM IP Settings $ActualStep = "3. Configuring the ASM IP Settings" $BodyValue = "DHCPEnabled=$DHCPEnabled&ipv4Address=$ipv4Address&ipv4Netmask=$ipv4Netmask&ipv4Gateway=$ipv4Gateway&RemoteDesktopEnabled=$RemoteDesktopEnabled&DNSServer1=$DNSServer1&DNSServer2=$DNSServer2&AclEnable=$AclEnable" $url = "https://$NodeUrl/rest/sbaconfig" $Result = Invoke-RestMethod -Uri $url -Method POST -Body $BodyValue -WebSession $ps if ((BasicHandler $Result) -ne 1) { write-host $ActualStep" Failed: "(BasicHandler $Result) return 0 } if ((LookCompletionStatus $NodeUrl $ps) -ne 1) { write-host $ActualStep" Failed: "(BasicHandler $Result) return 0 } ### 4. Update SbcComms ### 5. Joining the ASM to a Domain $ActualStep = "5. Joining the ASM to a Domain" $BodyValue = "hostName=$hostName&domainName=$domainName&userName=$userName&userPassword=$userPassword" $url = "https://$NodeUrl/rest/sbaconfig?action=joindomain" $Result = Invoke-RestMethod -Uri $url -Method POST -Body $BodyValue -WebSession $ps if ((BasicHandler $Result) -ne 1) { write-host $ActualStep" Failed: "(BasicHandler $Result) return 0 } if ((LookCompletionStatus $NodeUrl $ps) -ne 1) { write-host $ActualStep" Failed: "(BasicHandler $Result) return 0 }
### 6. Deploying the SBA $ActualStep = "6. Deploying the SBA" $url = "https://$NodeUrl/rest/sbaconfig?action=deploy" $Result = Invoke-RestMethod -Uri $url -Method POST -Body "" -WebSession $ps if ((BasicHandler $Result) -ne 1) { write-host $ActualStep" Failed: "(BasicHandler $Result) return 0 } if ((LookCompletionStatus $NodeUrl $ps) -ne 1) { write-host $ActualStep" Failed: "(BasicHandler $Result) return 0 } $url = "https://$NodeUrl/rest/sbaconfig?action=startreplication" $Result = Invoke-RestMethod -Uri $url -Method POST -Body "" -WebSession $ps if ((BasicHandler $Result) -ne 1) { write-host $ActualStep" Failed: "(BasicHandler $Result) return 0 } if ((LookCompletionStatus $NodeUrl $ps) -ne 1) { write-host $ActualStep" Failed: "(BasicHandler $Result) return 0 } $url = "https://$NodeUrl/rest/sbaconfig?action=activatewithlync" $Result = Invoke-RestMethod -Uri $url -Method POST -Body "" -WebSession $ps if ((BasicHandler $Result) -ne 1) { write-host $ActualStep" Failed: "(BasicHandler $Result) return 0 } if ((LookCompletionStatus $NodeUrl $ps) -ne 1) { write-host $ActualStep" Failed: "(BasicHandler $Result) return 0 }
### 7. Generate and Import an SBA Certificate $ActualStep = "7. Generate and Import an SBA Certificate" $BodyValue = "CA=$CA&CALogin=$CALogin&CAPassword=$CAPassword&Domain=$Domain&Email=$Email&Organization=$Organization&OU=$OU&City=$City&State=$State&Country=$Country&CsrTemplate=$CsrTemplate&KeySize=$KeySize" $url = "https://$NodeUrl/rest/sbacsr?action=generatecsr" $Result = Invoke-RestMethod -Uri $url -Method POST -Body $BodyValue -WebSession $ps if ((BasicHandler $Result) -ne 1) { write-host $ActualStep" Failed: "(BasicHandler $Result) return 0 } if ((LookCompletionStatus $NodeUrl $ps) -ne 1) { write-host $ActualStep" Failed: "(BasicHandler $Result) return 0 }
### 8. Starting the SBA Services $ActualStep = "8. Starting the SBA Services" $BodyValue = "serviceName=16" $url = "https://$NodeUrl/rest/sbaconfig?action=enablesvc" $Result = Invoke-RestMethod -Uri $url -Method POST -Body $BodyValue -WebSession $ps if ((BasicHandler $Result) -ne 1) { write-host $ActualStep" Failed: "(BasicHandler $Result) return 0 } if ((LookCompletionStatus $NodeUrl $ps) -ne 1) { write-host $ActualStep" Failed: "(BasicHandler $Result) return 0 } ### 9. Applying an SBA Security Template $ActualStep = "9. Applying an SBA Security Template" $BodyValue = "templateType=0&sbaInstallFilename=0" $url = "https://$NodeUrl/rest/sbaconfig?action=applysectemplate" $Result = Invoke-RestMethod -Uri $url -Method POST -Body $BodyValue -WebSession $ps if ((BasicHandler $Result) -ne 1) { write-host $ActualStep" Failed: "(BasicHandler $Result) return 0 } if ((LookCompletionStatus $NodeUrl $ps) -ne 1) { write-host $ActualStep" Failed: "(BasicHandler $Result) return 0 } ### 10. Install the Latest Lync SBA Cumulative Update