PowerShell Ping to file: сделайте что-нибудь, если возникнет ошибка - PullRequest
0 голосов
/ 06 мая 2020

У меня есть сценарий, который запрашивает имя / IP-адрес компьютера и расположение папки, а затем отправляет непрерывные эхо-запросы на этот IP-адрес и сохраняет результаты в .txt-файле. Он отлично работает так, как я хочу, если вы правильно указали переменные для Location и IP. вот код, который запускается:

Ping $IP -t|Foreach{"{0} - {1}" -f (Get-Date),$_} > $Location\$IP.txt

Теперь я решил большинство проблем, проблема, на которой я застрял, заключается в том, что если возникает ошибка из-за того, что местоположение файла не существует или недоступно, я хочу чтобы снова спросить местоположение, но не знаю, как это сделать. Я пробовал использовать -ErrorAction, но безуспешно.

1 Ответ

0 голосов
/ 06 мая 2020
function Invoke-PingContinuous {
    param (
        [Parameter(Mandatory = $true)]
        [string]
        $Location,

        [Parameter(Mandatory = $true)]
        [ipaddress]
        $IP
    )

    # always ask for an existing path
    while (-Not (Test-Path $Location)) {
        $Location = Read-Host -Prompt "$Location not exists, enter again: "
    }

    $outfile = "$Location\$IP.txt"
    try {
        [io.file]::OpenWrite($outfile).close()
        Ping $IP -t | Foreach { "{0} - {1}" -f (Get-Date), $_ } | Out-File -append $outfile
    }
    catch {
        Write-Error -Message "$outfile not writable"
    }  
}

Затем выполните как Invoke-PingContinuous -Location dir -IP 127.0.0.1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...