Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Управление компьютерами в AD ч. 2

Ответить
Настройки темы
PowerShell - Управление компьютерами в AD ч. 2

Аватара для Неадекват

Старожил


Сообщения: 470
Благодарности: 36

Профиль | Отправить PM | Цитировать


Изменения
Автор: Неадекват
Дата: 28-11-2014
Приветствую экспертов!
В моем предыдущем топике (http://forum.oszone.net/thread-280959.html) я спрашивал о том как получить компы, которые удовлетворяют определенным условиям и получил варианты решения.
Теперь же встала другая задача. Требуется компы, которые нашлись по скрипту ниже, переместить в другой контейнер в домене и еще деактивировать (отключить учетную запись).
Код: Выделить весь код
$wcdate = "{0:yyyMMddHHmmss}.Z" -f (Get-Date).AddDays(-28)
$lldate = (Get-Date).AddDays(-28).ToFileTime()
Get-ADComputer -Filter "whenChanged -lt '$wcdate' -and lastlogondate -lt '$lldate' -and OperatingSystem -notlike '*Server*'" -Properties Name, IPv4Address, whenchanged, operatingsystem, lastlogondate, canonicalname, OperatingSystemServicePack | Out-GridView
Я порылся в инете и нашел примеры как перемещать (пример ниже)...
Код: Выделить весь код
get-adcomputer win7-c1 | Move-ADObject -TargetPath 'ou=charlotte,dc=iammred,dc=net'
...и как отключать (скрипт ниже)
Код: Выделить весь код
$then = (Get-Date).AddDays(-60) # The 60 is the number of days from today since the last logon.
Get-ADComputer -Property Name,lastLogonDate -Filter {lastLogonDate -lt $then} | Set-ADComputer -Enabled $false
Но у меня не хватает опыта и ума их объединить. Я так понимаю, что надо как-то синтаксически правильно связать. Кто поможет с этим?

Отправлено: 11:20, 28-11-2014

 

Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


В фильтр с like distinguishedname нельзя использовать.

Код: Выделить весь код
Get-ADUser ... | Where {$_.distinguishedname -notlike '*srv*'} | Out-GridView
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:56, 28-11-2014 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Неадекват

Старожил


Сообщения: 470
Благодарности: 36

Профиль | Отправить PM | Цитировать


Kazun, спасибо, теперь все работает.

Отправлено: 14:47, 28-11-2014 | #12


Аватара для Неадекват

Старожил


Сообщения: 470
Благодарности: 36

Профиль | Отправить PM | Цитировать



Приветствую снова экспертов. Помогите, пожалуйста, с корректировкой кода
Код: Выделить весь код
$wcdate = "{0:yyyMMddHHmmss}.Z" -f (Get-Date).AddDays(-31)
$lldate = (Get-Date).AddDays(-31).ToFileTime()
Get-ADComputer -Filter "whenChanged -lt '$wcdate' -and lastlogondate -lt '$lldate' -and OperatingSystem -notlike '*Server*'" | Where {$_.distinguishedname -notlike '*srv*'} | Set-ADComputer -Enabled $false -PassThru | Move-ADObject -TargetPath 'ou=Inactive_Computers,dc=domain,dc=ru' -PassThru | Out-GridView
Хочу добавить туда еще такую команду: Where {$_.distinguishedname -notlike '*Inactive_Computers*'}, но не знаю как ее синтаксически объединить с предыдущей чтобы оба условия выполнялись по логическому AND.

Отправлено: 08:31, 04-12-2014 | #13


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Заменить Where {$_.distinguishedname -notlike '*srv*'} на :
Код: Выделить весь код
Where {$_.distinguishedname -notlike '*srv*' -or $_.distinguishedname -notlike '*Inactive_Computers*'}
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:24, 04-12-2014 | #14


Аватара для Неадекват

Старожил


Сообщения: 470
Благодарности: 36

Профиль | Отправить PM | Цитировать


Kazun, спасибо, протестирую.

Отправлено: 09:36, 04-12-2014 | #15


Аватара для Неадекват

Старожил


Сообщения: 470
Благодарности: 36

Профиль | Отправить PM | Цитировать


После редактирования и запуска сценария стало все еще хуже и непонятней. Запускаю сценарий:
Код: Выделить весь код
$wcdate = "{0:yyyMMddHHmmss}.Z" -f (Get-Date).AddDays(-31)
$lldate = (Get-Date).AddDays(-31).ToFileTime()
Get-ADComputer -Filter "whenChanged -lt '$wcdate' -and lastlogondate -lt '$lldate' -and OperatingSystem -notlike '*Server*'" | Where {$_.distinguishedname -notlike '*srv*' -and $_.distinguishedname -notlike '*Inactive_Computers*' -and $_.ProtectedFromAccidentalDeletion -eq $false} | Set-ADComputer -Enabled $false -PassThru | Move-ADObject -TargetPath 'ou=Inactive_Computers,dc=domain,dc=ru' -PassThru | Out-GridView
И сценарий ничего не выдает. Ни ошибок ни уведомлений. В чем может быть проблема?

Отправлено: 10:48, 04-12-2014 | #16


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Get-ADComputer ..... -Properties ProtectedFromAccidentalDeletion

Отправлено: 11:08, 04-12-2014 | #17


Аватара для Неадекват

Старожил


Сообщения: 470
Благодарности: 36

Профиль | Отправить PM | Цитировать


Kazun, Я не очень понял ваше сообщение. Мне надо эту строку добавить в конце или в ней ошибка или я неправильно что-то написал?

Суть в том, чтобы скрипт не трогал объекты, защищенные от удаления. Если убрать это требование, то скрипт запинается и останавливает свою работу на таких объектах.

Отправлено: 11:18, 04-12-2014 | #18


Аватара для Неадекват

Старожил


Сообщения: 470
Благодарности: 36

Профиль | Отправить PM | Цитировать


Попробовал в скрипте убрать перенос чтобы он просто вывел машины-кандидаты, но все равно не работает.

Отправлено: 14:22, 04-12-2014 | #19


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Я иногда в замешательстве, что добавление -Properties ProtectedFromAccidentalDeletion может вызвать такие проблемы:

Код: Выделить весь код
Get-ADComputer -Filter "whenChanged -lt '$wcdate' -and lastlogondate -lt '$lldate' -and OperatingSystem -notlike '*Server*'" -Properties ProtectedFromAccidentalDeletion

Отправлено: 14:44, 04-12-2014 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Управление компьютерами в AD ч. 2

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - Управление компьютерами в AD Неадекват Скриптовые языки администрирования Windows 13 19-08-2022 19:37
2008 R2 - Управление печатью и AD KATOCHIMOTO Windows Server 2008/2008 R2 5 30-10-2012 16:56
2008 - управление компьютером через AD невозможно nik_petrov Windows Server 2008/2008 R2 3 23-10-2012 13:37
2008 R2 - Управление учетными записями пользователей в AD Temafet Windows Server 2008/2008 R2 3 23-01-2012 16:14
Юзерское управление своей учётной записью в AD Samsonov Microsoft Windows NT/2000/2003 4 07-08-2007 11:20




 
Переход