0

そのため、簡単に解決できると思われる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
4

1 に答える 1

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
于 2016-03-01T23:31:53.340 に答える