Functions/Remove/Remove-SOCatClient.psm1
#region: Remove-SOCatClient <# .Synopsis Remove a single StoreOnce Catalyst store on your StoreOnce system. .Description Remove a single StoreOnce Catalyst store on a given Service Set on your StoreOnce system. .Parameter Server IP Address oder DNS Name of your StoreOnce system like defined via Connect-SOAppliance (check Get-SOConnections). .Parameter SOCatClientName Name for the Client on your StoreOnce system. .Parameter Timeout Timeout for the Client deletion process (Default is 30 Seconds). .Example Remove-SOCatClient -Server 192.168.2.1 -SOCatClientName MyRemovedClient #Requires PS -Version 4.0 #> function Remove-SOCatClient { [CmdletBinding()] param ( [parameter(Mandatory=$true, Position=0)] [ValidateNotNullOrEmpty()] [String]$Server, [parameter(Mandatory=$true, Position=2)] [ValidateNotNullOrEmpty()] [String]$SOCatClientName, [parameter(Mandatory=$false, Position=4)] [Int]$Timeout = 30 ) Process { if (!$Global:SOConnections) {throw "No StoreOnce Appliance(s) connected! Use 'Connect-SOAppliance'"} if ($Server.count -gt 1) {throw "This Command only Supports one D2D System."} $Connection = $Global:SOConnections | Where {$_.Server -eq $Server} if (!$Connection) {throw "No D2D System found, check Get-SOConnections."} if ($Connection.count -gt 1) {throw "This Command only Supports one D2D System. Multiple Matches for $Server found..."} if (Test-IP -IP $($Connection.Server)) { if (!(Get-SOCatClients | where {$_.Name -eq $SOCatClientName -and $_.System -eq $($Connection.Server)})) {throw "Client $SOCatClientName does not exist."} [Array]$IDs = (Get-SOSIDs | where {$_.System -eq $($Connection.Server)}).SSID for ($i = 1; $i -le $IDs.Count; $i++ ){ $ClientCall = @{uri = "https://$($Connection.Server)/storeonceservices/cluster/servicesets/$i/services/cat/configs/clients/$((Get-SOCatClients | where {$_.Name -eq $SOCatClientName -and $_.System -eq $($Connection.Server) -and $_.SSID -eq $i}).ID)"; Method = 'DELETE'; Headers = @{Authorization = 'Basic ' + $($SOConnections.EncodedPassword); Accept = 'text/xml'; } } $ClientResponse = Invoke-RestMethod @ClientCall } $i = 0 while((Get-SOCatClients | where {$_.Name -eq $SOCatClientName -and $_.System -eq $($SOConnections.Server)})){ $i++ Start-Sleep 1 if($i -gt $Timeout) { Write-Error "Removing Client Failed."; break} Write-Progress -Activity "Deleting Client" -Status "Wait for Client be removed..." } } Return (Get-SOCatClients | where {$_.System -eq $($SOConnections.Server)} | ft * -AutoSize) } } #endregion |