1

我使用 Invoke-Restmethod 下载了一些数据,Powershell 将这些数据存储在 PSCustomObject 中的一个名为 data 的属性中。

我需要使用返回数据中一项的值作为另一个命令的变量。我已经设法选择对象 - 将我的方式扩展到 Get-Member 的以下输出:

Name        MemberType   Definition                    
----        ----------   ----------                    
Equals      Method       bool Equals(System.Object obj)
GetHashCode Method       int GetHashCode()             
GetType     Method       type GetType()                
ToString    Method       string ToString()             
id          NoteProperty System.Int32 id=999 

我需要做的是获取 ID noteproperty 的值 - 999 - 并将其作为字符串的一部分传递给新变量,例如:

$newVar = "sometext" + 999 + "moretext"

没有多少选择字符串或输出字符串等有帮助。脚本并不是我的强项,所以我不确定我是否正确地表达了我想要的东西——如果是这种情况,我深表歉意!

非常感谢任何帮助

4

2 回答 2

2

我不确定您的代码到底是什么样的,所以我从描述中创建了以下静态近似值:

$data = New-Object PSCustomObject
$data | Add-Member -Type NoteProperty -Name Id -Value 999
$restResponse = New-Object PSCustomObject
$restResponse | Add-Member -Type NoteProperty -Name data -Value $data

请澄清这是否不匹配。您可以按如下方式获取 Id 值

$restResponse.data.Id

将其分配给另一个变量

$newVar = "sometext" + $restResponse.data.Id + "moretext"
$newVar

如果您的 REST 响应是数据对象的集合,请遍历它们

$restResponse.data | Foreach-Object { "sometext" + $_.Id + "moretext" }
于 2014-05-15T16:24:07.513 回答
0

我会选择使用$output | select *,@{n='test';e={[string]$_.test}}-exclude 属性测试

如果排除未激活,它将抱怨它已经存在。大多数情况下,我使用 select 表达式来实时操作数据,而不是psCustomObject这样简单的任务

于 2019-10-28T12:35:02.927 回答