Başlangıç İşi'nde bir komut dizisine bir dizi geçirme konusunda sorun yaşıyorum. Bana ne yapıyorum diyebilir misin?Diziyi Get-Job'a geçirme
$bounceBlock = {
param(
[string[]]$list,
[System.Management.Automation.PSCredential]$cred
)
Add-PSSnapin VMware.VimAutomation.Core | Out-Null
Set-PowerCLIConfiguration -DefaultVIServerMode Multiple -Scope User -InvalidCertificateAction Ignore -Confirm:$false | Out-Null
Connect-VIServer -Server servername -Credential $cred -AllLinked
Get-VM -Name $list
}
if ($targets) {
$activeTargets = $targets | Get-Random -Count $prodTargets.Count
$counter = [pscustomobject] @{Value = 0}
$groupSize = 50
$groups = $activeTargets | Group-Object -Property {[math]::Floor($counter.Value++/$groupSize)}
$connection = Connect-VIServer -Server servername -Credential $cred -AllLinked
if ($connection -match "servername") {
foreach ($group in $groups) {
while ((Get-Job -State Running).Count -ge 5) {
Start-Sleep -Seconds 5
}
Start-Job -ScriptBlock $bounceBlock -ArgumentList (,$group.Group.ServerName),$cred
}
Disconnect-VIServer * -Force -Confirm:$false
}
}
Temel olarak bir diziyi 50 (çalışma) parçalarına bölerim, sonra bunları iş olarak çalıştırmayı deneyin. Aldığım hata, birleştirilmiş bir sunucu için Get-VM'yi çalıştırmaya çalışıyormuş gibi görünüyor.
'-ArgumentList $ group.Group.ServerName, $ cred' yeterli olmalıdır. Hangi PowerShell sürümünü kullanıyorsunuz? –
Powershell 4. Bunu böyle aktarmaya çalışırsam, iş sonsuza kadar askıda kalıyor (veya en az 20 dakikadan uzun sürüyor). – Acerbity
One Ek not, komutu döngü dışında düzenli bir diziyle çalıştırmaya çalışırsam, iş hala askıda kalıyor. Start-Job -ScriptBlock $ bounceBlock -ArgumentList $ şeyler, $ cred – Acerbity