0

好的,所以这可能是一个奇怪的请求,但我是 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,"
}

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

4

1 回答 1

0

想通了:) 对于任何想知道的人

$UpdateLog = Select-String .\~Temp.txt -pattern $ComputerName 
$Attempts = $UpdateLog.ToString().Split(",")[1] 
$Result = $UpdateLog.ToString().Split(",")[2]
于 2012-10-26T14:24:17.773 回答