Functions/Accounts/Add-PASPendingAccount.ps1
# .ExternalHelp psPAS-help.xml function Add-PASPendingAccount { [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingUserNameAndPassWordParams', '', Justification = "Username not used for authentication")] [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingPlainTextForPassword', 'LastPasswordSet', Justification = "Parameter does not hold password")] [CmdletBinding()] param( [parameter( Mandatory = $true, ValueFromPipelinebyPropertyName = $true )] [ValidateNotNullOrEmpty()] [string]$UserName, [parameter( Mandatory = $true, ValueFromPipelinebyPropertyName = $true )] [string]$Address, [parameter( Mandatory = $true, ValueFromPipelinebyPropertyName = $true )] [datetime]$AccountDiscoveryDate, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true )] [ValidateSet("Windows", "Unix")] [string]$OSType, [parameter( Mandatory = $true, ValueFromPipelinebyPropertyName = $true )] [ValidateSet("enabled", "disabled")] [string]$AccountEnabled, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true )] [string]$AccountOSGroups, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true )] [ValidateSet("domain", "local")] [string]$AccountType, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true )] [string]$DiscoveryPlatformType, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true )] [string]$Domain, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true )] [string]$LastLogonDate, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true )] [string]$LastPasswordSet, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true )] [boolean]$PasswordNeverExpires, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true )] [string]$OSVersion, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true )] [string]$OU, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true )] [ValidateSet("Privileged", "Non-privileged")] [string]$AccountCategory, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true )] [string]$AccountCategoryCriteria, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true )] [string]$UserDisplayName, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true )] [string]$AccountDescription, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true )] [string]$AccountExpirationDate, [string]$UID, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true )] [string]$GID, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true )] [ValidateSet("Workstation", "Server")] [string]$MachineOSFamily ) BEGIN { }#begin PROCESS { #Create URL for Request $URI = "$Script:BaseURI/WebServices/PIMServices.svc/PendingAccounts" #Get all parameters that will be sent in the request $boundParameters = $PSBoundParameters | Get-PASParameter If ($PSBoundParameters.ContainsKey("AccountDiscoveryDate")) { #Convert ExpiryDate to string in Required format $Date = (Get-Date $AccountDiscoveryDate.ToUniversalTime() -Format "yyyy-MM-ddTHH:mm:ssZ").ToString() #Include date string in request $boundParameters["AccountDiscoveryDate"] = $Date } #Create body of request $body = @{ #pendingaccount node "pendingAccount" = $boundParameters | Get-PASParameter #JSON object } | ConvertTo-Json #send request to PAS web service Invoke-PASRestMethod -Uri $URI -Method POST -Body $Body -WebSession $Script:WebSession }#process END { }#end } |