-
Notifications
You must be signed in to change notification settings - Fork 58
/
Copy pathУдаление профиля (и записи в реестре).ps1
57 lines (43 loc) · 5.22 KB
/
Удаление профиля (и записи в реестре).ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#Проверяем наличие активных подключений к ActiveDirectory и при необходимости создаем новое
If ( (Get-Module -Name activedirectory) -ne $null ) {} Else {"ActiveDirectory module was not loaded. Loading AD...";Import-Module activedirectory;"ActiveDirectory module loaded."}
$Server = "b000223"
Write-Host "Выполнение скрипта..." -ForegroundColor DarkGreen
$Login = Read-Host "Логин пользователя"
$UserGuid = $null
$UserGuid = (Get-ADUser $Login).ObjectGuid
If ($UserGuid -eq $null) {
Write-Host $Login" - Такого пользователя не существует" -ForegroundColor DarkBlue
Write-Host "Выполнение скрипта завершено" -ForegroundColor DarkGreen
return
}
Else {Write-Host $Login" - Guid: "$UserGuid -ForegroundColor DarkBlue}
$UserGuid = "{"+$UserGuid+"}"
$Date = Get-Date
$DestinationPath = "\\"+$Server+"\c$\users\"+$Login
$NewFolderName = "1_"+$Login+"_"+$Date.TimeOfDay.Ticks
If (Test-Path $DestinationPath) {Rename-Item $DestinationPath $NewFolderName; "Папка "+$DestinationPath+" переименована"}
#Имя удаленного сервера
$ServerName = $Server
#Подключение к удаленному реестру
$ServerKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine, $ServerName)
#$ServerKey | Get-Member
#Удаление записи пользователя в "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\"
$key = $ServerKey.OpenSubkey("SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\",$false)
$key.GetSubKeyNames() | ForEach-Object {
#Путь в реестре к текущему профилю
$FindProfileList = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\"+$_
$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey(‘LocalMachine’, $ServerName)
#Получение ключей для текущего профиля
$key_ = $reg.OpenSubKey($FindProfileList)
$ProfileGuid = $key_.GetValue('Guid')
If ($ProfileGuid -eq $UserGuid) {$reg.DeleteSubKeyTree($FindProfileList); "Удаление записи в реестре (ProfileList) на "+$Servers[$i]+" для "+$Login}
}
#Удаление записи пользователя в "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileGuid\"
$key = $ServerKey.OpenSubkey("SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileGuid\",$false)
$key.GetSubKeyNames() | ForEach-Object {
#Путь в реестре к текущему профилю
$FindProfileList = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileGuid\"+$_
$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey(‘LocalMachine’, $ServerName)
If ($_ -eq $UserGuid) {$reg.DeleteSubKeyTree($FindProfileList); "Удаление записи в реестре (ProfileGuid) на "+$Servers[$i]+" для "+$Login}
}
Write-Host "Выполнение скрипта завершено" -ForegroundColor DarkGreen