Powershell 版本 2 中的 DPM 命令
DPM Commands in Powershell Version 2
我正在运行正在运行一个需要连接到 DPM 服务器的 PowerShell 脚本。
当我 运行 运行 来自 DPM 管理 Shell 的 Connect-DPMServer <DPM Server Name>
cmdlet 时,命令成功并且我能够连接到服务器。
但是,当我在脚本中包含相同的命令并通过 DPM 管理 Shell 调用脚本时,出现以下错误:
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 cmdlet 的情况类似 Get-DPMProtectionGroup
。
我正在 运行在 Windows Server 2008 R2 上安装 Powershell 2.0 版。
这种奇怪行为的原因是什么?我该如何解决这个问题?
编辑
我做了一些观察。我的脚本有两部分:一个包装脚本和一个由包装脚本作为独立作业调用的帮助脚本。
所有 DPM 命令都在包装脚本中标识,但当它 运行 作为作业时,它们不会在帮助脚本中标识。
任何解释为什么会这样以及任何解决相同问题的建议?
我找到了解决方案,这里是:
发生了什么
包装脚本在 DPM PowerShell 中运行,然后调用帮助脚本作为单独的作业或线程。此帮助程序脚本运行的环境是 windows native powershell 而不是 DPM Powershell。因此 DPM 命令在那里没有被识别。
解决方案
调用帮助程序脚本后,需要立即导入 DPM 特定模块。步骤如下:
右键单击 DPM 管理 Shell 图标并查看属性。
Select 目标值。对我来说,它看起来像这样 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 命令加载 shell。
通过点源将此文件包含在帮助程序脚本中。这意味着,帮助脚本的第一行应该如下所示:."D:\DPM\DPM\bin\dpmcliinitscript.ps1"
这将有助于调用的 shell 识别 DPM 特定命令。
我正在运行正在运行一个需要连接到 DPM 服务器的 PowerShell 脚本。
当我 运行 运行 来自 DPM 管理 Shell 的 Connect-DPMServer <DPM Server Name>
cmdlet 时,命令成功并且我能够连接到服务器。
但是,当我在脚本中包含相同的命令并通过 DPM 管理 Shell 调用脚本时,出现以下错误:
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 cmdlet 的情况类似 Get-DPMProtectionGroup
。
我正在 运行在 Windows Server 2008 R2 上安装 Powershell 2.0 版。
这种奇怪行为的原因是什么?我该如何解决这个问题?
编辑
我做了一些观察。我的脚本有两部分:一个包装脚本和一个由包装脚本作为独立作业调用的帮助脚本。
所有 DPM 命令都在包装脚本中标识,但当它 运行 作为作业时,它们不会在帮助脚本中标识。
任何解释为什么会这样以及任何解决相同问题的建议?
我找到了解决方案,这里是:
发生了什么 包装脚本在 DPM PowerShell 中运行,然后调用帮助脚本作为单独的作业或线程。此帮助程序脚本运行的环境是 windows native powershell 而不是 DPM Powershell。因此 DPM 命令在那里没有被识别。
解决方案 调用帮助程序脚本后,需要立即导入 DPM 特定模块。步骤如下:
右键单击 DPM 管理 Shell 图标并查看属性。
Select 目标值。对我来说,它看起来像这样
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 命令加载 shell。通过点源将此文件包含在帮助程序脚本中。这意味着,帮助脚本的第一行应该如下所示:
."D:\DPM\DPM\bin\dpmcliinitscript.ps1"
这将有助于调用的 shell 识别 DPM 特定命令。