2

このスクリプトを使用して、リモートサーバーにマップされたディスクがあるかどうかを確認します。コマンドラインで実行すると完全に機能します。PowerGUIとISEからは完全に機能しますが、Windowsタスクスケジューラで実行すると、メールメッセージが表示されます(スクリプトのメール送信部分は含まれていません)。そのディスクは含まれていません。マップ済み-ディスクがマップされているにもかかわらず、「else」が実行されます。

if(Invoke-Command -ComputerName sdebt -ScriptBlock { Get-WmiObject win32_logicaldisk -ComputerName sdebt -Filter "DeviceID = 'L:'"}) {
        Write-Host -ForegroundColor Green "L: is OK"} else {
                Write-Host -ForegroundColor Magenta "L: is NOT OK" 
                $subject = "CHYBA: Disk L is not mapped"
                $body += "Disk L is not mapped `r" }

ありがとうございました。

4

1 に答える 1

2

おそらく権限に関連しています。

  • コマンドライン/ISE/ PowerGUIから実行する場合は、資格情報を使用しています

  • デフォルトでスケジュールタスクから実行する場合は、システムクレデンシャルを使用して実行します

もし私があなただったら、私はこうします:

  1. クレデンシャルを使用して実行してみて、これが違いを生むかどうかを確認してください。
  2. 最高の特権で実行してみてください

1)と2)の後でも失敗する場合は、少なくとも許可の問題ではないことを確認してください:-)

于 2012-09-19T10:15:49.380 に答える