2015-03-02 43 views
0

我是一個Powershell noobie,我目前正在寫我的第二個劇本,所以忍受着我。我正在嘗試執行write-host並輸出我的寫主機消息以及時間戳,以及哪臺計算機正在將各種腳本塊完成到文本文件,而且我遇到了使用它的語法問題。Powershell寫主機追加到文本文件 - 計算機名稱和時間戳

我嘗試了下面的測試目的。一旦我獲得了語法,這將會進入服務器 - 現在它會進入我的本地C:驅動器。

write-host "folders created successfully $env:computername" >> c:\scripts\testlog.txt 

我看到的行爲是文本文件正在創建,但沒有內容 - 所有空白。

+0

什麼與你發生改變'寫Host'到'寫Output'?主機發送到控制檯不是標準輸出 – Matt 2015-03-02 14:43:14

回答

2

Write-Host不使用標準輸出。它總是直接輸出到控制檯。 Write-Output確實輸出到標準輸出。

要做到準確,您可以使用:

Write-Output "folders created successfully $env:computername" >> C:\scripts\testlog.txt 

但是,你也可以使用Add-Content

Add-Content -Path C:\scripts\testlog.txt -Value "folders created successfully $env:computername" 

或者你可以管到Out-File -Append

"folders created successfully $env:computername" | Out-File -FilePath C:\scripts\testlog.txt -Append 

爲什麼你會用不同的方法嗎?他們有a few differences,你不會經常遇到。 redirection operators不會給你更多的控制權(編碼等)。

0

Write-Host僅用於將數據發送到控制檯和其他地方。如果你正在尋找在其他地方發送數據,即。到文件你需要將它發送到輸出流

write-output "folders created successfully $($env:computername)" >> c:\scripts\testlog.txt 

"folders created successfully $($env:computername)" >> c:\scripts\testlog.txt 

注意子表達式周圍$env。我們需要確保該變量正確地在雙引號中擴展。

Bacons answer如何與本地PowerShell命令做到這一點

+0

我有一個計算機名稱出來的CSV文件,我導入$ computername = $ viewobject.desktop我想是它追加到文本文件與寫輸出是在哪裏寫入輸出(「VMWare Backup folder created」)>> \\ servername \ dump \ test1.txt}}文本文件沒有被創建。它是否必須提前創建?我試過了,沒有文字輸出到文本文件中。 – h34th3r 2015-03-04 17:07:28

+0

@ h34th3r那裏有問題嗎?你是否使用環境變量?...你編輯了評論。沒有文件不需要提前存在。如果我嘗試一小段代碼,我會得到一個包含「VMWare備份文件夾創建」的文件作爲內容 – Matt 2015-03-04 17:10:41

相關問題