Powershell:多维数组作为函数的返回值
我在PowerShell中遇到了一些关于二维数组的问题。 以下是我想做的: 我创建了一个应该返回二维数组的函数。调用函数时,我希望返回值是一个新的二维数组 为了更好地理解,我添加了一个示例函数,如下所示:Powershell:多维数组作为函数的返回值,powershell,multidimensional-array,return-value,Powershell,Multidimensional Array,Return Value,我在PowerShell中遇到了一些关于二维数组的问题。 以下是我想做的: 我创建了一个应该返回二维数组的函数。调用函数时,我希望返回值是一个新的二维数组 为了更好地理解,我添加了一个示例函数,如下所示: function fillArray() { $array = New-Object 'object[,]' 2,3 $array[0,0] = 1 $array[0,1] = 2 $array[0,2] = 3 $array[1,0] = 4
function fillArray() {
$array = New-Object 'object[,]' 2,3
$array[0,0] = 1
$array[0,1] = 2
$array[0,2] = 3
$array[1,0] = 4
$array[1,1] = 5
$array[1,2] = 6
return $array
}
$erg_array = New-Object 'object[,]' 2,3
$erg_array = fillArray
$erg_array[0,1] # result is 1 2
$erg_array[0,2] # result is 1 3
$erg_array[1,0] # result is 2 1
结果不是我所期望的。我希望以函数中声明的相同方式返回信息。所以我希望
$erg_array[0,1]
给我2
,而不是我用上面的代码收到的1,2
。如何实现这一点?为了在不“展开”的情况下准确返回数组,请使用逗号运算符(请参见有关\u运算符的帮助
)
,
使用单个项创建一个数组(这是我们的数组)。这个1项数组在返回时展开,但只有一个级别,因此结果正好是一个对象,即我们的数组。如果没有,
我们的数组本身将展开,它的项目将返回,而不是数组。这种在返回时使用逗号的技术也应该用于其他一些集合(如果我们想返回集合实例,而不是它的项)。此端口中真正缺少的是每个人都在寻找的内容。如何从函数中获取多个内容。好吧,我将分享每个人都想知道谁搜索并找到了这个,希望它能回答这个问题
function My-Function([string]$IfYouWant)
{
[hashtable]$Return = @{}
$Return.Success = $False
$Return.date = get-date
$Return.Computer = Get-Host
Return $Return
}
#End Function
$GetItOut = My-Function
Write-host “The Process was $($GetItOut.Success) on the date $($GetItOut.date) on the host $($GetItOut.Computer)”
#You could then do
$var1 = $GetItOut.Success
$Var2 =$GetItOut.date
$Var3 = $GetItOut.Computer
If ($var1 –like “True”){write-host “Its True, Its True”}
为什么您希望
$erg_数组[0,1]#结果是12
?它应该是$erg_数组[0,1]#结果2
,正如您定义的,这是一项,而不是2项。所以你不太清楚你想要什么。您正在尝试获取不存在的内容。要么修改目标,要么修改方法,例如,我们可以尝试使用其他内容,而不是2-dim阵列。
function My-Function([string]$IfYouWant)
{
[hashtable]$Return = @{}
$Return.Success = $False
$Return.date = get-date
$Return.Computer = Get-Host
Return $Return
}
#End Function
$GetItOut = My-Function
Write-host “The Process was $($GetItOut.Success) on the date $($GetItOut.date) on the host $($GetItOut.Computer)”
#You could then do
$var1 = $GetItOut.Success
$Var2 =$GetItOut.date
$Var3 = $GetItOut.Computer
If ($var1 –like “True”){write-host “Its True, Its True”}