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
Please also mark the comments that contributed to the solution of the article
Content-Key: 488919
Url: https://administrator.de/contentid/488919
Printed on: April 27, 2024 at 02:04 o'clock
2 Comments
Latest comment
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