访问powershell属性,名称中包含空格

时间:2017-03-04 11:05:35

标签: powershell skype-for-business

我有以下内容:

$test = Test-CsWebScheduler -TargetFqdn "pool.int.contoso.com"
Write-Output $test

Target Fqdn   : pool.int.contoso.com
Target Uri    : https://pool.int.contoso.com/Scheduler/
Result        : Failure
Latency       : 00:00:00
Error Message : Scheduling conference at
                https://pool.int.contoso.com/Scheduler/Handler/WebSchedulerHandler.ashx failed
                with status Failure.

Diagnosis     :

现在的问题是:

如何访问“错误消息”,“目标Uri”或“目标Fqdn”?我可以通过以下方式访问结果:

Write-Output $test.result
Failure
没有问题,但由于其他人在其中有空间,我还没有找到一种方法来访问它们。我尝试了以下(找到here):

Write-Output $test."Target Uri"

Write-Output $test.{Target Uri}

我也尝试了以下内容:

$test | Select-Object -Property "Target Uri"

Write-Output ($test."Target Uri")

或非常简单:

$test."Target Uri"

但是这不起作用,我没有得到一个值(也没有错误)。我得到的唯一错误信息是我使用时:

$test | select -ExpandProperty "Target Uri"

select : Property "Target Uri" cannot be found.
At line:1 char:9
+ $test | select -ExpandProperty "Target Uri"
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (Microsoft.Rtc.S...s.WebTaskOutput:PSObject) [Selec
   t-Object], PSArgumentException
    + FullyQualifiedErrorId : ExpandPropertyNotFound,Microsoft.PowerShell.Commands.SelectObjectCom
   mand

有没有人知道我如何访问它(没有将其转储到临时文件并解析它)?

更新01:

这里要求的是$ test |的输出克

$test | gm

   TypeName: Microsoft.Rtc.SyntheticTransactions.WebTaskOutput

Name           MemberType Definition
----           ---------- ----------
Equals         Method     bool Equals(System.Object obj)
GetHashCode    Method     int GetHashCode()
GetType        Method     type GetType()
ToString       Method     string ToString()
Diagnosis      Property   string Diagnosis {get;}
Error          Property   string Error {get;}
Latency        Property   timespan Latency {get;}
Result         Property   Microsoft.Rtc.SyntheticTransactions.ResultStatus Result {get;}
TargetFqdn     Property   string TargetFqdn {get;}
TargetUri      Property   string TargetUri {get;}
WorkflowLogger Property   Microsoft.Rtc.SyntheticTransactions.Logging.SyntheticTransactionsWorkf...

3 个答案:

答案 0 :(得分:0)

将$ test变量传递给get-member

时看到
$test | gm

提供的输出显示Target URI属性实际上是一个单词,因此只需使用以下内容即可在您的脚本中使用。

$test.TargetUri

答案 1 :(得分:0)

正如评论中所提到的:使用输出中看到的“名称”并不意味着它们与实际属性名称相同。但是,使用Get-Member (or the short abbreviation GM)可以检查存储在变量中的实际属性名称。

所以使用

$test | gm

$test | Get-Member

表明“目标Uri”是“TargetUri”:

[...]
TargetUri      Property   string TargetUri {get;}
[...]

所以使用:

$test.TargetUri

在这里解决了这个问题。

答案 2 :(得分:0)

尝试访问这样的值:

$test.PSObject.Properties["Target Uri"].Value