2016-07-11 8 views
0

Ich möchte eine bestimmte Auswahl von Daten in einer Variablen wie folgt hinzuzufügen:Keine Methode „op_addition“ gefunden

$a = Get-Service | select -First 10 | ? Name -Like "App*" 
$collection = $null 
foreach($item in $a){ 
    if($item.Status -like "Running"){ 
    $collection = $collection + $item 
    } 
} 

Als ich wie ein Fehler bekam zu laufen versuchen:

Keine Methode gefunden "op_addition"

Was kann ich tun, um meine Auswahl in einer separaten Variablen zu speichern?

Antwort

2

Zuerst ist $collection$null.

Dann wird, nachdem der ersten Schleifendurchlauf wird ein einziges $collectionServiceController Objekt, da nur $null + $object$object ist.

Bei der zweiten Schleifeniteration schlägt es fehl, weil ServiceController keine Überlastungen für + haben, so wie der Fehler Sie informiert.

Sie benötigen $collection eine aktuelle Sammlung zu erklären, für + (Sie @() Array subexpression Operator verwenden können) sie arbeiten Art und Weise erwarten Sie:

$a = Get-Service | select -First 10 | ? Name -Like "App*" 
$collection = @() 
foreach($item in $a){ 
    if($item.Status -like "Running"){ 
    $collection = $collection + $item 
    } 
} 

Alternativ weisen Sie alle die Ausgabe von der Schleife direkt zu $collection:

$a = Get-Service | select -First 10 | ? Name -Like "App*" 
$collection = foreach($item in $a){ 
    if($item.Status -like "Running"){ 
    $item 
    } 
} 

Was natürlich mit einer einzigen Where-Object Anweisung in der Pipeline vereinfacht werden könnte:

$collection = Get-Service App* |Where-Object {$_.Status -eq 'Running'} 
+0

Danke für Ihre Antwort! Wenn ich '$ collection = $ null 'in' $ collection = @() 'umschalte, bekomme ich die Fehlermeldung nicht mehr. Leider hat die Variable '$ collection' keinen Inhalt ... Hast du eine Idee warum? –

+1

Und Sie wissen in der Tat, dass die ersten 10 Dienste, die von 'Get-Service' zurückgegeben werden, mindestens einen Dienst namens App * enthalten, der ausgeführt wird? –

+0

Mein Gott! Ich habe einen dummen Fehler gemacht. Mit einer GUI arbeiten und Popups verwenden, um zu prüfen, ob alles in Ordnung ist. Sammlungen werden hier nicht in einem Popup angezeigt, daher dachte ich, die Variable wäre leer. Alles funktioniert, danke nochmal! –

Verwandte Themen