Powershell版本2中的DPM命令

时间:2015-07-23 05:13:58

标签: powershell dpm

我正在运行需要连接到DPM服务器的PowerShell脚本。

当我运行从DPM Manangement Shell运行Connect-DPMServer <DPM Server Name> cmdlet时,命令成功,我能够连接到服务器。

但是,当我在脚本中包含相同的命令并通过DPM Management 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

Get-DPMProtectionGroup等其他DPM cmdlet类似。

我在Windows Server 2008 R2上运行Powershell 2.0版。

这种奇特行为的原因是什么?我该如何解决这个问题?

修改

我做了一些观察。我的脚本有两部分:一个包装器脚本和一个帮助器脚本,它由包装器脚本作为一个独立的工作调用。

所有DPM命令都在包装器脚本中标识,但在作为作业运行时,它们不会在帮助程序脚本中标识。

为什么会出现这种情况的任何解释以及解决此问题的任何建议?

1 个答案:

答案 0 :(得分:1)

我找到了解决方案,现在是:

发生了什么 包装器脚本在DPM PowerShell中运行,然后作为单独的作业或线程调用帮助程序脚本。运行此帮助程序脚本的环境是Windows native powershell而不是DPM Powershell。因此,那里没有识别出DPM命令。

<强>解决方案 一旦调用帮助程序脚本,就需要导入DPM特定模块。步骤如下:

  1. 右键单击DPM Management Shell图标并查看属性。
  2. 选择Target的值。对我来说,它看起来像C:\Windows\system32\windowspowershell\v1.0\powershell.exe -noexit -File "D:\DPM\DPM\bin\dpmcliinitscript.ps1"
  3. -File参数"D:\DPM\DPM\bin\dpmcliinitscript.ps1"的值是导入Windows Powershell时将其转换为DPM管理控制台的文件。这意味着,它使用DPM命令加载shell。
  4. 通过dot-sourcing将此文件包含在帮助程序脚本中。这意味着,帮助程序脚本的第一行应如下所示:."D:\DPM\DPM\bin\dpmcliinitscript.ps1"

    这将有助于调用的shell识别特定于DPM的命令。