2017-02-27 394 views
0

我需要帮助将日志直接保存到txt文件。我制作了一个简单的服务器和电脑监控脚本。基本上我只需要知道它是在线还是离线,但是我需要日志直接保存,无论输出是什么。如何在Powershell中保存实时输出到txt文件?监视脚本

While ($true) { 
    $ServerName = Get-Content "E:\ServerList.txt" 
    foreach ($Server in $ServerName) { 
     if (test-Connection -ComputerName $Server -Count 3 -quiet) { 
      Write-Host "$Server is Online " -ForegroundColor Green ;(Get-Date).toString("yyyy/MM/dd HH:mm:ss") 
     } else { 
      Write-Host "$Server - is Offline " -ForegroundColor Red ;(Get-Date).toString("yyyy/MM/dd HH:mm:ss") 
     } 
    } 

我该如何改进?

+0

那么是什么问题?如何写入日志文件? – vonPryz

+0

是的,我只是希望输出可以实时保存到txt文件并且保存日期。基本上任何输出显示都会直接保存到文本文件中,如日志文件。你可以帮助Tnx –

回答

1

可以使用出文件 cmdlet来-append交换机将数据保存在记录.txt文件。

在这个例子中,你将有两个,信息输出到控制台和文件过多:

$LogFile = 'C:\log.txt' 
While ($true) { 
    $ServerName = Get-Content "E:\ServerList.txt" 
    foreach ($Server in $ServerName) { 
     if (test-Connection -ComputerName $Server -Count 3 -quiet) { 
      Write-Host "$Server is Online " -ForegroundColor Green ;(Get-Date).toString("yyyy/MM/dd HH:mm:ss") 
      "{0}`t{1} is Online " -f (Get-Date).toString("yyyy/MM/dd HH:mm:ss"),$Server | Out-File $LogFile -Append -Force 
     } else { 
      Write-Host "$Server - is Offline " -ForegroundColor Red ;(Get-Date).toString("yyyy/MM/dd HH:mm:ss") 
      "{0}`t{1} is Offline " -f (Get-Date).toString("yyyy/MM/dd HH:mm:ss"),$Server | Out-File $LogFile -Append -Force 
     } 
    } 
} 
+0

惊人的,这就是我要找的。你能不能简单地向我解释这一行“{0}'t {1}”,这个新的powershell thingy,我从这里和从帮助菜单学到的大部分。 xD –

+0

将{0} {1}等放入字符串中作为您希望变量出现的位置标记,紧接着使用-f运算符跟随字符串,最后使用逗号分隔的变量列表,这些变量将用于填充地点标记。您可以将我的答案标记为答案,这样可以帮助其他类似静默的人。 :-) –

+0

谢谢基里尔帕什科夫先生。感谢帮助! :-) –

相关问题