Groups.psm1
<# .SYNOPSIS The get groups operation will retrieve a list of groups from your company. .DESCRIPTION The get groups operation will retrieve a list of groups from your company. This can be either all groups, or groups filtered by groupmember. .PARAMETER Name Specifies the name of an existing variable to retrieve, can be specified as an array of strings to retrieve multiple variables .PARAMETER LinkedItemGuid When specified gets the automation variables belonging to a specific item. .PARAMETER CompanyName The companyname that's used in the helloId URL to know which HelloID tenant to talk to. Required if not connected with Connect-HelloId. .PARAMETER ApiKey The Apikey to use for the api call. Required if not connected with Connect-HelloId. .PARAMETER ApiSecret The Apisecret belonging to the apikey, has to be a securestring. Required if not connected with Connect-HelloId. .EXAMPLE .EXAMPLE .INPUTS .OUTPUTS #> function Get-HidGroup { [CmdletBinding(DefaultParameterSetName = 'guid',PositionalBinding = $false)] [Alias()] [OutputType([String])] Param ( # the name of an existing variable [Parameter(Mandatory = $false, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = "guid")] [ValidateNotNullOrEmpty()] [guid[]]$GroupGuid, # the name of an existing variable [Parameter(Mandatory = $false, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = "Name")] [ValidateNotNullOrEmpty()] [string[]]$Name, # Company name used in the URL [Parameter(Mandatory= $false)] [ValidateNotNullOrEmpty()] [string]$CompanyName, # Api key [Parameter(Mandatory= $false)] [ValidateNotNullOrEmpty()] [string]$ApiKey, # Api secret [Parameter(Mandatory= $false)] [ValidateNotNullOrEmpty()] [securestring]$ApiSecret ) begin { if ($PSBoundParameters.ContainsKey("CompanyName") -AND $PSBoundParameters.ContainsKey("ApiKey") -AND $PSBoundParameters.ContainsKey("ApiSecret") ){ Write-Verbose -Message "Using connectioninfo and credentials from parameter" #Create credential object for authentication $Cred = New-Object System.Management.Automation.PSCredential ($ApiKey, $ApiSecret) } elseif ($Global:HelloIdConnection.ApiCredentials) { Write-Verbose -Message "Using Global connectioninfo and credentials from Connect-HelloId " $Cred = $Global:HelloIdConnection.ApiCredentials $CompanyName = $Global:HelloIdConnection.CompanyName } else { throw "Error finding connectioninfo. Connect using Connect-HelloId, or specifie CompanyName, ApiKey and ApiSecret" } #Headers $headers = @{ "Content-Type" = "application/json" } } #End begin process { if ($PSBoundParameters.ContainsKey("GroupGuid")){ foreach ($guid in $GroupGuid){ $URI = "https://$CompanyName.helloid.com/api/v1/groups/$guid" $output = Invoke-RestMethod -Uri $URI -Method "GET" -Headers $headers -Credential $Cred -UseBasicParsing $output } } elseif ($PSBoundParameters.ContainsKey("Name")) { foreach ($item in $Name){ $URI = "https://$CompanyName.helloid.com/api/v1/groups/$item" $output = Invoke-RestMethod -Uri $URI -Method "GET" -Headers $headers -Credential $Cred -UseBasicParsing $output } } else { $URI = "https://$CompanyName.helloid.com/api/v1/groups" $output = Invoke-RestMethod -Uri $URI -Method "GET" -Headers $headers -Credential $Cred -UseBasicParsing $output } } #End process end { } #End end } #End function <# .SYNOPSIS The get groups operation will retrieve a list of groups from your company. .DESCRIPTION The get groups operation will retrieve a list of groups from your company. This can be either all groups, or groups filtered by groupmember. .PARAMETER Name Specifies the name of an existing variable to retrieve, can be specified as an array of strings to retrieve multiple variables .PARAMETER LinkedItemGuid When specified gets the automation variables belonging to a specific item. .PARAMETER CompanyName The companyname that's used in the helloId URL to know which HelloID tenant to talk to. Required if not connected with Connect-HelloId. .PARAMETER ApiKey The Apikey to use for the api call. Required if not connected with Connect-HelloId. .PARAMETER ApiSecret The Apisecret belonging to the apikey, has to be a securestring. Required if not connected with Connect-HelloId. .EXAMPLE .EXAMPLE .INPUTS .OUTPUTS #> function New-HidGroup { [CmdletBinding(PositionalBinding = $false)] [Alias()] [OutputType([String])] Param ( # the name of the group to create [Parameter(Mandatory = $false, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = "Name")] [ValidateNotNullOrEmpty()] [string[]]$Name, # Company name used in the URL [Parameter(Mandatory= $false)] [ValidateNotNullOrEmpty()] [string]$CompanyName, # Api key [Parameter(Mandatory= $false)] [ValidateNotNullOrEmpty()] [string]$ApiKey, # Api secret [Parameter(Mandatory= $false)] [ValidateNotNullOrEmpty()] [securestring]$ApiSecret ) begin { if ($PSBoundParameters.ContainsKey("CompanyName") -AND $PSBoundParameters.ContainsKey("ApiKey") -AND $PSBoundParameters.ContainsKey("ApiSecret") ){ Write-Verbose -Message "Using connectioninfo and credentials from parameter" #Create credential object for authentication $Cred = New-Object System.Management.Automation.PSCredential ($ApiKey, $ApiSecret) } elseif ($Global:HelloIdConnection.ApiCredentials) { Write-Verbose -Message "Using Global connectioninfo and credentials from Connect-HelloId " $Cred = $Global:HelloIdConnection.ApiCredentials $CompanyName = $Global:HelloIdConnection.CompanyName } else { throw "Error finding connectioninfo. Connect using Connect-HelloId, or specifie CompanyName, ApiKey and ApiSecret" } #Headers $headers = @{ "Content-Type" = "application/json" } } #End begin process { $sbBody = [System.Text.StringBuilder]::new() $null = $SbBody.AppendLine("{") $null = $SbBody.AppendLine("`"name`": `"$Name`",") $null = $SbBody.AppendLine("`"IsEnabled`": $(($Enabled).ToString().ToLower()),") $null = $SbBody.AppendLine("`"IsDefault`": $(($Default).ToString().ToLower()),") $null = $SbBody.AppendLine("`"IsQrEnabled`": $(($QrEnabled).ToString().ToLower()),") $null = $SbBody.AppendLine("`"UserNames`": `"$JsonUserNames`",") $null = $SbBody.AppendLine("`"UserGUIDs`": `"$JsonUserGuids`",") $null = $SbBody.AppendLine("`"ManagedByUserGuid`": `"$UserNames`",") if ($PSBoundParameters.ContainsKey("ManagedByUserGuid")) { $null = $SbBody.AppendLine("`"ManagedByUserGuid`": `"$ManagedByUserGuid`",") } $URI = "https://$CompanyName.helloid.com/api/v1/groups" $output = Invoke-RestMethod -Uri $URI -Method "GET" -Headers $headers -Credential $Cred -UseBasicParsing $output } #End process end { } #End end } #End function |