Kategorien
Powershell

Rekursive Auflistung der Mitglieder einer Gruppe

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

Kategorien
Powershell

Formatieren von Strings

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)

Kategorien
Powershell

Prüfen, ob ein Ordner existiert

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}

Kategorien
Powershell

Powershell-Skript um Dateien zu löschen

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

Kategorien
Powershell

Computer in OS-Gruppen aufnehmen

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.

Kategorien
Powershell

Report aller GPOs

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} 
}

 

Kategorien
Powershell

Suchen und Kopieren von Dateien per PowerShell

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.