与其他脚本语言不同,PowerShell通过管道发送对象。这意味着当您将数据从一个命令发送到另一个命令时,必须能够创建,修改和收集对象。
创建对象很简单。您创建的大多数对象将是PowerShell中的自定义对象,其使用的类型是PSObject。PowerShell也将允许您创建可以在.NET中创建的任何对象。
这是创建具有一些属性的新对象的示例:
$newObject = New-Object -TypeName PSObject -Property @{ Name = $env:username ID = 12 Address = $null } # Returns PS> $newObject Name ID Address ---- -- ------- nem 12
您可以通过在命令前添加命令来将对象存储在变量中 $newObject =
您可能还需要存储对象的集合。这可以通过创建一个空的collection变量并将对象添加到collection中来完成,如下所示:
$newCollection = @() $newCollection += New-Object -TypeName PSObject -Property @{ Name = $env:username ID = 12 Address = $null }
然后,您可能希望逐对象遍历此集合。为此,请在文档中找到“循环”部分。
以下是创建在互联网上仍然可以找到的对象的一种较不常见的方法:
$newObject = 'unuseddummy' | Select-Object -Property Name, ID, Address $newObject.Name = $env:username $newObject.ID = 12 # Returns PS> $newObject Name ID Address ---- -- ------- nem 12
有序类型加速器会强制PowerShell保持属性定义的顺序。您不需要使用有序类型加速器[PSCustomObject]:
$newObject = [PSCustomObject][Ordered]@{ Name = $env:Username ID = 12 Address = $null } # Returns PS> $newObject Name ID Address ---- -- ------- nem 12