2015-03-02 35 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

相关问题