Команды DPM в Powershell версии 2
Я запускаю сценарий PowerShell, который требует подключения к серверу DPM.
Когда я бегу, беги Connect-DPMServer <DPM Server Name>
Командлет из командной консоли DPM, команда выполнена успешно, и я могу подключиться к серверу.
Однако когда я заключаю ту же команду в сценарий и вызываю сценарий через Командная консоль DPM, возникает следующая ошибка:
The term 'Connect-DPMServer' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
+ CategoryInfo : ObjectNotFound: (Connect-DPMServer:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Аналогично обстоит дело с другими командлетами DPM, такими как Get-DPMProtectionGroup
,
Я использую Powershell версии 2.0 на Windows Server 2008 R2.
В чем причина такого специфического поведения и как я могу обойти это?
редактировать
Есть некоторые наблюдения, которые я сделал. Мой сценарий состоит из двух частей: сценария оболочки и вспомогательного сценария, который вызывается сценарием оболочки как самостоятельное задание.
Все команды DPM определены в сценарии оболочки, но не определены в вспомогательном сценарии, когда он выполняется как задание.
Любое объяснение, почему это может быть и какие-либо предложения, чтобы решить то же самое?
1 ответ
Я разобрался с решением и вот оно:
Что происходит? Сценарий-оболочка выполняется в PowerShell DPM, а затем вызывает вспомогательный сценарий как отдельное задание или поток. Среда, в которой выполняется этот вспомогательный сценарий, - это Windows PowerShell, а не DPM Powershell. Следовательно, команды DPM там не определены.
Решение Специальные модули DPM необходимо импортировать сразу после вызова вспомогательного сценария. Шаги следующие:
- Щелкните правой кнопкой мыши значок командной консоли DPM и просмотрите свойства.
- Выберите значение Target. Для меня это выглядит так
C:\Windows\system32\windowspowershell\v1.0\powershell.exe -noexit -File "D:\DPM\DPM\bin\dpmcliinitscript.ps1"
- Значение параметра
-File
то есть"D:\DPM\DPM\bin\dpmcliinitscript.ps1"
это файл, который при импорте в Windows Powershell преобразует его в консоль управления DPM. Это означает, что он загружает оболочку с командами DPM. Включите этот файл в вспомогательный скрипт с помощью точечного поиска. Это означает, что первая строка вспомогательного скрипта должна выглядеть так:
."D:\DPM\DPM\bin\dpmcliinitscript.ps1"
Это поможет вызванной оболочке определить конкретные команды DPM.