Мы управляли Exchange 2010 с отдельного сервера Windows 2008 R2 и недавно обновили управляющую машину до Windows 2012 R2. EMC работает нормально, но я несколько ограничен в оболочке. Как только он удален на сервер CAS, он переходит на PS версии 2 (как и ожидалось), но тогда я больше не могу импортировать модуль ActiveDirectory в поле 2012, потому что он требует версии 3. Это плохо, потому что у меня есть несколько сценариев, которые используют AD в качестве а также модули обмена.
Возможно ли / поддерживается ли установка более старой версии RSAT в Windows 2012? Или хотя бы получить более старый модуль ActiveDirectory?
Я знаю, что это звучит как простой вопрос, на который Google ответит, но я не нахожу его. Думал, посмотрю, что вы знаете :-)
Редактировать:
Сообщение об ошибке находится внизу, но я считаю, что это бесполезно. Проблема, похоже, в том, что модулю нужна версия 3. Он успешно импортируется, если я запускаю powershell локально. Только когда я подключаюсь к серверу обмена (а он падает до версии 2), он отказывается загружаться.
PS C:\> cat (Get-Module -Name ActiveDirectory).Path | select -First 10
@{
GUID="{43c15630-959c-49e4-a977-758c5cc93408}"
Author="Microsoft Corporation"
CompanyName="Microsoft Corporation"
ModuleVersion="1.0.0.0"
PowerShellVersion="3.0"
CLRVersion="4.0"
Copyright="© Microsoft Corporation. All rights reserved."
NestedModules="Microsoft.ActiveDirectory.Management"
RequiredAssemblies="Microsoft.ActiveDirectory.Management"
Ошибка:
[PS] C:\>Import-Module ActiveDirectory
Import-Module : The 'C:\Windows\system32\WindowsPowerShell\v1.0\Modules\ActiveDirectory\ActiveDirectory.psd1'
module cannot be imported because its manifest contains one or more members
that are not valid. The valid manifest members are ('ModuleToProcess',
blah, blah, blah... 'CmdletsToExport'). Remove the members that are not
valid ('HelpInfoUri'), then try to import the module again.
At line:1 char:14
+ Import-Module <<<< ActiveDirectory
+ CategoryInfo : InvalidData:
(C:\Windows\syst...eDirectory.psd1:String) [Import-Module],
InvalidOperationException
+ FullyQualifiedErrorId : Modules_InvalidManifestMember,
Microsoft.PowerShell.Commands.ImportModuleCommand
Я не верю, что вы можете установить Windows 7/2008 R2 RSAT в 2012 году, но если вы используете учетную запись, которая имеет доступ к конечной точке на контроллере домена (или действительно на любом другом сервере с установленным управлением AD / RSAT) , и удаленное взаимодействие PowerShell включено, вы можете использовать неявное удаленное взаимодействие, чтобы перетащить эти командлеты в свой сеанс:
$SessionParameters = @{
ComputerName = <server with AD management tools installed>
Name = 'Microsoft.ActiveDirectory'
Authentication = 'Kerberos'
ErrorAction = 'Stop'
}
$Session = New-PSSession @SessionParameters
$InvokeProperties = @{
ScriptBlock = { $env:ADPS_LoadDefaultDrive = 0; Import-Module -Name 'ActiveDirectory' }
Session = $Session
ErrorAction = 'Stop'
}
Invoke-Command @InvokeProperties
$ImportProperties = @{
Session = $Session
Module = 'ActiveDirectory'
ErrorAction = 'Stop'
}
[void]Import-PSSession @ImportProperties
$Session
Вы можете сделать то же самое с Exchange, если хотите запускать сценарии с отдельного сервера без каких-либо установленных инструментов (и, следовательно, вы сможете управлять любой средой Exchange):
$SessionParameters = @{
ConnectionURI = "http://<Exchange server>/PowerShell"
ConfigurationName = 'Microsoft.Exchange'
Authentication = 'Kerberos'
ErrorAction = 'Stop'
}
$Session = New-PSSession @SessionParameters
$ImportParameters = @{
Session = $Session
ErrorAction = 'Stop'
}
[void]Import-PSSession @ImportParameters
$Session
Это также имеет дополнительное преимущество, заключающееся в том, что он не зависит от обновления Exchange для использования новой версии PowerShell (на ум приходит версия 3+ с Exchange 2010), но с тем недостатком, что все объекты, на которые ссылается неявное удаленное взаимодействие, десериализованы.