好的,所以这可能是一个奇怪的请求,但我是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,"
}
接下来是从该行和最后一个结果中提取尝试次数。老实说,我找不到如何做到这一点,希望有人能告诉我如何用一些解释他们是如何做到这一点,或者我应该谷歌搜索的方向。感谢您花时间阅读本文,非常感谢任何/所有帮助。
答案 0 :(得分:0)
很好地想出来:)对于任何想要了解的人
$UpdateLog = Select-String .\~Temp.txt -pattern $ComputerName
$Attempts = $UpdateLog.ToString().Split(",")[1]
$Result = $UpdateLog.ToString().Split(",")[2]