Mit diesem Powershellscript liest man die an die AD-Computer angeschlossene Drucker aus.
Dazu werden erst alle Active-Directory Computer mit „Get-ADComputer -filter *“ ausgelesen und an „Get-Printer“ übergeben. Als Ergebnis gibt es eine CSV Datei.
das Script um verbundene Drucker per Powershell auszulesen
$ad_computer=Get-ADComputer -filter *
$csv_delimiter=";"
$csv_file="c:\temp\ad_printer.csv"
$skip_computers=@("Time") #list of skipped computernames
$dataset="ComputerName;PrinterName;Shared;Published`r`n"
foreach($computer in $ad_computer.DNSHostName){
if (Test-Connection -ComputerName $computer -count 1 -Quiet){
$skip_computer=0
foreach($searchcrit in $skip_computers){
$checkresult=$computer -match $searchcrit
if($checkresult){$skip_computer=1}
}
if($skip_computer -eq 0){
write-host "- get printers from " $computer
$printer_result=Get-Printer -ComputerName $computer
foreach($printer in $printer_result){
$dataset+=$printer.ComputerName+$csv_delimiter+$printer.Name+$csv_delimiter+$printer.shared+$csv_delimiter+$printer.Published+"`r`n"
}
}else{
write-host "- skipped: " $computer
}
}else{
write-host "- not pingable: "$computer
}
}
$dataset | set-content $csv_file
Oneliner
Wenn mir das so anschaue könnte man darauf auch eine Oneliner machen wie folgt. Allerdings ist dann die Ausgabe nicht so schön und es wird nicht vorher geprüft, ob der Active-Directory Computer erreichbar ist oder nicht. Hat eben alles seine Vor – und Nachteile.
Get-ADComputer -filter * | Get-Printer | export-csv