2010-01-14 53 views
15

這是一個重複的https://serverfault.com/questions/102098/powershell-script-showing-commands-run。我認爲在這裏提出這個問題會更合適。PowerShell「echo on」

我在玩PowerShell腳本,他們工作得很好。但是,我想知道是否有任何方法可以顯示所有運行的命令,就像您手動輸入自己的命令一樣。這與批處理文件中的「echo on」類似。我查看了PowerShell命令行參數,cmdlet,但是我沒有發現任何明顯的東西。

+0

我是一名程序員,我喜歡PowerShell,但我認爲這是一個非編程問題,屬於ServerFault。 – 2010-01-16 20:31:21

回答

5

啓動成績單沒有捕獲任何exe文件輸出。這對我來說是一個阻礙。我討厭這樣說,但我發現要做到這一點的最佳方式是:

cmd /c powershell.exe -file c:\users\hillr\foo.ps1 > foo.log 

這會捕獲一切AFAICT。

+6

前些天看到了這個。 http://blogs.msdn.com/powershell/archive/2010/01/04/workaround-for-start-transcript-on-native-processes.aspx 不理想,但是如果你將exe輸出輸出到Out-Default ,它會被捕獲 – 2010-01-14 18:01:18

+1

問題是,你必須把它放在你的腳本上,無論你在哪裏調用EXE。如果您調用其他人的腳本調用EXE,則必須修改腳本。所以是的,並不理想。 :-) – 2010-01-14 18:12:12

+0

啊,安迪的鏈接可能解釋了爲什麼我沒有看到太多的開始筆錄。我會在明天和Keith的想法(以及Richard的下文)一起再玩一次。 – 2010-01-21 02:29:46

3
C:\workspaces\silverlight> start-transcript -? 

NAME 
    Start-Transcript 

SYNOPSIS 
    Creates a record of all or part of a Windows PowerShell session in a text file. 


SYNTAX 
    Start-Transcript [[-Path] <string>] [-Append] [-Force] [-NoClobber] [-Confirm] [-WhatIf] [<CommonParameters>] 


DESCRIPTION 
    The Start-Transcript cmdlet creates a record of all or part of a Windows PowerShell session in a text file. The transcript includes all command that the user 
    types and all output that appears on the console. 


RELATED LINKS 
    Online version: http://go.microsoft.com/fwlink/?LinkID=113408 
    Stop-Transcript 

REMARKS 
    To see the examples, type: "get-help Start-Transcript -examples". 
    For more information, type: "get-help Start-Transcript -detailed". 
    For technical information, type: "get-help Start-Transcript -full". 

注意#1:它只記錄寫入主控制檯輸出流的內容,而不是Warning/Error/Debug。

注2:如果你需要記錄本地控制檯應用程序,you'll need a slight workaround

+2

我對此也反應過 - 但開始 - 抄錄記錄確實捕獲了其他流(除了進度流)。它只是不會捕獲EXE輸出,除非您使用Andy在您使用EXE的任何地方引用的Out-Default技巧。 – 2010-01-14 18:18:16

2

我添加了-verbose到所需的命令。例如。

Copy-Item c:\xxx d:\xxx -verbose