回答
Write-host
只將輸出重定向到控制檯。
您可以使用write-output
和重定向到文件(> export.txt
或管out-file export.txt
)
在當你確實需要重定向從腳本的所有輸出來看看這個cmdlet的
start-transcript
get-help start-transcript -full
在PowerShell script > export.txt
是語法糖爲script | Out-File -path export.txt
。
寫主機將對象發送給主機,並且它不返回任何對象。這意味着沒有對象傳送到Out-File cmdlet,並且沒有任何內容寫入到export.txt文件中。解決方法(如果您不想更改腳本)是打開cmd
控制檯並使用cmd控制檯重定向重定向PowerShell輸出。
C:\> powershell .\script.ps1 > .\export.txt
我忘記說有一個Exchange命令是:Get-MailboxServer C:\> powershell。\ script.ps1>。\ export.txt 術語'Get-MailboxServer'不被識別爲cmdlet ,功能,可操作 程序或腳本文件。驗證該字詞並重試。 謝謝 – expirat001 2012-02-15 14:49:41
嘗試在腳本開始時連接到交換遠程運行空間配置。 '$ session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http:// $ computername/powershell; import-pssession $ session'。如果遇到問題,請考慮提出一個新問題,因爲這個問題與最初的問題無關。 – 2012-02-15 15:47:20
不同方法的有效性在很大程度上要根據你的使用情況,當然,但......
「正確」的方式做到這一點,我相信,如果你有控制的腳本(這是我通常所做的,儘管我承認我今天正在尋找一個快捷方式),是「過載」Write-Host
,可以這麼說,,然後發送一切你會發送到Write-Host
到這個新功能。
只是爲了保持有效的PowerShell動詞,我打電話給我的我的Write-Feedback
。
function Write-Feedback()
{
param
(
[Parameter(Position=0,ValueFromPipeline=$true)]
[string]$msg,
[string]$BackgroundColor = "Yellow",
[string]$ForegroundColor = "Black"
)
Write-Host -BackgroundColor $BackgroundColor -ForegroundColor $ForegroundColor $msg;
}
好,你現在基本上等同於Write-Host
進行動作的功能,但你可以很容易地控制,其中輸出變。如果您需要寫入文件,您可以編輯Write-Feedback
,以便其所有呼叫現在都可以執行您所需的任何操作。
你可以行簡單地更改爲Write-Output
,這取決於你在做什麼都順着管道...
...
Write-Output $msg;
您可以將輸出發送到你的管道相同的文件該命令的休息,但Write-Feedback
函數中,甚至保持寫主機太:
function Write-Feedback()
{
param
(
[Parameter(Position=0,ValueFromPipeline=$true)]
[string]$msg,
[string]$BackgroundColor = "Yellow",
[string]$ForegroundColor = "Black"
)
Write-Host -BackgroundColor $BackgroundColor -ForegroundColor $ForegroundColor $msg;
$msg | Out-File "./export.txt" -Append; # <<< or add a param to location
}
或者,如果你有一些異常值,你不希望Write-Feedback
內容,通過管道輸送到一個文件,你可以添加一個新的o要求怎麼處理每個特定的Write-Feedback
調用,你switch
關閉 - 發送到文件,到Write-Host
,到Write-Output
等 - 將默認值更改爲您通常需要的值,並明確地將switch
從新的參數在哪裏明確設置。
等等將所有呼叫路由到PowerShell中輸出的集中交換中心,這非常容易。然後當你改變你的想法時,這不是一個巨大的搜索和替換 - 而是取代了後面的任務。
我認爲這裏唯一的痛苦就是如果你不想發送流水線的東西,所以Write-Output
已經不存在了,但是確實想要確保文件Write-Feedback
寫入的文件與你在您的示例中的> export.txt
每次都不編輯Write-Feedback
。我不確定是否有簡單的方法來做到這一點。
但是,既然您已經從「管道步驟」中移除了一步,那可能不是合法的用例。
無論如何,底線是超載Write-Host
並做任何你想通過編輯在一個地方。
- 1. 寫主機輸出沒有被重定向到日誌文件
- 2. R,將文件導出到主題
- 3. 添加主機到主機文件
- 4. 隱藏寫主機輸出
- 5. shell腳本到grep不同的主機上的日誌,寫grepped輸出到文件上的主機1
- 6. 寫主機與寫輸出 - 換行
- 7. PHP - 寫入主機文件編程
- 8. 導出CSV文件,並得到<br>作爲<BR>
- 9. Vagrant-> Ansible:找不到主機文件,提供的主機列表爲空,沒有主機匹配
- 10. 文件寫入輸出從機器到機器的變化
- 11. python subprocess登錄到主機創建文件夾並退出主機
- 12. Powershell寫主機追加到文本文件 - 計算機名稱和時間戳
- 13. JMeter導出圖形到CSV導出到多列,寫結果到文件導出到一列
- 14. 當文件>>另存爲...時,文件>>導出總是冗餘的?
- 15. FFmpeg的「movflags」>「的fastStart」導致無效MP4文件寫到
- 16. 導入導出herokuapp數據到本地主機
- 17. 主機名未出現在文件中
- 18. 寫輸出到文件
- 19. 寫出xmlwriter到文件
- 20. 寫pickle.dumps輸出到文件
- 21. PFX文件導入到在C#中的虛擬主機店
- 22. 批處理文件 - 環平 - 輸出到文件均達到主機
- 23. 隨機書寫順序輸出文件?
- 24. powershell,寫主機的文件的所有文件名
- 25. 隨機輸出到文件
- 26. PowerShell寫入主機和寫入輸出到控制檯的不同輸出
- 27. 如何獲得寫主機輸出$ true
- 28. 寫入CSV文件並將其導出?
- 29. 將主機添加到Ansible主機文件
- 30. WebMatrix主機文件
關於它的最終解決方案? – Kiquenet 2013-04-09 10:08:40