Ошибка при назначении переменной в запланированном задании - PullRequest
0 голосов
/ 22 октября 2018

У меня есть 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))))

Что дает?

1 Ответ

0 голосов
/ 22 октября 2018
# using cmd.exe
powershell.exe -Command "& {$credential = Import-CliXml -Path ${env:\userprofile}\token.Cred}"
# using powershell, escape special characters
Start-Process powershell.exe -ArgumentList "-Command `"& {`$credential = Import-CliXml -Path `${env:\userprofile}\token.Cred;pause}`""
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...