ISE で PowerShell スクリプトを実行する場合と CMD プロンプトから実行する場合の動作の違いを経験しています。
このスクリプトの目的は、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
具体的には、コマンドからアラートを返しません。
違いはなんですか?