Mit dem ActiveDirectory-Modul kann man nun die Gruppenmitglieder einer Gruppe rekursiv auflisten:
if (-not(Get-Module-NameActiveDirectory)) {import-moduleActiveDirectory}
Get-ADGroupMember-IdentityGruppe-Recursive|ftname,sid-AutoSize
Mit dem ActiveDirectory-Modul kann man nun die Gruppenmitglieder einer Gruppe rekursiv auflisten:
if (-not(Get-Module-NameActiveDirectory)) {import-moduleActiveDirectory}
Get-ADGroupMember-IdentityGruppe-Recursive|ftname,sid-AutoSize
Mit der Substring-Option kann man Strings bearbeiten, um zum Beispiel von einem Dateinamen die Erweiterung abzuschneiden:
$Server ist mit dem Wert: RootDC01.log definiert. Durch das folgende Snippet wird die Erweiterung .log abgeschnitten. Substring besteht aus Startzeichen, Endzeichen und Anzahl der abzuschneidenden Zeichen (-4)
$server.Substring(0,$server.Length –4)
Mit folgendem Code-Snippet wird geprüft, ob ein Ordner existiert. Ist der Ordner nicht vorhanden, wird er erstellt. Existiert der Ordner „ausgabe“ nicht im aktuellen Ordern, wird er angelegt.
if ((Test-Path .\ausgabe) -ne $True) {New-Item .\ausgabe -type directory}
Mit folgendem Powershell-Skript – das per Taskplaner gestartet werden kann, werden Dateien in einem Ordner gelöscht, die älter als 10 Stunden sind:
$now = get-date
cd ‚<Ordner>‚
get-childitem * |
where-object {$_.LastWriteTime -le $now.AddHours(-10)} |
remove-item
Mit folgendem kleinen PowerShell-Skript kann man Computerkonten basierend auf dem Betriebssystem (Informationen im AD) in verschiedene Gruppen stecken:
import-module ActiveDirectory
$WinXP = „WinXP-Computer“
$Win7 = „Win7-Computer“
#Empty Groups
Get-ADGroupMember -Identity $Win7 | Remove-ADPrincipalGroupMembership -memberof $Win7 -Confirm:$false
Get-ADGroupMember -Identity $WinXP | Remove-ADPrincipalGroupMembership -memberof $WinXP -Confirm:$false
#Add Win7-Computer
$Win7Computers = get-adcomputer -filter {OperatingSystem -Like „Windows 7*“}
foreach ($Computer in $Win7Computers)
{
Add-ADGroupMember -Identity $Win7 -member $Computer
}
#Add WinXP-Computer
$WinXPComputers = get-adcomputer -filter {OperatingSystem -Like „Windows XP*“}
foreach ($Computer in $WinXPComputers)
{
Add-ADGroupMember -Identity $WinXP -member $Computer
}
In dem Skript werden die beiden Gruppen zuerst geleert und anschließend die Konten (XP oder Windows7) hinzugefügt. Die Suche erfolgt über die komplette Domäne. Die Abfrage kann wahlweise auch auf eine einzelne OU angewendet werden.
Mit dem folgenden PowerShell-Skript werden alle GPOs einer Domäne als HTML-File (incl. Links) dokumentiert. Voraussetzung ist das GroupPolicy-Modul (Server 2008 R2/Win7) für die PowerShell
import-Module GroupPolicy
$targetDomain='<Domänenname>'
Get-GPO -All|foreach `
{
$name=$_.DisplayName
Get-GPOReport $_.id -ReportType HTML -Domain $targetDomain -Path c:\GPO-Report\$name.html
}
… oder aber bei mehreren Domänen in der Gesamtstruktur:
Import-Module GroupPolicy
foreach ($Domain in (Get-ADForest).Domains)
{
get-gpo -All -Domain $Domain | foreach {$name=$_.displayname;Get-GPOReport $_.id -ReportType HTML-Domain $Domain -Path C:\GPO-Report\$domain-$name.html}
}
Mit der PowerShell unter Windows 7 (und Server 2008 R2) kann man sehr einfach einen Datenträger nach bestimmten Dateien durchsuchen, und diese Dateien anschließend in einen separaten Ordner verschieben.
Dazu kann man folgenden Befehl verwenden:
Get-ChildItem -Recurse -Include *.mp3 | select fullname | Copy-Item -Path {$_.Fullname} c:\musik
Dieser Befehl listet alle Dateien mit der Endund „*.mp3“ im aktuellen Verzeichnis und allen Unterverzeichnissen auf. All diese Dateien werden dann in den Ordner C:\musik kopiert. Dabei wird nicht geprüft, ob die Datei bereits vorhanden ist. Dies könnte man über Parameter des Cmdlets „Copy-Item“ abfangen.