PowerShell Newbi und Get-ADComputer

Gelöscht

Ensign
Registriert
Nov. 2010
Beiträge
234
Moin Moin

Zurzeit versuche ich mich an Powershell und bleibe da als nicht Skripter echt auf der Strecke..
Versuche zurzeit mit Get-ADComputer mir eine Liste ausspucken zu lassen, welches mir alle Computer die sich in den letzten 365 Tagen mit aktiven Computerkonten und dazugehörige OU in der AD angemeldet haben anzeigt.

Bisher habe ich den benutzt leider bekomme ich noch nicht gnaz das richtige Ergebnis.
Get-ADComputer -Filter * -Properties * | Sort LastLogon | Select Name, LastLogonDate,@{Name='LastLogon';
Expression={[DateTime]::FromFileTime($_.LastLogon)}} | Export-Csv C:\temp\adcomputers-last-logon.csv -NoTypeInformation

Hoffe mir kann da wer unter die Arme greifen. :)
 
Wenn ich das richtig sehe, wirst du nur den Namen und Abmeldezeitpunkt haben. Nicht nur die der letzten 365 Tage und auch nicht die entsprechende OU?

Ist es das was du vermisst?
 
Das hat ChatGPT ausgespuckt:
PowerShell:
Get-ADComputer -Filter {LastLogonDate -ge (Get-Date).AddDays(-365)} -Properties LastLogonDate, DistinguishedName | Select-Object Name, @{n='OU';e={(Get-ADObject $_.DistinguishedName).DistinguishedName -replace '^CN=.*?,OU='}}
Ich glaub das Forum kann dann zu machen :D
 
  • Gefällt mir
Reaktionen: Poink und rsfb
kartoffelpü schrieb:
Was bedeutet denn für dich "nicht ganz richtig" genau?

E: den Befehl hast du scheinbar von dort? https://shellgeek.com/get-adcomputer-last-logon/
Ja genau, den habe ich von da und auch selbst versucht den Befehl zu variieren..

sikarr schrieb:
Das hat ChatGPT ausgespuckt:
PowerShell:
Get-ADComputer -Filter {LastLogonDate -ge (Get-Date).AddDays(-365)} -Properties LastLogonDate, DistinguishedName | Select-Object Name, @{n='OU';e={(Get-ADObject $_.DistinguishedName).DistinguishedName -replace '^CN=.*?,OU='}}
Ich glaub das Forum kann dann zu machen :D
Da bekomm ich nur :
Get-ADComputer : Fehler beim Analysieren der Abfrage: "LastLogonDate -ge (Get-Date).AddDays(-365)" Fehlermeldung: "syntax error" an folgender Position: "19".
In Zeile:1 Zeichen:1
  • Get-ADComputer -Filter {LastLogonDate -ge (Get-Date).AddDays(-365)} - ...
  • ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ParserError: (:) [Get-ADComputer], ADFilterParsingException
+ FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADFilterParsingException,Microsoft.ActiveDirectory.Management.Commands.GetADComputer

Aber ChatGPT ist n gutes Stichwort! ;P
 
Gelöscht schrieb:
Da bekomm ich nur :
Hab es mal nach einer anderen Möglichkeit befragt, das kam zurück.
PowerShell:
Get-ADComputer -Filter {Enabled -eq $true -and LastLogonDate -gt (Get-Date).AddDays(-365)} | Select-Object Name, DistinguishedName
Ergänzung ()

OK, klappt auch nicht, dachte das kriegt es hin :D
 
Zuletzt bearbeitet:
Hab auch schon einige durch, also Powershell will er irgendwie garnicht ;D
Wäre ja wirklich mehr als zu einfach haha
 
Gelöscht schrieb:
Wäre ja wirklich mehr als zu einfach haha
So ganz Falsch war es nicht, ich habe das korrigiert und das sollte das sein was du wolltest:
PowerShell:
Get-ADComputer -Filter {Enabled -eq $true} -Properties * | Where-Object {$_.LastLogonDate -gt ((Get-Date).AddDays(-365))} | select Name, DistinguishedName | Export-Csv C:\temp\adcomputers-last-logon.csv -NoTypeInformation
 
Je nach der Größe der Umgebung sollte man schon vorher filtern, damit der Rückgabewert nicht zu groß wird. @sikarr 's lösung sieht aber auf den ersten Blick gut aus.
 
Also etwas ausgespuckt hat mir der Befehl, sieht auf dem ersten Blick auch gut aus.
Selber hatte ich dankChatGPT folgendes Skript bekommen :

Get-ADComputer -Filter * -Properties * | Sort LastLogon |
Where-Object {[DateTime]::FromFileTime($_.LastLogon) -ge (Get-Date).AddDays(-365)} |
Select Name, LastLogonDate,@{Name='LastLogon';Expression={[DateTime]::FromFileTime($_.LastLogon)}} |
Export-Csv C:\temp\adcomputers-last-logon.csv -NoTypeInformation

Bei der Größe reden wir von ~1600 Geräte, die mir dann die 2 Befehle jeweils raushauen
 
Gelöscht schrieb:
Also etwas ausgespuckt hat mir der Befehl, sieht auf dem ersten Blick auch gut aus.
Selber hatte ich dankChatGPT folgendes Skript bekommen :

Get-ADComputer -Filter * -Properties * | Sort LastLogon |
Where-Object {[DateTime]::FromFileTime($_.LastLogon) -ge (Get-Date).AddDays(-365)} |
Select Name, LastLogonDate,@{Name='LastLogon';Expression={[DateTime]::FromFileTime($_.LastLogon)}} |
Export-Csv C:\temp\adcomputers-last-logon.csv -NoTypeInformation

Bei der Größe reden wir von ~1600 Geräte, die mir dann die 2 Befehle jeweils raushauen
An der Stelle nur der Hinweis auf die Ergebnisgröße. Das Stichwort ist: ResultSetSize

Ich bin mir gerade nicht sicher wie es sich beim CSV Export verhält. Ich bin da aber schonmal auf unvollständige Ergebnisse gekommen, da es im Standard ein Limit der zurückgegebenen Objekte gibt.

Wenn das alles so passt ist es ja in Ordnung.
 
  • Gefällt mir
Reaktionen: sikarr
Zurück
Oben