【问题标题】:Using a Powershell noteproperty as a text string in a variable使用 Powershell noteproperty 作为变量中的文本字符串
【发布时间】:2014-05-15 15:49:20
【问题描述】:

我使用 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"

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

非常感谢任何帮助

【问题讨论】:

    标签: powershell pscustomobject


    【解决方案1】:

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

    $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" }
    

    【讨论】:

    • 已经搞定了,谢谢。我想我盯着这个看太久了!
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-03-10
      • 1970-01-01
      • 2021-05-15
      • 2011-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-27
      • 1970-01-01
      相关资源
      最近更新 更多