У меня есть XML-файл, содержащий имя пользователя и зашифрованный пароль (идентификатор доступа и ключ для API).Используя следующую строку, я получаю учетные данные:
$Credential = Import-CliXml -Path "${env:\userprofile}\token.xml"
Это прекрасно работает в оболочке, но мне нужно запланировать эту команду (вместе со сценарием, который использует кредит).В запланированном задании я запускаю powershell.exe и передаю в качестве аргумента следующее:
-Command "& $credential = Import-CliXml -Path ${env:\userprofile}\token.Cred"
Но я получаю сообщение об ошибке:
& : The term 'System.Management.Automation.PSCredential' is not recognized
as the name of a cmdlet, function, script file, or operable program. Check
the spelling of the name, or if a path was included, verify that the path
is correct and try again.
At line:1 char:3
+ & System.Management.Automation.PSCredential = Import-CliXml -Path C:\ ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (System.Manageme...on.PSCredential:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Я пробовал несколько вариантов, включая:
-Command (& $credential = Import-CliXml -Path ${env:\userprofile}\token.Cred)
-Command ($credential = Import-CliXml -Path ${env:\userprofile}\token.Cred)
-Command "$credential = Import-CliXml -Path ${env:\userprofile}\token.Cred"
Но я получаю ту же ошибку.Мне нужна переменная, потому что я собираюсь также запустить следующее (в том же действии):
.\script.ps1 -AccessId $Credential.UserName -AccessKey ((System.Runtime.InteropServices.Marshal::PtrToStringAuto(System.Runtime.InteropServices.Marshal::SecureStringToBSTR($Credential.Password))))
Что дает?