我正在创建一个脚本,从我们的服务器中提取所有日期和时间信息。该脚本从文本文件中获取服务器。我正在获取要写入文本文件的脚本的输出。
我尝试使用带有Out-File的管道,如下所示:
$servers = gc "C:\Users\Public\Shell_NTP\TestList.txt"
foreach ($server in $servers){
$dt = gwmi win32_operatingsystem -computer $server
$dt_str = $dt.converttodatetime($dt.localdatetime)
write-host "$($server) current local time is $($dt_str)" | Out-File
"C:\Users\Public\Shell_NTP\TestListOutput.txt"
然后我尝试了简单的胡萝卜输出:
$servers = gc "C:\Users\Public\Shell_NTP\TestList.txt"
foreach ($server in $servers){
$dt = gwmi win32_operatingsystem -computer $server
$dt_str = $dt.converttodatetime($dt.localdatetime)
write-host "$($server) current local time is $($dt_str)" >
C:\Users\Public\Shell_NTP\TestListOutput.txt
这也不起作用。所以任何帮助或建议都会很棒。
TL; DR尝试将powershell输出转换为文本文件或其他一些更有用的文件格式。
答案 0 :(得分:1)
请勿使用write-host
- 使用write-output
write-host
只会将您的字符串输出到控制台,数据不会沿着pipleline传递。
答案 1 :(得分:0)
您不需要使用write-output
"text" | Out-File ...
到文本文件或其他一些更有用的文件格式
CSV是一种更实用的格式。您正在编写的格式是您必须再次处理以从文本中取回数据的格式。 CSV,您只需Import-Csv
即可将其恢复。或者在Excel等中打开
gc "C:\Users\Public\Shell_NTP\TestList.txt" | ForEach {
$dt = gwmi win32_operatingsystem -Computer $_
[PSCustomObject]@{
'ServerName' = $_
'DateTime' = $dt.converttodatetime($dt.localdatetime)
}
} | Export-Csv C:\Users\Public\Shell_NTP\TestListOutput.csv -NoTypeInformation