середа, 6 лютого 2019 р.

Перемещение и отключение неактивных компьютеров. (PowerShell Move-ADObject Disable-ADAccount)

Перемещение и отключение неактивных компьютеров. (PowerShell move-adobject Disable-ADAccount)



1) Поиск мертвых компьютеров, на которые не логинилсись более года. По маске рабочих станций например "WKS". Ищем на разных контроллерах домена, для сравнения:


Connect-QADService -Service 'DC1.corp.local'
$date_with_offset= (Get-Date).AddDays(-360)
Get-ADComputer -Properties LastLogonDate -Filter {LastLogonDate -lt $date_with_offset -and Name -Like "*wks*" 
-and enabled -eq $true} | Sort LastLogonDate | FT Name -AutoSize | Out-File C:\posh\inactive_DC1.txt

Connect-QADService -Service 'DC2.corp.local'
$date_with_offset= (Get-Date).AddDays(-360)
Get-ADComputer -Properties LastLogonDate -Filter {LastLogonDate -lt $date_with_offset -and Name -Like "*wks*" 

-and enabled -eq $true} | Sort LastLogonDate | FT Name  -AutoSize | Out-File C:\posh\inactive_dc2.txt

2) Удаляем пробелы из текстового файла:

Get-Content C:\posh\inactive_DC1.txt | foreach-object {$_ -replace " "} > C:\posh\inactive_DC1_____.txt

3)  Перемещаем объекты:


$PCs = gc "C:\posh\inactive_DC1_____.txt"
$TargetOU = "OU=Disable_Workstations,DC=corp,DC=local"
foreach ($PC in $PCs) {
Get-ADComputer -Identity $PC | Move-ADObject -TargetPath $TargetOU
}

4) Проверяем еще раз OU=Disable_Workstations, отключаем станции:


$PCs = gc "C:\posh\inactive_DC1_____.txt"
$TargetOU = "OU=Disable_Workstations,DC=corp,DC=local"
foreach ($PC in $PCs) {
Get-ADComputer -Identity $PC | Disable-ADAccount
}

Чтобы работала оснастка QAD необходимо установить последний .NetFramework и скачать и установить active roles.
Почему скрипт не единым целым массивом? Есть необходимость контролировать каждый шаг. 


Следующие сообщения Предыдущие сообщения Главная страница