如何从 PowerShell 函数中返回多个项目
- 使用数组从 PowerShell 函数返回多个项目
-
使用
[PSCustomObject]
从 PowerShell 函数返回多个项目 - 使用哈希表从 PowerShell 函数返回多个项目
- 使用自定义对象从 PowerShell 函数返回多个项目
- 结论

在使用 PowerShell 函数时,常常需要有效地返回多个值。一个有效的方法是利用数组、[PSCustomObject]
、哈希表或自定义对象来封装和呈现这些值。
在本文中,我们将深入探讨如何使用提到的方法从 PowerShell 函数返回多个项目。我们将为每种方法概述逐步程序,并提供代码示例以说明其实现和展示其输出。
使用数组从 PowerShell 函数返回多个项目
要使用数组从 PowerShell 函数返回多个值,请按照以下步骤操作:
-
声明一个数组变量:首先在函数中声明一个数组变量,以容纳您想要返回的多个值。
-
填充数组:用您想返回的值填充数组。您可以使用索引向数组添加元素。
-
返回数组:将填充后的数组作为函数的输出返回。
让我们创建一个简单的 PowerShell 函数,使用数组返回多个值。
function Get-MultipleValues {
$values = @()
$values += "Value1"
$values += "Value2"
$values += "Value3"
return $values
}
$resultArray = Get-MultipleValues
Write-Output "Values returned from the function:"
foreach ($value in $resultArray) {
Write-Output $value
}
输出:
Values returned from the function:
Value1
Value2
Value3
在这个示例中,我们有一个名为 Get-MultipleValues
的函数。在函数内部,我们声明一个数组变量 $values
。
然后,我们用三个值填充这个数组:Value1
、Value2
和 Value3
。最后,我们将填充后的数组作为函数的输出返回。
调用该函数时,我们将结果存储在一个变量中($resultArray
),并使用循环显示数组中的值。
使用 [PSCustomObject]
从 PowerShell 函数返回多个项目
您还可以使用 [PSCustomObject]
在 PowerShell 中创建自定义对象。它允许您为对象定义属性和值,使其成为从函数返回多个值的合适选择。
要使用 [PSCustomObject]
创建自定义对象,您只需像这样定义属性及其对应的值:
$customObject = [PSCustomObject]@{
Property1 = 'Value1'
Property2 = 'Value2'
...
}
要在 PowerShell 函数中使用 [PSCustomObject]
返回多个值,请首先定义 PowerShell 函数并创建 [PSCustomObject]
的实例。在自定义对象中定义您想要返回的属性和值。
function Get-MultipleValues {
[CmdletBinding()]
param (
[string]$Value1,
[int]$Value2,
[string]$Value3
)
$resultObject = [PSCustomObject]@{
Name = $Value1
Age = $Value2
Address = $Value3
}
return $resultObject
}
现在,您可以调用该函数并检索包含多个值的自定义对象。
$result = Get-MultipleValues -Value1 'Rohan' -Value2 21 -Value3 'UK'
Write-Output "Values returned from the function:"
foreach ($value in $result) {
Write-Output $value
}
输出:
Values returned from the function:
Name Age Address
---- --- -------
Rohan 21 UK
正如我们所看到的,上面的 PowerShell 代码引入了一个名为 Get-MultipleValues
的函数。这个函数带有 [CmdletBinding()]
标记,表明它可以利用常见的 cmdlet 参数。
在函数内部,定义了三个参数:$Value1
(字符串)、$Value2
(整数)和 $Value3
(字符串)。该函数使用这些参数构造一个名为 $resultObject
的自定义对象,将它们分配给自定义对象中的属性 Name
、Age
和 Address
。
return $resultObject
语句确保此自定义对象作为 Get-MultipleValues
函数的输出返回。
之后,脚本调用 Get-MultipleValues
函数,为每个参数指定值:$Value1
设置为 'Rohan'
,$Value2
设置为 21
,$Value3
设置为 'UK'
。得出的自定义对象,结合提供的参数值,存储在变量 $result
中。
随后,脚本使用 Write-Output
在控制台上呈现消息,并启动一个循环,遍历存储在 $result
中的自定义对象的属性。对于每个属性,脚本在控制台上显示属性名称及其相应的值。
使用哈希表从 PowerShell 函数返回多个项目
在 PowerShell 中,哈希表是一种无序的键值对集合。每个键必须是唯一的,相关的值可以是任何数据类型。
它也被称为字典或关联数组。当您需要根据特定键存储和检索数据时,哈希表特别有用,提供了一种结构化的方式来组织信息。
要使用哈希表从 PowerShell 函数返回多个值,请按照以下步骤操作:
-
创建哈希表:在函数内实例化一个哈希表,以存储表示您想要返回的数据的键值对。
您可以使用
@{}
创建 PowerShell 中的哈希表。键和值放置在{}
括号中。创建哈希表的语法如下。
@{ <key> = <value>; [<key> = <value> ] ... }
-
添加键值对:向哈希表添加键值对,将每个值与一个唯一键关联。
-
返回哈希表:将填充后的哈希表作为函数的输出返回。
让我们举一个例子,使用哈希表从名为 user
的函数返回多个值。
代码:
function user() {
$hash = @{ Name = 'Rohan'; Age = 21; Address = 'UK' }
return $hash
}
$a = user
Write-Host "$($a.Name) is $($a.Age) and lives in $($a.Address)."
输出:
Rohan is 21 and lives in UK.
正如我们所看到的,这段代码定义了一个名为 user()
的函数,使用了 function
关键字。在这个函数内部,使用 @{}
语法创建了一个名为 $hash
的哈希表,其中包含三个键值对:Name
的值为 'Rohan'
,Age
的值为 21
,Address
的值为 'UK'
。
return $hash
语句确保该哈希表是 user()
函数的输出。
随后,脚本调用 user()
函数,并将结果哈希表赋值给变量 $a
。这意味着 $a
现在保存了 user()
函数返回的哈希表。
最后,使用 Write-Host
cmdlet 在控制台上显示消息。消息包含从存储在 $a
中的哈希表中检索的值,使用 $($a.Name)
、$($a.Age)
和 $($a.Address)
分别访问 Name
、Age
和 Address
值。
现在,让我们创建另一个 PowerShell 函数,该函数计算两个数字的和与积,并使用哈希表返回结果。
function Calculate-SumAndProduct {
param(
[int]$num1,
[int]$num2
)
$resultHashTable = @{
Sum = $num1 + $num2
Product = $num1 * $num2
}
return $resultHashTable
}
$inputNum1 = 5
$inputNum2 = 7
$result = Calculate-SumAndProduct -num1 $inputNum1 -num2 $inputNum2
Write-Output "Sum: $($result['Sum'])"
Write-Output "Product: $($result['Product'])"
输出:
Sum: 12
Product: 35
这段代码首先定义了一个名为 Calculate-SumAndProduct
的函数,它接受两个 int
参数 $num1
和 $num2
。在函数内部,使用 @{}
语法创建一个名为 $resultHashTable
的哈希表。
这个哈希表包含两个键值对:Sum
的值等于 $num1
和 $num2
的和,Product
的值等于 $num1
和 $num2
的积。然后,函数返回该哈希表,使其成为 Calculate-SumAndProduct
函数的输出。
在脚本的后面,定义了两个输入数字:$inputNum1
的值为 5
,$inputNum2
的值为 7
。用这些输入数字调用 Calculate-SumAndProduct
函数,结果哈希表存储在名为 $result
的变量中。
最后,脚本使用 Write-Output
cmdlet 显示和与积的值,通过访问存储在 $result
中的哈希表相应的值。
使用自定义对象从 PowerShell 函数返回多个项目
在 PowerShell 中,自定义对象是 System.Management.Automation.PSCustomObject
类的实例。它允许您定义属性及其关联的值,模拟现实世界中的对象。
自定义对象灵活,并能够以结构化的方式组织和检索数据。
要使用自定义对象从 PowerShell 函数返回多个值,请按照以下步骤操作:
-
定义自定义对象:在函数内创建一个自定义对象,并为您想要返回的值定义属性。
-
分配属性值:将您想要返回的值分配给自定义对象的属性。
-
返回自定义对象:将填充后的自定义对象作为函数的输出返回。
让我们创建一个 PowerShell 函数,计算两个数字的和与积,并使用自定义对象返回结果。
function Calculate-SumAndProduct {
param(
[int]$num1,
[int]$num2
)
$resultObject = New-Object PSObject
$resultObject | Add-Member -MemberType NoteProperty -Name "Sum" -Value ($num1 + $num2)
$resultObject | Add-Member -MemberType NoteProperty -Name "Product" -Value ($num1 * $num2)
return $resultObject
}
$inputNum1 = 5
$inputNum2 = 7
$result = Calculate-SumAndProduct -num1 $inputNum1 -num2 $inputNum2
Write-Output "Sum: $($result.Sum)"
Write-Output "Product: $($result.Product)"
输出:
Sum: 12
Product: 35
在这个示例中,我们定义了一个名为 Calculate-SumAndProduct
的函数,该函数接受两个输入数字($num1
和 $num2
)。在函数内部,我们创建了一个名为 $resultObject
的自定义对象,并为其添加了属性(Sum
和 Product
),将相应的计算值分配给它。
当使用输入数字(5
和 7
)调用函数时,我们将结果存储在一个变量($result
)中。然后,我们通过访问结果自定义对象的属性显示和与积。
结论
本文探讨了从函数返回多个值的各种技术,包括使用数组、[PSCustomObject]
、哈希表和自定义对象。每种方法都有其优点,可根据脚本的具体需求进行选择。
数组提供了一种简单的方式来返回多个值,特别是当数据项共享相似类型或结构时。[PSCustomObject]
使您能够创建具有命名属性的自定义对象,为返回数据提供了结构化的方法。
哈希表在根据特定键检索数据的场景中表现良好,提供了一种组织的高效解决方案。使用 [System.Management.Automation.PSCustomObject]
类构建的自定义对象提供了灵活性并模拟现实世界对象。