public/Get-odscexTargetUser.ps1
|
function Get-odscexTargetUser { [CmdletBinding(DefaultParameterSetName = 'AllUsers')] param( [Parameter(Mandatory = $true, ParameterSetName = 'Csv')] [string] $CsvPath, [Parameter(Mandatory = $true, ParameterSetName = 'Group')] [string] $GroupId, [Parameter(Mandatory = $true, ParameterSetName = 'Filter')] [string] $Filter, [Parameter(Mandatory = $true, ParameterSetName = 'AllUsers')] [switch] $AllUsers ) process { switch ($PsCmdlet.ParameterSetName) { 'Csv' { Import-Csv -Path $CsvPath | ForEach-Object { [pscustomobject]@{ UserPrincipalName = $_.UserPrincipalName UserObjectId = if ($_.UserObjectId) { $_.UserObjectId } else { $_.Id } Source = $CsvPath } } } 'Group' { Invoke-odscexApiRequest -Resource "groups/${GroupId}/transitiveMembers/microsoft.graph.user?`$select=id,userPrincipalName,mail,accountEnabled" -Method ([Microsoft.PowerShell.Commands.WebRequestMethod]::Get) -AllPages | ForEach-Object { [pscustomobject]@{ UserPrincipalName = $_.userPrincipalName UserObjectId = $_.id Mail = $_.mail AccountEnabled = $_.accountEnabled Source = $GroupId } } } 'Filter' { $EncodedFilter = [uri]::EscapeDataString($Filter) Invoke-odscexApiRequest -Resource "users?`$filter=${EncodedFilter}&`$select=id,userPrincipalName,mail,accountEnabled" -Method ([Microsoft.PowerShell.Commands.WebRequestMethod]::Get) -AllPages | ForEach-Object { [pscustomobject]@{ UserPrincipalName = $_.userPrincipalName UserObjectId = $_.id Mail = $_.mail AccountEnabled = $_.accountEnabled Source = $Filter } } } 'AllUsers' { $null = $AllUsers Invoke-odscexApiRequest -Resource 'users?$select=id,userPrincipalName,mail,accountEnabled' -Method ([Microsoft.PowerShell.Commands.WebRequestMethod]::Get) -AllPages | ForEach-Object { [pscustomobject]@{ UserPrincipalName = $_.userPrincipalName UserObjectId = $_.id Mail = $_.mail AccountEnabled = $_.accountEnabled Source = 'AllUsers' } } } } } } |