簡體   English   中英

並行ping多個IP地址並輸出到Powershell中的多個.TXT文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM