Powershell Script: In Forest nach Computernamen suchen
Hallo,
ich möchte per Powershell Script unseren Forest nach Computernamen durchsuchen.
Ich habe eine Excelliste mit den Computernamen und möchte diese Liste in Powershell einlesen und danach alle Domänen in dem Forest nach dem Namen durchsuchen.
Kenne mich leider nicht so mit Powershell aus.
Kann mir jemand helfen bzw. hat irgendwo noch ein Scrpit rumliegen, dass ich abändern kann.
Vielen Dank.
Grüße
Agilolfinger
ich möchte per Powershell Script unseren Forest nach Computernamen durchsuchen.
Ich habe eine Excelliste mit den Computernamen und möchte diese Liste in Powershell einlesen und danach alle Domänen in dem Forest nach dem Namen durchsuchen.
Kenne mich leider nicht so mit Powershell aus.
Kann mir jemand helfen bzw. hat irgendwo noch ein Scrpit rumliegen, dass ich abändern kann.
Vielen Dank.
Grüße
Agilolfinger
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 339523
Url: https://administrator.de/contentid/339523
Ausgedruckt am: 17.11.2024 um 17:11 Uhr
13 Kommentare
Neuester Kommentar
Servus,
Dann ist das der richtige Zeitpunkt daran was zu ändern.
Was brauchst du:
Import CSV: --> http://www.admin-source.de/BlogDeu/963/import-csv-workshop
Schleife: --> http://www.admin-source.de/BlogDeu/905/powershell-foreach-und-foreach-o ...
Abfrage des AD Objectes: --> https://www.windowspro.de/script/get-adcomputer-computer-ou-ad-gruppe-an ...
VG
Dann ist das der richtige Zeitpunkt daran was zu ändern.
Was brauchst du:
Import CSV: --> http://www.admin-source.de/BlogDeu/963/import-csv-workshop
Schleife: --> http://www.admin-source.de/BlogDeu/905/powershell-foreach-und-foreach-o ...
Abfrage des AD Objectes: --> https://www.windowspro.de/script/get-adcomputer-computer-ou-ad-gruppe-an ...
VG
Hi,
hier geklaut: https://social.technet.microsoft.com/Forums/windowsserver/en-US/57bfb665 ...
Gefunden über: Google
Erstellt Dir eine Liste alle Computer-Objekte im Forest:
E.
hier geklaut: https://social.technet.microsoft.com/Forums/windowsserver/en-US/57bfb665 ...
Gefunden über: Google
Erstellt Dir eine Liste alle Computer-Objekte im Forest:
$domains = (Get-ADForest).Domains
$data = @()
foreach ($domain in $domains)
{
$data += Get-ADComputer -Filter * -Server $domain -Properties Name | Select Name}
$data | export-csv c:\computerrecords.csv -NoType
E.
Servus,
erstell dir eine CSV-Datei
die bspw. so aussieht:
Dann kannst du so einen Vergleich zwischen Beiden durchführen
Compare stellt dann mit Symbolen dar <= / => wo die Unterschiede sind.
Bei dem Beispiel oben bedeutet => das der Name nur in der Liste existiert, und bei <= das der Computer existiert aber nicht in der Liste steht.
Gleiche Namen kannst du dir auch anzeigen lassen wenn du beim CMDLet compare noch dem Parameter -IncludeEqual hinzufügst.
Grüße Uwe
erstell dir eine CSV-Datei
die bspw. so aussieht:
Computername
COMP01
COMP02
COMP03
# Import der Liste
$liste = (Import-CSV 'D:\liste.csv' -Delimiter ";").Computername
# Alle Computernamen holen
$computers = (Get-ADForest).Domains | %{Get-ADComputer -Filter * -Server $_} | select -Expand Name
# Vergleich zischen Liste und existierenden Computernamen durchführen
compare $computers $liste
Bei dem Beispiel oben bedeutet => das der Name nur in der Liste existiert, und bei <= das der Computer existiert aber nicht in der Liste steht.
Gleiche Namen kannst du dir auch anzeigen lassen wenn du beim CMDLet compare noch dem Parameter -IncludeEqual hinzufügst.
Grüße Uwe
Zitat von @Agilolfinger:
Wie genau ist das Ergebnis dann zu interpretieren? Bzw. werden am Ende die Computernamen ausgespuckt, die vorhanden sind, oder nicht vorhanden sind?
Habe ich doch oben extra detailliert geschrieben. Der Side-Indicator zeigt dir wo ein Name alleine vorhanden ist. Im Beispiel werden nur Computer ausgegeben die entweder nur in der Liste oder nur im AD existieren. Die Ausgabe kannst du ja dann nach dem SideIndicator nach deinen Wünschen per where-object nach Gusto filtern.Wie genau ist das Ergebnis dann zu interpretieren? Bzw. werden am Ende die Computernamen ausgespuckt, die vorhanden sind, oder nicht vorhanden sind?
Hi,
<OT>
Was ist denn Powershell Scrpit? Kann man das essen?
</OT>
Gruß
<OT>
Was ist denn Powershell Scrpit? Kann man das essen?
</OT>
Gruß
Zitat von @Agilolfinger:
Kann ich das Ergebnis des Compares irgendwie als Datei ausgeben. Habe schon versucht den Compare an sich als Variable zu deklarieren und dann als Datei ausgeben. Hat aber nicht funktioniert
Ja einfach ein select hinterherKann ich das Ergebnis des Compares irgendwie als Datei ausgeben. Habe schon versucht den Compare an sich als Variable zu deklarieren und dann als Datei ausgeben. Hat aber nicht funktioniert
compare $computers $liste | select * | export-csv 'Ergebnis.csv' -Delimiter ";" -NoType -Encoding UTF8
Zitat von @Agilolfinger:
Jetzt ist mir nur noch aufgefallen, dass der ja (logischerweise) nur im aktuellen Forest sucht. Allerdings muss ich um die 15 Forests durchsuchen.
Die versuche ich jz mit eine Foreach schleife abzuarbeiten.
Bräuchte jetzt nur noch einen Befehl, mit dem ich den zu durchsuchenden Forest abändere.
Siehst du doch oben Get-ADForest ist dein Freund . Einfach eine zusätzliche Schleife "drüber legen".Jetzt ist mir nur noch aufgefallen, dass der ja (logischerweise) nur im aktuellen Forest sucht. Allerdings muss ich um die 15 Forests durchsuchen.
Die versuche ich jz mit eine Foreach schleife abzuarbeiten.
Bräuchte jetzt nur noch einen Befehl, mit dem ich den zu durchsuchenden Forest abändere.
"domA.de","domB.de","domB.de" | %{(Get-ADForest $_).Domains} | %{Get-AdComputer -Filter * -Server $_}
Zitat von @Agilolfinger:
Das funktioniert jetzt auch. Danke!
Jetzt bräuchte ich nur noch einen Befehl um bei dem Vergleich nur die Computer auszugeben, die in der Liste aber nicht im AD sind. Ansonsten zeigt er mir ja mehr als 10.000 Geräte an die alle nicht in der Liste sind. Dabei brauche ich die Prüfung nur andersherum, um zu schauen welche Computer nicht mehr existieren.
Weißt du da noch was?
Logisch, habe ich zwar oben schon geschrieben wie du das machst ... aber naja, dann halt nochmalDas funktioniert jetzt auch. Danke!
Jetzt bräuchte ich nur noch einen Befehl um bei dem Vergleich nur die Computer auszugeben, die in der Liste aber nicht im AD sind. Ansonsten zeigt er mir ja mehr als 10.000 Geräte an die alle nicht in der Liste sind. Dabei brauche ich die Prüfung nur andersherum, um zu schauen welche Computer nicht mehr existieren.
Weißt du da noch was?
compare $computers $liste | ?{$_.SideIndicator -eq "=>"} | select -Expand InputObject | sc 'NichtMehrImAD.txt'
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen, und Lösungen markieren. Merci.
Grüße Uwe