В одной из предыдущих статей мы показывали, как использовать командлет Set-ADComputer в логон-скрипте для сохранения информации о текущем пользователе в свойствах каждого компьютера в AD. Один из комментаторов вполне резонно отметил, что в таком случае придется устанавливать RSAT с модулем Active Directory for Windows PowerShell на компьютеры всех пользователей, что довольно трудоемко. Я решил попробовать разобраться, можно ли использовать командлеты модуля PS Module for AD без его установки на компьютеры пользователей. И у меня получилось!
Итак, допустим у нас имеется сервер с Windows Server 2012 R2, на котором установлен RSAT и модуль RSAT-AD-PowerShell. Наша задача, скопировать файлы модуля RSAT-AD-PowerShell на рабочую станцию и попробовать импортировать их для запуска различных командлетов модуля AD. В качестве рабочей станции я специально использую Windows 10 LTSC (основана на 1809), чтобы показать, что старые версия модуля RSAT-AD-PowerShell поддерживаются в более новых ОС.
Сначала скопируем все необходимые файлы модуля AD с Windows Server 2012 R2. Создайте папку C:\PS\ADPoSh и скопируйте в нее содержимое каталога C:\Windows\System32\WindowsPowerShell\v1.0\Modules.
Затем из каталога C:\Windows\WinSxS скопируйте файлы:
- Microsoft.ActiveDirectory.Management.dll
- Microsoft.ActiveDirectory.Management.resources.dll
"C:\Windows\WinSxS\amd64_microsoft.activedirectory.management_31bf3856ad364e35_6.3.9600.16503_none_09aa35cd49da6068\Microsoft.ActiveDirectory.Management.dll"
И
"C:\Windows\WinSxS\amd64_microsoft.activedir..anagement.resources_31bf3856ad364e35_6.3.9600.16384_en-us_efefcf68718a71bc\Microsoft.ActiveDirectory.Management.resources.dll"
Теперь скопируйте каталог C:\PS\ADPoSh (в моем случае его размер составил около 1,3 Мб), на компьютер, на котором отсутствует модуль RSAT AD for Windows PowerShell. В этом примере я использую компьютер с Windows 10.
Попробуем импортировать скопированный модуль Active Directory в текущую PowerShell сессию:
Import-Module "C:\PS\ADPoSh\Microsoft.ActiveDirectory.Management.dll"
Import-Module "C:\PS\ADPoSh\Microsoft.ActiveDirectory.Management.resources.dll"
Модуль успешно импортирован, теперь вы можете использовать любые командлеты модуля AD для управления и получения информации из домена AD (например get-aduser, get-adcomputer, get-adgroup и т.д.).
Вы можете найти в домене DC с ролью ADWS с помощью команды:
Get-ADDomainController -Discover -Service «ADWS»
Доступность службы можно проверить с помощью командлета Test-NetConnection:
tnc MSK-DC01 -port 9389
Чтобы выполняить командлеты на конкретном DC, нужно использовать параметр –Server:
Get-aduser aaivanov –server msk-dc01.winitpro.ru
Вы можете использовать командлеты модуля AD пока не закроете сессию PowerShell. Файлы модуля можно скопировать файлы на все компьютеры в домене через GPO,
Доброго времени суток,
Наверное не из папки modules , а немного глубже C:\Windows\System32\WindowsPowerShell\v1.0\Modules\ActiveDirectory
Вылетает ошибка :
Не удалось загрузить файл или сборку «file:///C:\PS\ADPoSh\Microsoft.ActiveDirectory.Management.dll» либо одну из зависимостей. Ожидалось, что модуль содержит манифест сборки.
Файлы брались с 2012R2 с установленными инструментами администрирования AD (из коробки, не отдельный пакет RSAT)
Выведите список файлов в вашем каталоге ADPoSh:
ls C:\ps\ADPoSh\
Каталог: C:\ps\ADPoSh
Mode LastWriteTime Length Name
—- ————- —— —-
d—- 21.08.2019 16:13 en-US
-a— 29.02.2016 12:51 5191 ActiveDirectory.Format.ps1xml
-a— 29.02.2016 12:51 10738 ActiveDirectory.psd1
-a— 29.02.2016 12:51 9334 ActiveDirectory.Types.ps1xml
-a— 29.02.2016 12:51 32768 ActiveDirectoryPowerShellResources.dll
-a— 16.07.2016 16:29 292364 Microsoft.ActiveDirectory.Management.dll
-a— 12.09.2016 14:39 17304 Microsoft.ActiveDirectory.Management.resources.dll
У вас размер файла Microsoft.ActiveDirectory.Management.dll очень маленький. У меня порядка 1.1 Мб.
Скорее всего не тот файл скопировали. Поищите лучге по WS2012R2 поиском.
Да дело в файле. Взял для теста установил features PS module for AD на 2008R2 и скопировал с него файлы. На Win10 запустилось , а вот на win7 SP1 пишет — «Сборка создана в более поздней версии среды выполнения чем текущая, и не может быть загружена»
Версия posh разная? Тогда наверно надо ставить adposh из rsat на w7 и использовать на десктопах
Get-aduser выполняется но не выдаёт информации, кроме основной.
То есть, команда
get-aduser -Filter * -Properties mobilePhone, mail, officephone
не даст подробных сведений. Думал, что дело в доступе доменного пользователя к атрибутам AD, но нет — запустив на ПК админа PoSh из под учётки доменного пользователя, получил полную информацию, и, запустив PoSh на ПК пользователя из под учётки доменного админа, ничего не получил.
Следовательно, каких-то модулей для корректной работы всё же хватает.
Согласен. Не выдергивает все атрибуты, которые есть у объекта 🙁
Да, к сожалению есть такая бага — как победить не знаю.
Поэтому более внимательно приходится использовать только основные атрибуты в скриптах.
А почему бы не использовать
Get-ADUser -Properties * | select mobilePhone, mail, officephone
Bazalt, вы сами не понимаете что пишете. *facepalm.jpg*
Получилось с изменениями, а именно:
1. Все файлы поместил не в корневую директорию (C:\PS…), а в C:\Windows\System32\WindowsPowerShell\v1.0\Modules\ActiveDirectory
2. Import-Module «C:\Windows\System32\WindowsPowerShell\v1.0\Modules\ActiveDirectory\Microsoft.ActiveDirectory.Management.dll»
При установке из C:\PS была ошибка:
Import-Module : Не удалось загрузить файл или сборку «file:///C:\PS\ADPoSh\Microsoft.ActiveDirectory.Management.dll»
либо одну из их зависимостей. Ожидалось, что модуль содержит манифест сборки.
строка:1 знак:1
+ Import-Module «C:\PS\ADPoSh\Microsoft.ActiveDirectory.Management.dll»
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Import-Module], BadImageFormatException
+ FullyQualifiedErrorId : System.BadImageFormatException,Microsoft.PowerShell.Commands.ImportModuleCommand
Подтверждаю,
1. Копируешь оригинальную директорию ActiveDirectory из C:\Windows\System32\WindowsPowerShell\v1.0\Modules\
2. Копируешь файлы (с максимальным размером, найденных в директории WinSxS):
— Microsoft.ActiveDirectory.Management.dll
— Microsoft.ActiveDirectory.Management.resources.dll
в скопированную директорию ActiveDirectory
3. Копируешь подготовленную директорию ActiveDirectory в C:\Windows\System32\WindowsPowerShell\v1.0\Modules\ на комп без RSAT
4. Запускаешь запрос без подключения модулей:
— Import-Module «C:\….\Microsoft.ActiveDirectory.Management.dll»
— Import-Module «C:\…..\Microsoft.ActiveDirectory.Management.resources.dll»
Спасибо огромное! Поднять бы это в статью для тех, кто до комментов не доходит.
Спасибо!
Я так загрузил модуль AD в WinPE для использования в скриптах при различве образа через MDT