![](/img/trans.png)
[英]how to search multiple text files for IP addresses and output the IP addresses found to a text file using powershell?
[英]Ping multiple ip addresses in parallel and output to multiple .TXT files in Powershell
我想連續ping(ping -t)3個不同的IP,並在3個不同的.txt文件中導出帶有時間戳的結果,但我不知道如何ping parralel中的3個IP。
腳本有點工作,但它只創建第一個.txt文件。 我知道第一次ping必須完成下一個ping,因為當我“ping -n 1”(只有一個ping)時,它會按預期創建3個txt文件。
如何同時“ping”3個IP並將結果導出到3個不同的文件中?
我的劇本:
$enddate = (Get-Date).tostring("yyyyMMdd")
$IP1 = '192.168.1.1'
$IP2 = '192.168.1.2'
$IP3 = '192.168.1.3'
$IPs = $IP1,$IP2,$IP3
foreach ($IP in $IPs){
ping.exe -t $IP|Foreach{"{0} - {1}" -f (Get-Date),$_} | Out-File "C:\PINGS\$enddate _ $IP.txt"
}
結果,我將有3個文件,里面有ping結果:
20190401_192.168.1.1.txt
20190401_192.168.1.2.txt
20190401_192.168.1.3.txt
我是編碼的新手。 我嘗試使用Start-Job cmdlet同時ping,但我根本沒有得到它。
你能幫幫我嗎?
先謝謝了
我有另一個問題,但腳本工作。 當我從PowerShell ISE或使用。\\ scriptName.ps1命令從PowerShell窗口運行腳本時,它會創建.txt文件,然后我會看到這些作業。 但是,當我通過雙擊啟動.ps1時,它不會創建txt文件,也沒有正在運行的作業。 為什么???
順便說一句,對於我的ping腳本,我做了2個文件。
第一個開始工作到另一個.ps1
檔案1:
#$date = Get-Date -Format yyyyMMdd
$IP1 = '192.168.1.1'
$IP2 = '192.168.1.2'
$IP3 = '192.168.1.3'
$IPs = $IP1,$IP2,$IP3
$LogPath = "C:\PINGS"
foreach ($IP in $IPs){
Start-Job C:\PINGS\PingHost.ps1 -ArgumentList $IP,$LogPath
}
文件2:
[Cmdletbinding()]
Param(
[Parameter(Mandatory = $true,
Position = 0)]
[String[]]$Hostnames,
[Parameter(Mandatory = $true,
Position = 1)]
[String]$FilePath
)
$date = Get-Date -Format yyyyMMdd
Foreach($hostname in $Hostnames) {
$LogPath = $FilePath + "\$date" + "_" + "$hostname" + ".txt"
ping.exe -t $hostname |Foreach{"{0} - {1}" -f (Get-Date),$_} | Out-File -LiteralPath $LogPath
}
感謝我的一個朋友。
但他不知道為什么當我通過雙擊或右鍵單擊 - >打開 - > powershell執行它時腳本不起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.