3

我知道如何通过 PSObjects 将哈希表、数组等从 Powershell 返回到 c#。为了使用它,我需要从 Powershell 脚本返回一个对象——而不仅仅是列出输出。

但是如何从 Powershell 中的列表中获取可以从 Powershell 脚本返回的结构化内容?

考虑一下这个简单的场景(出于示例目的):

Get-ChildItem C:\Test

我得到类似这样的输出:

PS C:\test> Get-ChildItem

Directory: C:\test

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        03.06.2013     14:59          6 test1.txt
-a---        03.06.2013     14:59          5 test2.txt

现在我想获取每个文件的 Name 和 Length 属性,并将其作为某种对象从 powershell 脚本返回,我可以使用 C# 进行处理。

我可以从 C# 处理的一个例子是:

$a = New-Object psobject -Property @{
   Name = "test1.txt"
   Age = 6
}

$b = New-Object psobject -Property @{
    Name = "test2.txt"
    Age = 5
}

$myarray = @()

$myarray += $a
$myarray += $b

Return $myarray

如何从 Get-ChildItem (或类似的提供列表的东西)到对象数组或类似的东西?

请注意,这与 Get-ChildItem 无关,它仅用作输出列表的示例。

4

1 回答 1

7

应该这样做:

$arr = Get-ChildItem | Select-Object Name,Length
return $arr

如果由于某种原因它不起作用,请尝试将数组嵌套在一个数组元素中(使用逗号运算符)

return ,$arr
于 2013-06-03T13:18:14.507 回答