Unterhalb des Registrierungsschlüssel HKEY_CURRENT_USER\TEST befinden sich mehrere Unterschlüssel, deren Namen durchnummeriert sind. Per Invoke-Command frage ich die Unterschlüsseln von mehreren Remotemaschinen ab. Leider bekomme ich jeder einzelne Objekt, und nicht wie erwartet, die Sammlung zurück. Die Varianten, den Inhalt der Pipeline in einer Variablen zu speichern noch jedes Objekt einer ArrayList hinzufügen, brachten das gewünschte Ergebenis. Führe ich den Skriptblock lokal aus, funktioniert es erwartungsgemäß.
Wie muss ich mein Skript abändern, damit ichdie Sammlung und nicht jedes einzelne Ojekt von den remote abgefragten Computern erhalte?
$params = @{
ComputerName = Get-ADComputer -Filter 'Name -like "test*' | Select-Object -ExpandProperty Name
ScriptBlock = {
$regKey = 'Registry::HKEY_CURRENT_USER\TEST'
$test = New-Object -TypeName System.Collections.ArrayList
# $test = Get-ChildItem -Path $regKey -Recurse -ErrorAction SilentlyContinue |
Get-ChildItem -Path $regKey -Recurse -ErrorAction SilentlyContinue |
ForEach-Object {
$null = $test.Add(
[pscustomobject]@{
Version = [int]($PSItem | Select-Object -ExpandProperty PSChildName)
IsValid = [boolean]$PSItem.GetValue('IsValid', $false)
})
}
$test
}
Credential = Get-Credential -Message 'Please enter your credentials'
AsJob = $true
}
$job = Invoke-Command @params
Wait-Job -Job $job
Receive-Job -Job $job -Keep