sách gpt4 ai đã đi

Powershell Pipeline - Trả về một đối tượng mới được tạo trong một pipeline

In lại 作者:行者123 更新时间:2023-12-05 09:26:06 32 4
mua khóa gpt4 Nike

我再次遇到同样的问题,我有我的默认处理方式,但它一直困扰着我。
有没有更好的办法?

所以基本上我有一个运行的管道,在管道内做一些事情,并想从管道内返回一个键/值对。
我希望整个管道返回一个类型为 psobject(或 pscustomobject)的对象。

这是我每次都这样做的方式。我在管道的开头创建了一个哈希表,并使用 .Add() 方法将管道内的键/值对添加到此哈希表。
之后,我通过将 hashtbale 传递给 New-Object 的 -Property 参数来创建一个 psobject。
这给了我想要的结果。

Get-Process | Sort -Unique Name | ForEach-Object -Begin { $ht = @{} } -Process {

# DO STUFF
$key = $_.Name
$val = $_.Id

# Add Entry to Hashtable
$ht.Add($key,$val)
}

# Create PSObject from Hashtable
$myAwesomeNewObject = New-Object psobject -Property $ht

# Done - returns System.Management.Automation.PSCustomObject
$myAwesomeNewObject.GetType().FullName

但这看起来有点笨拙,有没有更优雅的方法呢?

Giống như thế này:

[PSObject]$myAwesomeNewObject = Get-Process | Sort -Unique Name | ForEach-Object -Process {

# DO STUFF
$key = $_.Name
$val = $_.Id

# return Key/Val Pair
@{$key=$val}
}

# Failed - returns System.Object[]
$myAwesomeNewObject.GetType().FullName

不幸的是,这不起作用,因为管道返回了一个哈希表数组,但我希望你现在知道我正在努力实现什么。

Cảm ơn

1 Câu trả lời

不确定这是否更优雅,但只是另一种方式,它使用匿名函数,因此 $ht 在执行后将不再可用,并转换为 [pscustomobject] 而不是使用 New-Object:

[pscustomobject] (Get-Process | Sort -Unique Name | & {
begin { $ht = @{ } }
process {
# DO STUFF
$key = $_.Name
$val = $_.Id

# Add Entry to Hashtable
$ht.Add($key, $val)
}
end { $ht }
})

关于Powershell 管道 - 返回一个在管道内创建的新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74495144/

32 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com