在 ISE 中和从 CMD 提示符处运行 PowerShell 脚本时,我遇到了行为差异。
该脚本的目的是检查 Microsoft 的 DPM(数据保护管理)服务的活动警报。如果发现超过 12 小时的内容,则会在“DPM 警报”事件日志中记录错误。
我在 ISE 中开发了脚本,它似乎运行良好。所以我将它添加到Scheduled tasks,它没有做我想要的。我最终剥离了测试警报年龄的逻辑,因此我所做的只是尝试获取当前活动警报的列表。
$serverName = "my_server_name"
$dpmServer = Connect-DPMServer $serverName
$dpmServer.AlertController.RefreshAlerts()
$activeAlerts = $dpmServer.AlertController.ActiveAlerts
if (!$activeAlerts) {"no active alerts found"}
else {$activeAlerts}
我正在通过 PSConsoleFile 加载 DPM 管理单元。我从 CMD 执行的命令如下所示:
powershell -psconsole .\DPMConsoleFile.psc1 -file .\DPMAlertChecker.ps1�
�</p>
我知道管理单元正在正确加载,因为如果我包含仅显示 $dpmServer 对象的行,它将显示正确的信息。
如果我从 PowerShell ISE(或 DPM 命令行管理程序)运行它,它会正常工作并显示活动警报列表(如果有)。如果我使用上述语法从命令行运行它,它就不起作用。具体来说,它不会从$dpmServer.alertcenter.activealerts
命令返回任何警报。
有什么区别?