这个问题有点被问到here,但是@Andy Arismendi提到的"逗号技巧"对我来说并不起作用。
简而言之,我有一个函数可以读取包含安全字符串的文本文件:
function Get-StoredCredential
{
param([string]$username)
<snip>..</snip>
$Password = $credFile | ConvertTo-SecureString -Key $key
$oCred = New-Object -TypeName System.Management.Automation.PSCredential($UserName, $Password)
$oCred.GetType()
$oCred
}
在函数内部,$ oCred.GetType()返回:
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True PSCredential System.Object
然而,在函数之外调用它是这样的:
$a = Get-StoredCredential -UserName "john" -Verbose
$a.gettype()
返回一个对象类型:
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
在我想要使用凭证对象的函数中,我需要调用.GetNetworkCredential()。由于这种明显的类型更改而被剥离的密码。
有什么建议吗?
TIA。
P.S。 PowerShell 5.0
更新
PS C:\> $a.Length
2
PS C:\> $a[0]
MYDOMAIN\john
PS C:\> $a[1]
UserName Password
-------- --------
MYDOMAIN\john System.Security.SecureString
PS C:\> $a[2]
PS C:\>
答案 0 :(得分:2)
这是您对$oCred.GetType()
的调用,这是第一个被返回的对象。凭证是第二个。暂停$oCred.GetType()
,因为这是不必要的。如果您需要该信息,请在详细信息流中发送:
$oCred.GetType() | Write-Verbose
# or
$oCred.GetType() | Out-String | Write-Verbose