Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reflection Powershell是否有一个;“评估”;相等的是否有更好的方法查看属性和值列表?_Reflection_Powershell - Fatal编程技术网

Reflection Powershell是否有一个;“评估”;相等的是否有更好的方法查看属性和值列表?

Reflection Powershell是否有一个;“评估”;相等的是否有更好的方法查看属性和值列表?,reflection,powershell,Reflection,Powershell,我正在做一点Powershell脚本编写(这是第一次)来查看Sharepoint网站中的一些内容,我想做的是浏览对象的属性列表,并以“property name=value”的格式输出它们的值 现在,我可以使用以下内容找到元素列表: $myObject | get-member -membertype property 它将以非常清晰易读的方式返回所有属性的列表。但我需要的是为这些属性找到一个值 在一些脚本语言中,我可以有一种eval($myObject.$propertyName)调用——我

我正在做一点Powershell脚本编写(这是第一次)来查看Sharepoint网站中的一些内容,我想做的是浏览对象的属性列表,并以“property name=value”的格式输出它们的值

现在,我可以使用以下内容找到元素列表:

$myObject | get-member -membertype property
它将以非常清晰易读的方式返回所有属性的列表。但我需要的是为这些属性找到一个值

在一些脚本语言中,我可以有一种eval($myObject.$propertyName)调用——我从get成员输出中提取了$propertyName——并让它将字符串作为代码进行计算,这对于我需要的快速而肮脏的解决方案来说是很好的


这是否存在于Powershell中,或者是否有更方便的方法?我应该改用反射吗?

要获取对象属性的值,可以使用几种方法

首先,可以使用Select对象并使用-Property参数指定要返回的属性值。其显示方式将取决于指定的特性数量和对象类型。如果需要所有属性,可以使用通配符(*)获取所有属性

范例-

$myobject | Select-Object -Property name, length
$myobject | Select-Object -Property *
$myobject | Format-List -Property *
$myobject | Format-Table -Property name, length
您还可以使用“格式列表”或“格式表”以类似的方式控制输出的格式

范例-

$myobject | Select-Object -Property name, length
$myobject | Select-Object -Property *
$myobject | Format-List -Property *
$myobject | Format-Table -Property name, length
最后,要进行“eval”样式的输出,只需键入

$myobject."$propertyname" 

属性的值将被返回。

对于您来说,最好的选择是
格式自定义

get-date | Format-Custom -Depth 1 -Property * 
get-childitem . | select-object -first 1 | Format-Custom -Depth 1 -Property *
它可能太冗长,但很有用;)


或者您可以真正使用
Get Member

$obj = get-date
$obj | 
   gm -MemberType *property | 
   % { write-host ('{0,-12} = {1}' -f $_.Name, $obj.($_.Name)) }

为此,我建议使用格式列表-强制,例如:

Get-Process | Format-List * -Force

-强制是可选的,但有时PowerShell会隐藏我真正想看到的属性。

我认为您甚至可能会丢失最后一段代码中的引号:$myobject.$propertyname它看起来很奇怪,但很有效。