Public/UserAccess/Get-FullUserDetail.ps1
<#PSScriptInfo .VERSION 1.0.5 .GUID 8f756c95-9e99-4932-bdd9-b63c4b98405b .AUTHOR Pierre Smit .COMPANYNAME .COPYRIGHT .TAGS Citrix .LICENSEURI .PROJECTURI .ICONURI .EXTERNALMODULEDEPENDENCIES .REQUIREDSCRIPTS .EXTERNALSCRIPTDEPENDENCIES .RELEASENOTES Created [23/05/2019_00:00] Updated [24/05/2019_19:25] Updated [06/06/2019_19:26] Updated [09/06/2019_09:18] Updated [15/06/2019_01:11] Updated [15/06/2019_13:59] Updated Reports .PRIVATEDATA #> #Requires -Module ActiveDirectory <# .DESCRIPTION Citrix XenDesktop HTML Health Check Report Requires -Modules ActiveDirectory #> Param() Function Get-FullUserDetail { [CmdletBinding()] PARAM( [Parameter(Mandatory = $true, Position = 0)] [ValidateNotNull()] [ValidateNotNullOrEmpty()] [string]$UserToQuery, [Parameter(Mandatory = $true, Position = 1)] [ValidateNotNull()] [ValidateNotNullOrEmpty()] [string]$DomainFQDN, [Parameter(Mandatory = $true, Position = 2)] [ValidateNotNull()] [ValidateNotNullOrEmpty()] [PSCredential]$DomainCredentials, [Parameter(Mandatory = $false, Position = 3)] [switch]$RunAsPSRemote = $false, [Parameter(Mandatory = $false, Position = 3)] [String]$PSRemoteServerName) function AllConfig { param($UserToQuery, $DomainFQDN, [SecureString] $DomainCredentials, $VerbosePreference) Write-Verbose "$((Get-Date -Format HH:mm:ss).ToString()) [Starting] User Details" $UserSummery = Get-ADUser $UserToQuery -Server $DomainFQDN -Credential $DomainCredentials -Properties * | Select-Object Name, GivenName, Surname, UserPrincipalName, EmailAddress, EmployeeID, EmployeeNumber, HomeDirectory, Enabled, Created, Modified, LastLogonDate, samaccountname $AllUserDetails = Get-ADUser $UserToQuery -Properties * -Server $DomainFQDN -Credential $DomainCredentials Write-Verbose "$((Get-Date -Format HH:mm:ss).ToString()) [Processing] User Groups" $AllUserGroups = Get-ADUser $UserToQuery -Properties * -Server $DomainFQDN -Credential $DomainCredentials | Select-Object -ExpandProperty memberof | ForEach-Object { Get-ADGroup $_ -Server $DomainFQDN -Credential $DomainCredentials } $CusObject = New-Object PSObject -Property @{ DateCollected = (Get-Date -Format dd-MM-yyyy_HH:mm).ToString() UserSummery = $UserSummery AllUserDetails = $AllUserDetails AllUserGroups = $AllUserGroups } Write-Verbose "$((Get-Date -Format HH:mm:ss).ToString()) [Ending] User Details" $CusObject } $FarmDetails = @() if ($RunAsPSRemote -eq $true) { $FarmDetails = Invoke-Command -ComputerName $PSRemoteServerName -ScriptBlock ${Function:AllConfig} -ArgumentList @($UserToQuery, $DomainFQDN, $DomainCredentials, $VerbosePreference) -Credential $DomainCredentials } else { $FarmDetails = AllConfig -UserToQuery $UserToQuery -DomainFQDN $DomainFQDN -DomainCredentials $DomainCredentials } Write-Verbose "$((Get-Date -Format HH:mm:ss).ToString()) [End] All Details" $FarmDetails } #end Function |