Listen von Computern in AD via Powershell
Hallo zusammen,
Ich versuche via Powershell einen Export zu generieren in dem die aktuellen, mit dem Active Directory verknüpften Computer enthalten sind.
Leider scheitere ich daran das der Befehl "get-ADComputer" nur nach erneutem Ausführen des Scripts erfolgreich verarbeitet wird.
Hier erstmal mein Code:
Die Verbindung zum Domain Controller geht durch aber bei dem "get-ADComputer" Befehl kommt folgender Fehler:
"get-ADComputer : Die Benennung "get-ADComputer" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die
Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang."
Sobald ich aber den Befehl anschließend nochmal in die PS von Hand eingebe kann er die AD abfragen und ich erhalte den gewünschten Output.
Ich habe schon mehrere Sachen probiert Auslagerung in ein zweites Script hat jedoch alles nichts geholfen.
Ich hoffe Ihr könnt mir weiterhelfen vielen Dank im Vorraus
Ich versuche via Powershell einen Export zu generieren in dem die aktuellen, mit dem Active Directory verknüpften Computer enthalten sind.
Leider scheitere ich daran das der Befehl "get-ADComputer" nur nach erneutem Ausführen des Scripts erfolgreich verarbeitet wird.
Hier erstmal mein Code:
#Variablendefinition Anmeldeinformationen
$password = ConvertTo-SecureString "Passwort" -AsPlainText -Force
$cred= New-Object System.Management.Automation.PSCredential ("Benutzername", $password )
#Anmeldung am Domain-Contoller
Enter-PSSession -computerName IP-ADRESSE -Credential $cred
#Befehl zum Abrufen von Computern innerhalb der AD
get-ADComputer -filter *
Die Verbindung zum Domain Controller geht durch aber bei dem "get-ADComputer" Befehl kommt folgender Fehler:
"get-ADComputer : Die Benennung "get-ADComputer" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die
Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang."
Sobald ich aber den Befehl anschließend nochmal in die PS von Hand eingebe kann er die AD abfragen und ich erhalte den gewünschten Output.
Ich habe schon mehrere Sachen probiert Auslagerung in ein zweites Script hat jedoch alles nichts geholfen.
Ich hoffe Ihr könnt mir weiterhelfen vielen Dank im Vorraus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 3289257789
Url: https://administrator.de/contentid/3289257789
Ausgedruckt am: 22.11.2024 um 08:11 Uhr
5 Kommentare
Neuester Kommentar
Du kannst Get-ADComputer auch auf deinem PC ausführen, ohne dich (edit: am Domönencontroller) anzumelden. Jeder Nutzer darf das. Du brauchst dafür das entsprechende RSAT-Modul für Active Directory. Das installierst du mit :
Get-WindowsCapability -Online -Name "Rsat.ActiveDirectory*" | Add-Windowscapability
Servus @Krasz1000,
das von dir verwendete Enter-PSSession ist eigentlich nur für die interaktive Anwendung gedacht, nicht für die Automatisierung. Dafür gibt es andere CMDLets wie Invoke-Command, New-PSSession, Import-PSSession & Co.
Neben dem vom @chaot1coz angesprochenen Methode der lokalen Installation führen viele weitere Wege nach ROM, wie z.B.
oder auch
Man muss hier aber beachten wie man den Computer angibt (IP oder FQDN), so dass man nicht in die Second-Hopp-Kerberos Falle tappt
https://serverfault.com/questions/203123/unable-able-to-run-remote-power ...
oder man importiert das Modul in die lokale Session
Übrigens, das AD abfragen geht auch gänzlich ohne die Verwendung des AD-Moduls rein mit Bordmitteln recht kompakt, wenn sich der Rechner mit in der Domäne befindet
Ist der aktuelle Computer dagegen nicht in der Domäne, sind noch ein paar mehr Angaben nötig
Vorteil hierbei, es ist keine offene Ports für PSRemoting mehr nötig und alles läuft über LDAP(s) (für die Verwendung von LDAPs den Server mit FQDN! und LDAPs Port angeben =>
Abfragen lassen sich dann damit auch sämtliche AD Objekte auf die der User Zugriff hat, mittels LDAP Query hat man hier freie Hand.
So nun solltest du für deine Aufgabe gut gerüstet sein
Grüße Uwe
das von dir verwendete Enter-PSSession ist eigentlich nur für die interaktive Anwendung gedacht, nicht für die Automatisierung. Dafür gibt es andere CMDLets wie Invoke-Command, New-PSSession, Import-PSSession & Co.
Neben dem vom @chaot1coz angesprochenen Methode der lokalen Installation führen viele weitere Wege nach ROM, wie z.B.
# credentials
$cred = new-Object PSCredential('username',(ConvertTo-SecureString 'Password' -AsPlainText -Force))
# invoke command in remote session
Invoke-Command -ComputerName "SERVERNAME" -Credential $cred -ScriptBlock {
Import-Module ActiveDirectory
Get-ADComputer -Filter *
}
# credentials
$cred = new-Object PSCredential('username',(ConvertTo-SecureString 'Password' -AsPlainText -Force))
# create new session to remote system
$session = New-PSSession -ComputerName "SERVERNAME" -Credential $cred
# invoke command in remote session
Invoke-Command -Session $session -ScriptBlock {
Import-Module ActiveDirectory
Get-ADComputer -Filter *
}
https://serverfault.com/questions/203123/unable-able-to-run-remote-power ...
oder man importiert das Modul in die lokale Session
# credentials
$cred = new-Object PSCredential('username',(ConvertTo-SecureString 'Password' -AsPlainText -Force))
# create new session to remote system
$session = New-PSSession -ComputerName "SERVERNAME" -Credential $cred
# import specific module from remote session into local session
Import-PSSession $session -Module ActiveDirectory
# now you call the AD cmdlets in the local session
Get-ADComputer -Filter *
Übrigens, das AD abfragen geht auch gänzlich ohne die Verwendung des AD-Moduls rein mit Bordmitteln recht kompakt, wenn sich der Rechner mit in der Domäne befindet
[adsisearcher]::new('objectClass=computer','*').findAll()
$server = "server.domain.tld"
$username = "user@domain.tld"
$password = "Geheim"
$searchfilter = "objectClass=computer"
$startNode = "dc=domain,dc=tld"
[adsisearcher]::new([adsi]::new("LDAP://$server/$startNode",$username,$password),$searchfilter,"*").findAll()
$server = "server.domain.tld:636"
).Abfragen lassen sich dann damit auch sämtliche AD Objekte auf die der User Zugriff hat, mittels LDAP Query hat man hier freie Hand.
So nun solltest du für deine Aufgabe gut gerüstet sein
Grüße Uwe