Posted On May 26, 2020

PowerShell: Get Users and Computers Inside an OU

kimconnect 0 comments
blog.KimConnect.com >> Windows >> PowerShell: Get Users and Computers Inside an OU
# getUsersAndComputersInActiveDirectory.ps1

$ouName="Test OU"
$ouPath = "ou=$ouName,dc=kimconnect,dc=yoyo"
$csvExportFile = 'c:\data\users_in_ou_$ouName.csv'

$users=Get-ADUser -Filter * -SearchBase $ouPath | Select-object Name,UserPrincipalName,DistinguishedName
#$computers=get-adcomputer -filter * -searchbase $ouPath | select-object Name,@{Name='Container';Expression={DistinguishedName}}
$computers=get-adcomputer -filter * -searchbase $ouPath | select-object Name,DistinguishedName
get-wmiobject win32_operatingsystem -cn $ouName

# Export results as a CSV file
$users|Export-Csv -NoType $csvExportFile
# List Windows Machines by Operating System Versions Inside a Specific OU
$windowsComputers=(Get-ADComputer -searchbase $ouPath -properties * -filter "OperatingSystem  -like 'Windows*' ").name

function convertWindowsBuildToName($number){
    $osName=switch ($number){
            18363{'Windows 10 (1909)'}
            18362{'Windows 10 (1903)'}
            17763{'Windows 10 (1809)'}
            17134{'Windows 10 (1803)'}
            16299{'Windows 10 (1709)'}
            15063{'Windows 10 (1703)'}
            14393{'Windows 10 (1607)'}
            10586{'Windows 10 (1511)'}
            10240{'Windows 10'}
            9600{'Windows 8.1'}
            9200{'Windows 8'}
            7601{'Windows 7 SP1'}
            7600{'Windows 7'}
            6002{'Windows Vista SP2'}
            6001{'Windows Vista SP1'}
            6000{'Windows Vista'}
            3790{'Windows XP3'}
            2600{'Windows XP2'}
            2195{'Windows XP'}
            default{'Unknown'}
            }
    return $osName
}

$osVersions=Get-ADComputer -Filter "OperatingSystem -like 'Windows*'" -Properties OperatingSystemVersion | group OperatingSystemVersion | select Name,Count
$sortedOsVersions=$osVersions|Sort-Object @{e={ [int](.{[void]($_.Name -match "\((\d+)\)");return $matches[1]}) }}
$sortedOsVersions|%{$_.Name = .{            
             $number=[int](.{[void]($_.Name -match "\((\d+)\)");return $matches[1]});
             convertWindowsBuildToName $number
             }
             }
$sortedOsVersions

<# Sample Output
Name              Count
----              -----
Windows XP           99
Windows XP2          99
Windows XP3          99
Windows Vista SP2     9
Windows 7            99
Windows 7 SP1      9999
Windows 8            99
Windows 8.1         999
Windows 10            9
Windows 10 (1511)    99
Windows 10 (1607)    99
Windows 10 (1703)    99
Windows 10 (1709)    99
Windows 10 (1803)    99
Windows 10 (1809)   999
Windows 10 (1903)   999
Windows 10 (1909)  9999
#>

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Post

PowerShell: Add Accounts into Local Administrators Group

# addAccountToLocalAdmins.ps1# Requires: PowerShell Version 4.0+$accountToAdd='ServerAdmins'$groupName="Administrators"$servers=@( "CONCU1", 'CONCU2', 'CONCU100', 'CONCU80665', 'CONCU6547354', 'CONWHAT989', 'CONCU3')$servers|%{ $session=new-pssession $_…

Windows Firewall with Group Policy

This involves two steps: first, update your existing Group Policy Objects (GPOs) with the new…

PowerShell: Find Windows RDS Roles and Their Licensing Servers

# Get TS Licensing Servers (Enterprise or AD Registered) $termLicenseServers=Get-ADGroupMember -Identity "Terminal Server License Servers"…