Я бы немного посмотрел на реструктуризацию кода, чтобы это выглядело так:
Поместите следующий код в корневой каталог profile.ps1 c: \ windows \ system32 \ windowspowershell \ v1.0 \ profile.ps1. Если он не существует, просто создайте текстовый файл и переименуйте его. Этот файл profile.ps1 будет загружен по умолчанию при запуске powershell.
Function Test-Connection()
{
param(
[Parameter(Mandatory = $true,Position = 0)]$Count,
[Parameter(Mandatory= $true,Position = 1)]$IP,
[Parameter(Mandatory= $true,Position = 2)]$TTL,
[Parameter(Mandatory= $true,Position = 3)]$ThrottleLimit
)
MyCommand $Count $IP $TTL $ThrottleLimit
}
Затем используйте следующий код для запуска заданий, скопировав из моего блога подпрограмму порога http://www.poshpete.com/archives/27:
$ips = Get-Content $wkslist
ForEach($IP in $ips)
{
Threshold -MaxConcurrent 10 -PauseTime 5
Start-Job -ScriptBlock {test-connection} -ArgumentList $Count,$IP,$TTL,$ThrottleLimit -Name $IP
$CompletedJobs = Get-Job -State Completed
If(($CompletedJobs | Measure-Object).Count -gt 0)
{
ForEach($Job in $CompletedJobs)
{
$Job | Receive-Job | Where-Object { $_.StatusCode -eq 0 } | Select-Object -ExpandProperty Address
}
}
}
Я использую get-content для получения данных из текстового файла, но вы также можете использовать объект .net.
Надеюсь, это имеет смысл!