быстрый вопрос, у меня есть небольшой небольшой скрипт, который создает 2 фоновых задания и проверяет связь с некоторыми веб-сайтами, теперь, так как задания не могут возвращать переменные, по-видимому, я решил попробовать это следующим образом (что, вероятно, является глупым способом сделать это но хорошо) Теперь странная вещь, что это, кажется, работает несколько? Но счетчик, который он возвращает, далеко не тот, который должен быть, он очень случайный, иногда он останавливается на 2, иногда на 3, может кто-нибудь сказать мне, что я делаю неправильно? Не должен ли я в конечном итоге равняться 7? Первоначально я хотел параллельные пространства для пробежек, но уже несколько недель пытаюсь обернуть это вокруг себя и пришел к выводу, что, очевидно, я слишком туп для этого. Возможно ли здесь то, что я пытаюсь сделать?
$1 = @('google.com', 'bing.com', 'yahoo.com', 'startpage.com')
$2 = @('reddit.com', 'facebook.com', 'nonexistent.com')
function run {
$pwd = Get-Location
$i = 0
$list = {
function list1 ($1, $pwd) {
foreach ($ping in $1) {
"&"
if (Test-Connection -ComputerName $ping -Count 1 -Quiet) {
"$pwd\" + "$ping"
}
}
}
function list2 ($2, $pwd) {
foreach ($ping in $2) {
"&"
if (Test-Connection -ComputerName $ping -Count 1 -Quiet) {
"$pwd\" + "$ping"
}
}
}
}
echo "ping?`nyes or no`n"; $y = Read-Host
if ($y -eq 'y') {
Start-Job -ScriptBlock { list1 $using:1 $using:pwd } -InitializationScript $list
Start-Job -ScriptBlock { list2 $using:2 $using:pwd } -InitializationScript $list
While (Get-Job | Where-Object HasMoreData) {
Get-Job | Where-Object HasMoreData | Receive-Job | Where-Object { $_ -notlike "&" } | Tee-Object -FilePath ping.txt -Append
Get-Job | Where-Object HasMoreData | Receive-Job | Where-Object { $_ -like "&" } | Foreach-Object { $i += 1 }
}
$i | Add-Content totalcount.txt
}
}