So in an attempt to quickly extract OS version and Service Pack for a few machines in an environment the idea was presented to pull the data from active directory. The properties exist so the logic seemed sound; and as we’ve discussed this before it’s a pretty easy task with the active directory module in PowerShell, and here’s the code:
$list = gc computers.txt
Import-Module ActiveDirectory
ForEach($item in $list){
$ado = (get-adcomputer $item -Properties *)
$pso = New-Object PSObject
$pso | Add-Member -Name "Computer Name" -MemberType NoteProperty `
-Value $ado.CN
$pso | Add-Member -Name "Operating System" -MemberType NoteProperty `
-Value $ado.OperatingSystem
$pso | Add-Member -Name "Service Pack" -MemberType NoteProperty `
-Value $ado.OperatingSystemServicePack
$pso
}
Assuming for the sake of example the name of this script is, get-adservicepack.ps1, and you’ve got your computers.txt file with your computer names in it then we’d run it like this.
./get-adservicepack.ps1 | export-csv -NoTypeInformation MyAdOutput.csv
So what’s happening?
First, we’re taking the get-content command to pull data from a local text file “computers.txt” into a data object and then iterating through it sequentially. We are then using the computer name as the lookup name with the get-adcomputer cmdlet along with all it’s ad properties and assign it to a variable called ado.
Now we create a PowerShell object and begin to give it some noteproperties with values pulled from our ad object we created from the ad cmdlet then echo it’s contents out by calling it.
When we run the script and pipe it’s output to export-csv –NoTypeInformation we are taking that output and putting it directly into a csv without any of the object information, otherwise it’s a tabled console output.
PowerShell is so boss sometimes…
Maybe we just do all this in one line?
gc computers.txt|ForEach-object{Get-ADComputer $_ -properties *|select -Property name,operatingsystem,operatingsystemservicepack}|export-csv -notypeinformation output.csv
Scroll that line, like a boss.
Gallery entry on Script Center if you want to rate it