Използване на PowerShell Active Directory без инсталиране на RSAT

В предишна статия показахме как да използвате командлета Set-ADComputer в скрипт за влизане, за да съхранявате информация за текущия потребител в свойствата на всеки компютър в AD. Един от коментаторите съвсем основателно отбеляза, че в този случай ще трябва да инсталирате RSAT с модула Active Directory for Windows PowerShell на компютрите на всички потребители, което е доста трудоемко. Реших да се опитам да разбера дали Използвайте PS модул за 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 \ Модули.

След това от директорията C: \ Windows \ WinSxS копирайте файловете:

  • Microsoft.ActiveDirectory.Management.dll
  • Microsoft.ActiveDirectory.Management.resources.dll
Тези библиотеки могат да бъдат намерени чрез търсене в директорията WinSxS. В моя пример за Windows Server 2012 R2 пълният път изглеждаше така:

"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 MB) на компютър, който няма RSAT AD за Windows PowerShell модул. В този пример използвам компютър с Windows 10.

Нека се опитаме да импортираме копирания модул Active Directory в текущата сесия на PowerShell:

Импорт-модул "C: \ PS \ ADPoSh \ Microsoft.ActiveDirectory.Management.dll"

Импорт-модул "C: \ PS \ ADPoSh \ Microsoft.ActiveDirectory.Management.resources.dll"

Модулът е успешно импортиран, сега можете да използвате командлети от AD модула за управление и извличане на информация от AD домейна (например get-aduser, get-adcomputer, get-adgroup и т.н.).

Когато възникне грешка “Не може да се свърже със сървъра. Това може да се дължи на това, че този сървър не съществува, той в момента не работи или не работи Active Directory Web Services'трябва да проверите дали Web Directory Active Directory (ADWS) на най-близкия контролер на домейни е стартиран и TCP порт 9389 не е блокиран от защитна стена.

Можете да намерите в DC домейна с ролята на ADWS с командата:

Вземете-ADDomainController -Разкрийте -Услуга "ADWS"

Можете да проверите наличността на услугата с командлета Test-NetConnection:

tnc MSK-DC01 -порт 9389

За да стартирате командлети на конкретен DC, трябва да използвате параметъра -Server:

Get-aduser aaivanov -server msk-dc01.winitpro.ru

Можете да използвате командлетите на AD модула, докато не затворите сесията PowerShell. Модулни файлове можете да копирате файлове на всички компютри в домейна чрез GPO,