Этот вопрос задан here, но «comma trick», упомянутый @Andy Arismendi, не работает для меня.Возврат [System.Management.Automation.PSCredential] из функции
Короче у меня есть функция, которая считывает текстовый файл, содержащий защищенную строку:
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
Update
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:\>
Что такое '$ a.Length' после запуска функции? IMHO, проблема в ' .. ' часть вашего кода. –
PetSerAl
$ a.Length возвращается 2. .. просто показывает, что в функции больше вещей. Не имеет отношения к вопросу. –
woter324
Если '$ a.Length' возвращает 2, значит, ваша функция возвращает 2 элемента. Объект 'PSCredential' будет последним:' $ a [1] ', но' $ a [0] ', скорее всего, возвращен * нерелевантным * кодом. – PetSerAl