Public/UserAccess/Get-FullUserDetail.ps1
<#PSScriptInfo .VERSION 1.0.2 .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] .PRIVATEDATA #> #Requires -Module ActiveDirectory <# .DESCRIPTION Get user AD details Requires -Modules ActiveDirectory #> Param() Function Get-FullUserDetail { PARAM( [Parameter(Mandatory=$true, Position=0)] [ValidateNotNull()] [ValidateNotNullOrEmpty()] [string]$UserToQuery, [Parameter(Mandatory=$true, Position=1)] [ValidateNotNull()] [ValidateNotNullOrEmpty()] [ValidateSet("client.barclayscorp.com", "intranet.barcapint.com","corp.dsarena.com","ds1.ad.absa.co.za")] [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,$DomainCredentials,$VerbosePreference) Write-Verbose "$((get-date -Format HH:mm:ss).ToString()) [Starting] User Details" $UserSummery = Get-ADUser $UserToQuery -Server $DomainFQDN -Credential $DomainCredentials -Properties * | select 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 |