UseraccountControl on Powershell Module
Hallo Zusammen
Versuche mich gerade an einem Script welches mir die verschiedenen Flags von UseraccountControl ausliest.
Ich denke, dass auslesen funktioniert, aber leider komm ich nicht weiter.
Ich hätte gern den Namen hinter der Zahl bei jedem User in einer Tabelle. Online habe ich bisher nix gefunden.
ist etwas zusammengewürfelt, aber ich bekomme leider keine Lösung hin.
Danke für alle die sich der Sache annehmen
Versuche mich gerade an einem Script welches mir die verschiedenen Flags von UseraccountControl ausliest.
Ich denke, dass auslesen funktioniert, aber leider komm ich nicht weiter.
Ich hätte gern den Namen hinter der Zahl bei jedem User in einer Tabelle. Online habe ich bisher nix gefunden.
$Flags = @{
1 = 'SCRIPT'
2 = 'ACCOUNTDISABLE'
8 = 'HOMEDIR_REQUIRED'
16 = 'LOCKOUT'
32 = 'PASSWD_NOTREQD'
128 = 'ENCRYPTED_TEXT_PWD_ALLOWED'
256 = 'TEMP_DUPLICATE_ACCOUNT'
512 = 'NORMAL_ACCOUNT'
2048 = 'INTERDOMAIN_TRUST_ACCOUNT'
4096 = 'WORKSTATION_TRUST_ACCOUNT'
8192 = 'SERVER_TRUST_ACCOUNT'
65536 = 'DONT_EXPIRE_PASSWORD'
131072 = 'MNS_LOGON_ACCOUNT'
262144 = 'SMARTCARD_REQUIRED'
524288 = 'TRUSTED_FOR_DELEGATION'
1048576 = 'NOT_DELEGATED'
2097152 = 'USE_DES_KEY_ONLY'
4194304 = 'DONT_REQ_PREAUTH'
8388608 = 'PASSWORD_EXPIRED'
16777216 = 'TRUSTED_TO_AUTH_FOR_DELEGATION'
67108864 = 'PARTIAL_SECRETS_ACCOUNT'
}
1ster Versuch:
Get-ADUser -Filter * -properties * | Format-Table Name,homeDirectory,HomeDrive,scriptPath,UserAccountControl,
@{Name="accountExpires";Expression={([datetime]::FromFileTime($_.accountExpires))}}
2ter Versuch
Import-Module ActiveDirectory
$users = Get-ADUser -SearchBase "OU" -filter * -property userAccountControl
ForEach($user in $users)
3ter Versuch
Get-ADUser $users -Properties * |
Select-Object employeeid, name, displayname, samaccountname, mail, PasswordExpired, @{N = "AccountExpires"; E = {[DateTime]::FromFileTime($_.AccountExpires)}}, @{N = "UserAccountControl";E = {$flags.Get_Item($_.UserAccountControl)}}
ist etwas zusammengewürfelt, aber ich bekomme leider keine Lösung hin.
Danke für alle die sich der Sache annehmen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 488919
Url: https://administrator.de/contentid/488919
Ausgedruckt am: 22.11.2024 um 03:11 Uhr
2 Kommentare
Neuester Kommentar
Dafür gibt's den Operator -band, der binär prüft ob ein Wert in einem anderen enthalten ist. Also einfache Calculated Property mit einer Schleife über die Flags, Fertig.
$Flags = @{
1 = 'SCRIPT'
2 = 'ACCOUNTDISABLE'
8 = 'HOMEDIR_REQUIRED'
16 = 'LOCKOUT'
32 = 'PASSWD_NOTREQD'
128 = 'ENCRYPTED_TEXT_PWD_ALLOWED'
256 = 'TEMP_DUPLICATE_ACCOUNT'
512 = 'NORMAL_ACCOUNT'
2048 = 'INTERDOMAIN_TRUST_ACCOUNT'
4096 = 'WORKSTATION_TRUST_ACCOUNT'
8192 = 'SERVER_TRUST_ACCOUNT'
65536 = 'DONT_EXPIRE_PASSWORD'
131072 = 'MNS_LOGON_ACCOUNT'
262144 = 'SMARTCARD_REQUIRED'
524288 = 'TRUSTED_FOR_DELEGATION'
1048576 = 'NOT_DELEGATED'
2097152 = 'USE_DES_KEY_ONLY'
4194304 = 'DONT_REQ_PREAUTH'
8388608 = 'PASSWORD_EXPIRED'
16777216 = 'TRUSTED_TO_AUTH_FOR_DELEGATION'
67108864 = 'PARTIAL_SECRETS_ACCOUNT'
}
Get-ADUser -Filter * -properties Name,homeDirectory,HomeDrive,scriptPath,UserAccountControl | select Name,homeDirectory,HomeDrive,scriptPath,@{n='Flags';e={$uac = $_.UserAccountControl;($flags.GetEnumerator() | ?{$uac -band $_.Key} | %{$_.Value}) -join ','}} | ft -AutoSize -Wrap