2012-10-31 46 views
14

我有下面的代碼,通過並獲取計劃的任務信息,並將屏幕上發生的輸出到日誌文件。start-Transcript不會捕獲所有輸出到日誌文件..?

但是,我注意到所有的錯誤都記錄了,除了有「訪問被拒絕」的服務器之外 - 我怎樣才能在日誌文件中記錄這些錯誤。

下面是代碼:

Start-Transcript -path $scheduledpath\logging.txt -append 

foreach ($name in $names) 
{ 
    Write-Host "Running Against Server $name" -ForegroundColor Magenta 
    if (Test-Connection -ComputerName $name -Count 1 -ErrorAction SilentlyContinue) 
     { 
      #$Command = "schtasks.exe /query /S $name /fo CSV /v >c:\tools\Scheduled\$name.csv" 
      $Command = "schtasks.exe /query /S $name /fo CSV /v >$scheduledpath\$name.csv" 
      Invoke-Expression $Command 
      Clear-Variable Command -ErrorAction SilentlyContinue 
     } 

    else{ 
      Write-Host "$name is Down" -ForegroundColor Red 
     } 

} 

Stop-Transcript 

這裏是屏幕上的輸出:

> Running Against Server SV064909 
> SV064909 is Down 
> Running Against Server SV081372 
> SV081372 is Down 
> Running Against Server YBEF008690_vorher_SV064930 
> YBEF008690_vorher_SV064930 is Down 
> Running Against Server Alt_SV064921 
> Alt_SV064921 is Down 
> Running Against Server SV073632 
> ERROR: Access is denied. 
> Running Against Server SV073633 
> ERROR: Access is denied. 

這裏是日誌文件輸出....沒有訪問被拒絕..所示。?

> Running Against Server SV064909 
> SV064909 is Down 
> Running Against Server SV081372 
> SV081372 is Down 
> Running Against Server YBEF008690_vorher_SV064930 
> YBEF008690_vorher_SV064930 is Down 
> Running Against Server Alt_SV064921 
> Alt_SV064921 is Down 
> Running Against Server SV073632 
> Running Against Server SV073633 

回答

13

這種行爲與本機命令的輸出沒有被記錄在啓動成績單輸出,但輸出到控制檯連接錯誤315857報道。查看可能解決方案的解決方法。

+0

aaahhhh .........有趣......感謝那... ...! – lara400

+7

現在鏈接被破壞,並帶有所有的解決方法:-( – kroimon

+2

[Resurrected link](http://web.archive.org/web/20130608164153/http://connect.microsoft.com/PowerShell/feedback/詳細信息/ 315875 /無法捕獲所有會話輸出到成績單) –

10

最簡單的解決方法是將管道中的本地命令來Out-Host

schtasks.exe /query /S $name /fo CSV /v >$scheduledpath\$name.csv | Out-Host 
+1

現在,管道爆裂了,您不能將輸出管道輸送到其他任何地方,這是這個最明顯的缺點 –

+0

我懷疑 (schtasks.exe/query/S $ name/fo CSV/v> $ scheduledpath \ $ name.csv | Out-Host) 會打開管道,儘管現在不處理錯誤。 –

1

啊的結果,正確的答案應該是:

$命令=「SchTasks.exe會/查詢/ S $名稱/ fo CSV/v 2> & 1> $ scheduledpath \ $ name.csv「

iee管道stderror(管道2)到標準輸出(管道1),這樣兩者都顯示在標準輸出中。

0

以上都不適合我。 我發現a link from 2009與討論的問題。但微軟blog from 2010解決了我的問題。

簡而言之,將本地命令輸出管道輸出到Out-Default。

schtasks.exe /query /S $name /fo CSV /v | Out-Default 

{我並沒有真正嘗試該行自己,但你的想法。}

0

獲取服務標籤

$servicetag = Get-WmiObject win32_bios | Select-Object -ExpandProperty SerialNumber 
    Write-output $servicetag 

我用寫輸出一行在頂部我的腳本, 之後,他們都是寫主機。但是每個「寫」輸出現在都顯示在我的腳本中。

相關問題