从自定义PowerShell对象中提取对象类型

时间:2014-06-24 16:55:25

标签: powershell

如果我有一个带有int,boolean和PSCredential的自定义PowerShell对象,我需要能够将它们写到一个位置。最简单的解决方案是做一个foreach循环,但我需要以不同的方式对待PSCredential。在写出所有其他值时,如何从foreach中排除PSCredential?

自定义对象初始化类似于:

$myObj = [PSCustomObject]@{
  Value1 = [string]
  Value2 = [int]
  Value3 = $null}

此外,在处理脚本时,将Value3设置为Get-Credential,并提示用户输入凭据。

3 个答案:

答案 0 :(得分:2)

使用select限制显示输出的属性:

$myObj | select -Property * -ExcludeProperty Value3

请注意,必须在此使用-Property *,否则-ExcludeProperty将无法生效。

答案 1 :(得分:0)

对于像文件一样的位置,请尝试

"Value1 is {0}, Value2 is {1}" -f $myObj.Value1, $myObj.Value2 |out-file $someFileNameHere
或者我误解了你的问题?

答案 2 :(得分:0)

这样的事情有帮助吗?

$array = <array of objects>

$Props = $array[0].psobject.Properties |
Where { $_.TypeNameofValue -ne 'System.Management.Automation.PSCredential' } |
select -ExpandProperty Name

$array | select $Props

那应该选择所有非凭据的属性