Public/New-UnityCifsServer.ps1
Function New-UnityCIFSServer { <# .SYNOPSIS Creates a pool. .DESCRIPTION Creates a pool. You need to have an active session with the array. .NOTES Written by Erwan Quelin under MIT licence - https://github.com/equelin/Unity-Powershell/blob/master/LICENSE .LINK https://github.com/equelin/Unity-Powershell .EXAMPLE New-UnityCifsServer -nasServer 'nas_1' -Name 'CIFS01' Create CIFS Server named 'CIFS01' #> [CmdletBinding(DefaultParameterSetName="AD")] Param ( [Parameter(Mandatory = $false,HelpMessage = 'EMC Unity Session')] $session = ($global:DefaultUnitySession | where-object {$_.IsConnected -eq $true}), [Parameter(Mandatory = $false,Position = 1,ValueFromPipeline=$True,ValueFromPipelinebyPropertyName=$True,HelpMessage = 'Pool Name')] [String[]]$Name, [Parameter(Mandatory = $true,HelpMessage = 'ID of the NAS server to which the SMB server belongs')] [String]$nasServer, [Parameter(Mandatory = $false,HelpMessage = 'Description of the SMB server')] [String]$Description, [Parameter(Mandatory = $false,ParameterSetName="AD",HelpMessage = 'Domain name where SMB server is registered in Active Directory, if applicable.')] [String]$domain, [Parameter(Mandatory = $false,ParameterSetName="AD",HelpMessage = 'LDAP organizational unit of SMB server in Active Directory, if applicable')] [String]$organizationalUnit, [Parameter(Mandatory = $false,ParameterSetName="AD",HelpMessage = 'Active Directory domain user name')] [String]$domainUsername, [Parameter(Mandatory = $false,ParameterSetName="AD",HelpMessage = 'Active Directory domain password')] [String]$domainPassword, [Parameter(Mandatory = $false,ParameterSetName="AD",HelpMessage = 'Reuse existing SMB server account in the Active Directory')] [Bool]$reuseComputerAccount, [Parameter(Mandatory = $false,ParameterSetName="Workgroup",HelpMessage = 'Standalone SMB server workgroup name')] [String]$workgroup, [Parameter(Mandatory = $false,ParameterSetName="Workgroup",HelpMessage = 'Is Snapshot Harvest Enabled')] [String]$localAdminPassword, [Parameter(Mandatory = $false,HelpMessage = 'List of file IP interfaces that service CIFS protocol of SMB server')] [String[]]$interfaces ) Begin { Write-Verbose "Executing function: $($MyInvocation.MyCommand)" #Initialazing arrays $ResultCollection = @() } Process { Foreach ($sess in $session) { Write-Verbose "Processing Session: $($sess.Server) with SessionId: $($sess.SessionId)" Foreach ($n in $Name) { # Creation of the body hash $body = @{} # nasServer argument $body["nasServer"] = @{} $nasServerArg = @{} $nasServerArg["id"] = "$($nasServer)" $body["nasServer"] = $nasServerArg # netbiosName argument If ($PSBoundParameters.ContainsKey('netbiosName')) { $body["netbiosName"] = "$($netbiosName)" } # Name argument If ($PSBoundParameters.ContainsKey('Name')) { $body["name"] = "$($name)" } # Description argument If ($PSBoundParameters.ContainsKey('description')) { $body["description"] = "$($description)" } # domain argument If ($PSBoundParameters.ContainsKey('domain')) { $body["domain"] = "$($domain)" } # organizationalUnit argument If ($PSBoundParameters.ContainsKey('organizationalUnit')) { $body["organizationalUnit"] = "$($organizationalUnit)" } # domainUsername argument If ($PSBoundParameters.ContainsKey('domainUsername')) { $body["domainUsername"] = "$($domainUsername)" } # domainPassword argument If ($PSBoundParameters.ContainsKey('domainPassword')) { $body["domainPassword"] = "$($domainPassword)" } # reuseComputerAccount argument If ($PSBoundParameters.ContainsKey('reuseComputerAccount')) { $body["reuseComputerAccount"] = $reuseComputerAccount } # workgroup argument If ($PSBoundParameters.ContainsKey('workgroup')) { $body["workgroup"] = "$($workgroup)" } # localAdminPassword argument If ($PSBoundParameters.ContainsKey('localAdminPassword')) { $body["localAdminPassword"] = "$($localAdminPassword)" } #interfaces argument $body['interfaces'] = @() Foreach ($int in $interfaces) { $ÎntArgument = @{} $ÎntArgument['id'] = "$($int)" $body["interfaces"] += $ÎntArgument } If ($Sess.TestConnection()) { #Building the URI $URI = 'https://'+$sess.Server+'/api/types/cifsServer/instances' Write-Verbose "URI: $URI" #Sending the request $request = Send-UnityRequest -uri $URI -Session $Sess -Method 'POST' -Body $Body Write-Verbose "Request status code: $($request.StatusCode)" If ($request.StatusCode -eq '201') { #Formating the result. Converting it from JSON to a Powershell object $results = ($request.content | ConvertFrom-Json).content Write-Verbose "CIFS Server created with the ID: $($results.id) " #Executing Get-UnityUser with the ID of the new user Get-UnityCifsServer -Session $Sess -ID $results.id } } else { Write-Information -MessageData "You are no longer connected to EMC Unity array: $($Sess.Server)" } } } } End {} } |