2016-03-01 1 views
0

Итак, у меня есть проблема с powershell, которая кажется, что она должна быть простой в разрешении, но у меня возникают проблемы с ее выяснением.Обнаруживание пользовательских объектов в Powershell

Возьмем, например, следующую программу:

$MyFavoriteAnimals = @() 
$Pets = "Cat","Dog","Fish","Bird" 
$Names = "Jeb","Rex","Sam","Roger" 

For ($i=0; $i -lt 4; $i++) 
{ 
    $NewAnimal = @{"Kind" = $Pets[$i]; "Name" = $Names[$i]} 
    $MyFavoriteAnimals += New-Object pscustomobject -Property $NewAnimal 
} 
$MyFavoriteAnimals | FT Kind, Name -AutoSize 

Это прекрасно работает, и имеет следующий вывод:

Kind Name 
---- ---- 
Cat Jeb 
Dog Rex 
Fish Sam 
Bird Roger 

... но если я пытаюсь поместить это в функции и сферы применения $ MyFavoriteAnimals как глобальная команда New-Object перестает работать:

Function My-Favorite-Animals { 

    $Global:MyFavoriteAnimals = @() 

    $Pets = "Cat","Dog","Fish","Bird" 
    $Names = "Jeb","Rex","Sam","Roger" 

    For ($i=0; $i -lt 4; $i++) 
    { 
     $NewAnimal = @{"Kind" = $Pets[$i]; "Name" = $Names[$i]} 
     $MyFavoriteAnimals += New-Object pscustomobject -Property $NewAnimal 
    } 

} 

My-Favorite-Animals 
$MyFavoriteAnimals | FT Kind, Name -AutoSize 

... и я получаю ВОЛП Ошибка мычание:

Method invocation failed because [System.Management.Automation.PSObject]  does not contain a method named 'op_Addition'. 
At line:13 char:9 
+   $MyFavoriteAnimals += New-Object pscustomobject -Property $NewAnimal 
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
+ CategoryInfo   : InvalidOperation: (op_Addition:String) [], RuntimeException 
+ FullyQualifiedErrorId : MethodNotFound 

ответ

1

Указать: ** $ Global: ** MyFavoriteAnimals + =, как:

Function My-Favorite-Animals { 

    $Global:MyFavoriteAnimals = @() 

    $Pets = "Cat","Dog","Fish","Bird" 
    $Names = "Jeb","Rex","Sam","Roger" 

    For ($i=0; $i -lt 4; $i++) 
    { 
     $NewAnimal = @{"Kind" = $Pets[$i]; "Name" = $Names[$i]} 
     $Global:MyFavoriteAnimals += New-Object pscustomobject -Property $NewAnimal 
    } 

} 

My-Favorite-Animals 
$MyFavoriteAnimals | FT Kind, Name -AutoSize 
+0

Спасибо! Это работает! – TroggleDorf

 Смежные вопросы

  • Нет связанных вопросов^_^