我使用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"
没有多少select-string或out-string等有帮助。脚本编写并不是我的强项,所以我不确定我是否正确地表达了我想要的内容 - 如果是这样的话,请道歉!
非常感谢任何帮助
答案 0 :(得分: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" }
答案 1 :(得分:0)
我会推荐使用$output | select *,@{n='test';e={[string]$_.test}}
-排除属性测试
如果排除未激活,它将抱怨它已经存在。通常,对于这种简单的任务,我使用select表达式而不是psCustomObject
来实时处理数据