【问题标题】:Scoping Custom Objects in Powershell在 Powershell 中确定自定义对象的范围
【发布时间】:2016-03-01 23:22:08
【问题描述】:

所以我有一个似乎应该很容易解决的 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

【问题讨论】:

    标签: powershell pscustomobject


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2022-01-22
      • 2016-10-08
      • 1970-01-01
      • 1970-01-01
      • 2010-12-03
      • 2019-10-16
      • 1970-01-01
      • 2018-04-19
      • 1970-01-01
      相关资源
      最近更新 更多