2014-06-24 74 views
0

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

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

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

而且在脚本的处理,值3为Get-凭据和提示用户输入凭据。

回答

0

对于像文件这样的位置尝试

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

+0

是属性,我当然可以这样做 - 除了当对象包含20+的属性,那就是令人费解。我有5个PSCredentials,其余的是我想要提取的其他对象类型,而无需手动处理每个属性。 –

2

使用select限制出现在输出特性:

$myObj | select -Property * -ExcludeProperty Value3 

请注意,您必须使用这里-Property *,否则-ExcludeProperty不会有任何影响。

0

会这样的帮助吗?

$array = <array of objects> 

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

$array | select $Props 

这应该选择出所有不属于凭据