Powershell建筑日志表

时间:2012-10-26 13:45:04

标签: powershell

好的,所以这可能是一个奇怪的请求,但我是powershell的新手,但已经玩了几天并有一个想法,但不知道如何做到这一点。我想制作一个类似于以下内容的结果表。

Computer Name(s)   Attempt(s)   Result          Last Attempt
Computer1          1            Successful      9:31 25 Oct 12
Computer2          24           Unsuccessful    12:08 25 Oct 12
Computer3          9            Successful      11:22 25 Oct 12
Computer4          11           Unsuccessful    04:11 25 Oct 12
Computer5          12           Unsuccessful    07:19 25 Oct 12

我把一个似乎得到我想要的结果的命令放在一起但是需要一些调整来获得我需要的附加功能。

( Get-Content .\~temp.txt ) | Foreach-Object {$_ -replace "$Computername,.*", ($Computername + "," + $Attempts + "," + $Result + "," + $Time.ToShortTimeString() + "," + $Time.ToShortDateString())} | Set-Content .\~temp.txt

第一件事第一。我需要从文本文件(Computers.txt)加载所有计算机并将它们中的每一个加载到新文件中(~temp.txt)我正在考虑以下几行。

(注意:未经测试,只是一个想法)

$Computers = Get-Content .\computers.txt
IF (Test-Path .\~temp.txt) {
      IF ( Select-String .\~temp.txt -pattern $Computer -quiet ) {} ELSE { Add-Content ./~test.txt "$Computer," }
} ELSE {
      ForEach ($Computer in $Computers) {
      add-content .\~temp.txt "$Computer,"
}

接下来是从该行和最后一个结果中提取尝试次数。老实说,我找不到如何做到这一点,希望有人能告诉我如何用一些解释他们是如何做到这一点,或者我应该谷歌搜索的方向。感谢您花时间阅读本文,非常感谢任何/所有帮助。

1 个答案:

答案 0 :(得分:0)

很好地想出来:)对于任何想要了解的人

$UpdateLog = Select-String .\~Temp.txt -pattern $ComputerName 
$Attempts = $UpdateLog.ToString().Split(",")[1] 
$Result = $UpdateLog.ToString().Split(",")[2]