2016-01-04 6 views
-2

Я написал сценарий PowerShell, приложение, которое позволяет PC Refresh установить Company, DepartmentNumber и т. Д. На объект AD. В развитии все работает отлично. Очевидно, что у меня установлен AD на моей машине. Я скомпилировал мое приложение в .exe и поместил его в общий сетевой ресурс, где техники будут выполнять его оттуда, когда они запустили новый компьютер или обновили его с Windows 7 до Windows 10 в основном.Модуль Active Directory

Проблема в том, что на новом ПК не будет установлен Active Directory в данный момент времени. Мне нужно найти способ включить приложение, импортировать и запустить Active Directory, как при запуске новых или обновленных компьютеров. Как это сделать?

Ниже приведен некоторый код, который я использую для импорта модуля, если он существует на машине.

$RestoreForm_Load = { 
    # Load the ActiveDirectory module if it's available 
    # Check if the ActiveDirectory module is installed 
    if ((Get-Module -ListAvailable | where { $_.Name -eq 'ActiveDirectory' }) -eq $null) { 
    $labelDialogRedRestore.Text += "You need to install the ActiveDirectory module!`n" 
    } else { 
    # Check if the ActiveDirectory module is allready Imported 
    if ((Get-Module ActiveDirectory) -eq $null) { 
     Import-Module ActiveDirectory -ErrorAction 'SilentlyContinue' 
     $labelDialogGreenRestore.Text += "ActiveDirectory module imported`n" 
    } else { 
     $labelDialogGreenRestore.Text += "ActiveDirectory allready imported`n" 
    } 
    } 
+0

Это всего лишь модуль, и я попробовал, что предложил, и он не работает. Точно так же, как тест, я размещаю его так: я получаю следующую ошибку: ERROR: термин «Add-WindowsFeature» не распознается как имя командлета, функции, файла сценария или исполняемой программы. Проверьте правильность написания имени или если включен параметр pa ERROR: th, проверьте правильность пути и повторите попытку. – Irwin

+0

$ No_Load = { \t Add-WindowsFeature нетто-каркасного ядро ​​ \t Add-WindowsFeature RSAT-AD-PowerShell \t \t # Загрузите модуль ActiveDirectory, если он доступен \t # Проверка, если модуль ActiveDirectory установлен \t, если ((Get-Module -ListAvailable | где {. $ _ Name -eq 'ActiveDirectory'}) $ -eq нуль) \t { \t \t $ labelDialogRedNewNo.Text + = "! Вам необходимо установить модуль ActiveDirectory' п" \t} – Irwin

+0

Теперь я получаю t его ERROR: Import-Module: указанный модуль «ServerManager» не был загружен, потому что в любом каталоге модулей не было найдено допустимого файла модуля. – Irwin

ответ

1

Вы можете установить модуль в сценарии с помощью следующей команды:

Add-WindowsFeature RSAT-AD-PowerShell 

Обратите внимание, что эта функция требует функции .NET Framework 3.5.1, которые тоже можно установить с помощью следующей команды:

Add-WindowsFeature net-framework-core 
+0

Является ли это только модулем PowerShell ActiveDirectory, а не самим AD-Feautre? Если так - thx, не знал, что – SimonS

+0

@SimonS это определенно не сама AD-функция, так как rsat означает средства удаленного администрирования сервера, я не уверен на 100%, что его ТОЛЬКО модуль AD, но AD в имени делает я довольно уверен;) – Paul

+0

'Add-WindowsFeature' доступен только на серверных версиях и только до Windows Server 2008 R2. –

2

только версия Windows Server имеет модуль AD, или любую другую часть RSAT (Средства удаленного администрирования сервера) по этому вопросу, доступный для установки из коробки. Вы можете использовать Add-WindowsFeature (или Install-WindowsFeature, который заменил бывший в ОС Windows 2012 и новее) для установки модуля на сервере:

Import-Module ServerManager 

$os = (Get-WmiObject Win32_OperatingSystem).Caption 
switch -wildcard ($os) { 
    'Windwos Server 2008*' { 
    Add-WindowsFeature RSAT-AD-PowerShell -IncludeAllSubFeatures 
    } 
    'Windows Server 2012*' { 
    Install-WindowsFeature RSAT-AD-PowerShell -IncludeAllSubFeatures 
    } 
} 

клиент для Windows версии не поставляются с RSAT. Прежде чем устанавливать командлеты AD PowerShell, необходимо установить correct RSAT package. Однако список ссылок в статье KB немного устарел. Ссылка для пакета обновления 1010 для Windows 10 больше не работает. Here - ссылка для скачивания для версии.

После установки обновления на клиентах, вы можете установить модуль, например через dism:

dism /Online /Enable-Feature /FeatureName:RemoteServerAdministrationTools-Roles-AD-Powershell 

Обратите внимание, что (по крайней мере, на версии клиента) имя функции может отличаться от версии (функция называется RemoteServerAdministrationTools-Roles-AD-Powershell в Windows 7 RSAT, но RSATClient-Roles-AD-Powershell в Windows 10 RSAT), так что вам, возможно, придется использовать switch заявление на клиентах, а также:

$os = (Get-WmiObject Win32_OperatingSystem).Caption 
$name = switch -wildcard ($os) { 
    'Windows 7*' { 'RemoteServerAdministrationTools-Roles-AD-Powershell' } 
    'Windows 8*' { '???' } 
    'Windows 10*' { 'RSATClient-Roles-AD-Powershell' } 
} 

& dism /Online /Enable-Feature /FeatureName:$name 

Кроме того, б что независимо от того, в какой системе вы устанавливаете модуль на сервере (сервере или клиенте), должен установить .NET framework 3.5.1 или 4.5, иначе модуль не будет работать (если вы даже можете установить его в первый место).

0

Хотя вы можете установить Active Directory на этих машинах только для запуска своего кода, я бы предложил настроить сеанс на компьютер, который уже установил его. Если Techs работают и имеют учетные данные для доступа к AD, это будет работать лучше.

$Session = New-PSSession -ComputerName DC -Credential (Get-Credential) -Name AD 
Enter-PSSession -Session $Session 
Import-Module ActiveDirectory 
Doing-AD -Stuff 
... 
Disconnect-PSSession 

С этим подходом Tech будет предложено ввести свои учетные данные, скрипт будет работать ваш AD вещи, и клиентская машина не будет иметь RSAT инструментов включены или установлены.

Смежные вопросы