#Eingaben
$path = 'C:\users\User\test\' # DPXone: ich bevorzuge immer einfache Hochkommas ('), solange man nicht innerhalb des String irgendwelche Variablen auflösen möchte
$domain = 'domain.local' # DPXone: ich bevorzuge immer einfache Hochkommas ('), solange man nicht innerhalb des String irgendwelche Variablen auflösen möchte
#Ordnerinhalt erfassen
$inventory = Get-ChildItem -path $path -Directory #DPXone: Filter auf Directory
$all_created = @() #DPXone: Array deklarieren
Foreach ($line In $inventory) { #Vielleicht noch Filetype Directory angeben | DPXone: Filter ist bereits auf $inventory gesetzt
If ($line.name -notlike '*.v2') # DPXone: ich bevorzuge immer einfache Hochkommas ('), solange man nicht innerhalb des String irgendwelche Variablen auflösen möchte
{
$fullpath = join-path -Path $path -ChildPath "$($line.name).v2" #DPXone: eine bessere Lösung, wenn es um Erstellungen von Pfaden geht (fügt nämlich auch eventuell fehlende Backslashes (\) ein
# zudem kommen hier Anführungszeichen zum Einsatz + $() ... hab die Bezeichnug hierfür vergessen, aber dadurch wird $line.name aufgelöst
If (-not(Test-path $fullpath)) { #DPXone: Spart Zeilen
#Ordnername = Username in SID umwandeln
$SAMAccountName = $line.name
Try { #DPXone: Try/Catch. Falls Fehler auftreten werden Fehler in der Konsole angezeigt
$account = New-Object System.Security.Principal.NTAccount($domain , $SAMAccountName)
Try { #DPXone: Try/Catch. Falls Fehler auftreten werden Fehler in der Konsole angezeigt
$accountSid = $account.Translate([System.Security.Principal.SecurityIdentifier])
#Ordner erstellen
New-Item -ItemType Directory -Path $path$line.v2 -OutVariable created
#Besitzer ändern und Rechtevererbung deaktivieren.
Try { #DPXone: Try/Catch. Falls Fehler auftreten werden Fehler in der Konsole angezeigt
$acl = Get-Acl $created
$acl.SetOwner($accountSid)
$acl.SetAccessRuleProtection($true , $true)
Set-Acl -Path $created -AclObject $acl
$all_created += $created # DPXone: Durch die Deklaration als Array oben können nun einfach durch += Werte zur Variable hinzugefügt werden
} Catch {
write-host($_.Exception | Format-List -Force | out-string) -ForegroundColor red
write-host($_.toString() | Format-List -Force | out-string) -ForegroundColor red
}
} Catch {
write-host($_.Exception | Format-List -Force | out-string) -ForegroundColor red
write-host($_.toString() | Format-List -Force | out-string) -ForegroundColor red
}
} Catch {
write-host($_.Exception | Format-List -Force | out-string) -ForegroundColor red
write-host($_.toString() | Format-List -Force | out-string) -ForegroundColor red
}
}
}
}
#Ausgabe
Write-Host 'Erstellt wurden:' # DPXone: ich bevorzuge immer einfache Hochkommas ('), solange man nicht innerhalb des String irgendwelche Variablen auflösen möchte
Write-Host $all_created | Format-List *