Changes for page Windows Server 2012 R2

Last modified by Sebastian Marsching on 2022/05/29 14:04

From version 2.1
edited by Sebastian Marsching
on 2022/05/29 12:36
Change comment: Uploaded new attachment "update_users.ps1", version {1}
To version 1.1
edited by Sebastian Marsching
on 2022/05/29 12:36
Change comment: Uploaded new attachment "export_users.ps1", version {1}

Summary

Details

update_users.ps1
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.SebastianMarsching
Size
... ... @@ -1,1 +1,0 @@
1 -1.8 KB
Content
... ... @@ -1,42 +1,0 @@
1 -Function Extract-Rid([byte[]] $sid) {
2 - $sid_length = $sid.Count
3 - $sid[$sid_length - 4] + 256 * $sid[$sid_length - 3] + 65536 * $sid[$sid_length - 2] + 16777216 * [uint32]$sid[$sid_length - 1]
4 -}
5 -
6 -Function Is-SystemUserSid([byte[]] $sid) {
7 - if (($sid.Count -eq 28) -and ($sid[0] -eq 1) -and ($sid[1] -eq 5) -and ($sid[7] -eq 5) -and ($sid[8] -eq 21)) {
8 - $rid = Extract-Rid($sid)
9 - ($rid -lt 1000)
10 - } else {
11 - $FALSE
12 - }
13 -}
14 -
15 -Function Is-SystemGroupSid([byte[]] $sid) {
16 - ($sid.Count -eq 16) -and ($sid[0] -eq 1) -and ($sid[1] -eq 2) -and ($sid[7] -eq 5) -and ($sid[8] -eq 32)
17 -}
18 -
19 -$users_and_groups = Import-Csv -Path "users_and_groups.txt" -Delimiter "`t" -Encoding UTF8
20 -$users = $users_and_groups | Where-Object { $_.Type -eq "user" } | foreach { $result = @{} } { $result[$_.RID.ToString()] = $_ } { $result }
21 -$groups = $users_and_groups | Where-Object { $_.Type -eq "group" } | foreach { $result = @{} } { $result[$_.RID.ToString()] = $_ } { $result }
22 -$computer = [ADSI] "WinNT://."
23 -$computer.Children.SchemaFilter.Clear()
24 -$computer.Children.SchemaFilter.AddRange(@("user", "group"))
25 -$computer.Children | foreach {
26 - $sid = $_.objectSid[0];
27 - $rid = (Extract-Rid($sid)).toString()
28 - if (Is-SystemUserSid($sid) -and $users.Contains($rid)) {
29 - $user = $users[$rid];
30 - Write-Host ("Updating user `"" + $_.Name.Value + "`" with new name `"" + $user.Name + "`" and description.")
31 - $_.Rename($user.Name)
32 - $_.Description = $user.Description
33 - $_.CommitChanges()
34 - } elseif (Is-SystemGroupSid($sid) -and $groups.Contains($rid)) {
35 - $group = $groups[$rid];
36 - Write-Host ("Updating group `"" + $_.Name.Value + "`" with new name `"" + $group.Name + "`" and description.")
37 - $_.Rename($group.Name)
38 - $_.Description = $group.Description
39 - $_.CommitChanges()
40 - }
41 - }
42 -