ActiveDirectory/ServerRake.ActiveDirectory.Read.ps1

#########################################
### ACTIVEDIRECTORY FUNCTIONS: READ ###
#########################################

# ALL FUNCTIONS WILL NEED TO RUN FROM A JUMPHOST IMPORT THE ACTIVEDIRECTORY MODULE

function Get-ADComputerOUs {
    
    [CmdletBinding()]
    param (

        [Parameter(Mandatory = $true)]
        [String] $Jumphost,

        [Parameter(Mandatory = $true)]
        [String[]] $ComputerName

    )

    Invoke-Command -ComputerName $Jumphost -Credential $secret -ArgumentList $secret, $ComputerName -ScriptBlock {
        
        param ($secret, $ComputerName)

        Import-Module ActiveDirectory -WarningAction SilentlyContinue

        $domainController = ([System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain().FindDomainController()).Name
        $allADComputers = Get-ADComputer -Filter * -Server $domainController -Credential $secret
        $filteredADComputers = @()

        foreach ($computer in $allADComputers) {

            if ($computer.Name -in $ComputerName) {

                $filteredADComputers += $computer | select -Property DistinguishedName, Name
            
            }

        }

        $filteredADComputers | ft

    }
    
}

function Get-ADGPOReport {

    [CmdletBinding()]
    param (

        [Parameter(Mandatory = $true)]
        [String[]] $ComputerName
    )  

    $remoteScript = @(

        try {

            $logFile = "C:\Temp\gpo_output.xml"
            New-Item -Path $logFile -ItemType File -Force | Out-Null

            gpresult /X $logFile /F

            [xml]$report = Get-Content -Path $logFile
            Remove-Item -Path $logFile -Force

            return $report.Rsop.ComputerResults.GPO | select -Property Name, Enabled, `
                IsValid, FilterAllowed, AccessDenied, SecurityFilter
            
        } catch {

            $_.Exception.Message

        }

    )

    $response = Send-RemoteScript -ComputerName $ComputerName -RemoteScript $remoteScript
    $response | % { $_ | sort -Property Server -Descending | ft }

}