Управление компьютерами в AD ч. 2
Приветствую экспертов! :bow:
В моем предыдущем топике (http://forum.oszone.net/thread-280959.html) я спрашивал о том как получить компы, которые удовлетворяют определенным условиям и получил варианты решения. Теперь же встала другая задача. Требуется компы, которые нашлись по скрипту ниже, переместить в другой контейнер в домене и еще деактивировать (отключить учетную запись). Код:
$wcdate = "{0:yyyMMddHHmmss}.Z" -f (Get-Date).AddDays(-28) Код:
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. |
Код:
$wcdate = "{0:yyyMMddHHmmss}.Z" -f (Get-Date).AddDays(-28) |
Kazun, спасибо, буду пробовать.
|
|
Неадекват, попутный вопрос - а можно как-то еще в конце получить вывод в gridview того, что он переместил и отключил? Или там просто надо добавить out-gridview?
Iska, да, я не то слово написал, пардон. Не группа, а контейнер, конечно же. |
Заменить Move-ADObject -TargetPath 'ou=charlotte,dc=iammred,dc=net' на:
Код:
Move-ADObject -TargetPath 'ou=charlotte,dc=iammred,dc=net' -PassThru | Out-GridView |
Kazun, спасибо, теперь буду тестировать.
|
Поменял скрипт немного и он перестал работать. Я где-то ошибся, но не пойму где именно.
$wcdate = "{0:yyyMMddHHmmss}.Z" -f (Get-Date).AddDays(-372) $lldate = (Get-Date).AddDays(-372).ToFileTime() Get-ADComputer -Filter "whenChanged -lt '$wcdate' -and lastlogondate -lt '$lldate' -and OperatingSystem -notlike '*Server*' -and CanonicalName -notlike '*srv*'" -Properties Name, IPv4Address, whenchanged, operatingsystem, lastlogondate, canonicalname, OperatingSystemServicePack | Out-GridView |
CanonicalName -notlike '*srv*'" -Нельзя использовать, поэтому удалить.
|
Kazun, я подозревал что-то подобное... А почему нельзя и как тогда мне сделать фильтр по имени контейнера? Использовать distinguished name можно?
|
В фильтр с like distinguishedname нельзя использовать.
Код:
Get-ADUser ... | Where {$_.distinguishedname -notlike '*srv*'} | Out-GridView |
Kazun, спасибо, теперь все работает.
|
:bow:
Приветствую снова экспертов. Помогите, пожалуйста, с корректировкой кода Код:
$wcdate = "{0:yyyMMddHHmmss}.Z" -f (Get-Date).AddDays(-31) |
Заменить Where {$_.distinguishedname -notlike '*srv*'} на :
Код:
Where {$_.distinguishedname -notlike '*srv*' -or $_.distinguishedname -notlike '*Inactive_Computers*'} |
Kazun, спасибо, протестирую.
|
После редактирования и запуска сценария стало все еще хуже и непонятней. Запускаю сценарий:
Код:
$wcdate = "{0:yyyMMddHHmmss}.Z" -f (Get-Date).AddDays(-31) |
Get-ADComputer ..... -Properties ProtectedFromAccidentalDeletion
|
Kazun, Я не очень понял ваше сообщение. Мне надо эту строку добавить в конце или в ней ошибка или я неправильно что-то написал?
Суть в том, чтобы скрипт не трогал объекты, защищенные от удаления. Если убрать это требование, то скрипт запинается и останавливает свою работу на таких объектах. |
Попробовал в скрипте убрать перенос чтобы он просто вывел машины-кандидаты, но все равно не работает.
|
Я иногда в замешательстве, что добавление -Properties ProtectedFromAccidentalDeletion может вызвать такие проблемы:
Код:
Get-ADComputer -Filter "whenChanged -lt '$wcdate' -and lastlogondate -lt '$lldate' -and OperatingSystem -notlike '*Server*'" -Properties ProtectedFromAccidentalDeletion |
Kazun, тысяча извинений, но я действительно не понял сперва ваше сообщение. Потом гугл мне подсказал и я понял что надо сделать.
|
А теперь другая проблема - как заставить сценарий игнорировать ошибки? Я дописал в конце команду, которую нагуглил...
Код:
-PassThru -ea Continue | Out-GridView |
Цитата:
Скрытый текст
Цитата:
|
Iska, гм... Ну ладно, с появлением ошибок понятно. Но почему последний командлет не выполняется и ничего такого ISE не говорит - вот это мне непонятно.
|
Время: 12:29. |
Время: 12:29.
© OSzone.net 2001-