2017-07-20 20 views
1

Powershellを使用してカスタムタスクを開発しようとしていますが、Start-Job -Credを使用して場所の別のユーザーに切り替える必要があります。エージェントはユーザーAとして実行されており、ユーザーBに切り替える必要があります。ユーザーAとしてエージェントを実行しているサーバーにログインしてからスクリプトを実行すると、Start-Jobは資格情報を切り替え、スクリプトブロックをユーザーBとして実行します。カスタムタスクの問題の資格情報を持つスタートジョブ

利用者Aが情報価値エラーで失敗したように、エージェントを実行している同じ(オンプレム)エージェントサーバを使用して、クラウドにVSTSからまったく同じことを実行する:

"The background process reported an error with the following message: ." 

私はより多くのデバッグを行っているし、他のエラーはありませんメッセージはどこにでもあります。 -CredパラメータはStart-Jobに関連しているようですが、それはスクリプトブロックの実行に何の違いもなく、-Credパラメータを削除しても問題ありません。 Aは

  • エージェントを、エージェントを実行しているサーバーの管理者へのグループである

    • ユーザーは、ユーザー

    として任意のアイデアを実行しますか?

  • +0

    try/catchブロックでコードをラップしてみて、エラーがシェルに報告されているかどうかを確認します。コマンドの最後に '-EA Stop 'を必ず追加してください。あなたのキャッチブロックでは、 'Write-Output"を使うことができます。$($ _。Exception.Message) "' – TheIncorrigible1

    +0

    既に試してみました。私が言及したものより有益な誤り。このエラーは、 'Start-Job | 'の' Receive-Job'によって引き起こされたようです。ウェイト・ジョブ|なんらかの理由で 'Start-Job'が失敗したために' Receive-Job'が発生しました。 – PLK

    +0

    実行ポリシーはクラウドデバイスと同じですか? – TheIncorrigible1

    答えて

    1

    には、例えば、Invoke-Commandコマンドで(出力電流ユーザー名)を試してみよう:

    $mypwd = ConvertTo-SecureString -String "[password, could use variable]" -Force -AsPlainText 
    $Cred = New-Object System.Management.Automation.PSCredential('[user name]',$mypwd) 
    $scriptToExecute = 
    { 
    $VerbosePreference='Continue' 
    Write-Output "$env:UserName" 
    # Write-Verbose "Verbose" 4>&1 
    } 
    $b = Invoke-Command -ComputerName localhost -ScriptBlock $scriptToExecute -Credential $Cred 
    Write-Output "Content of variable B" 
    Write-Host $b 
    
    +0

    あなたは正しかった - この作品、多くのありがとう。なぜこれは働いたのですが、Start-Jobはそうではありませんか? – PLK

    +0

    @PLK申し訳ありませんが、わかりません。 –

    0

    あなたの経験に基づいて、資格情報が正しく渡されていません。この方法を試してみて、あなたのスクリプトにそれを挿入します。スクリプトの外側

    、取得securestringオブジェクト -

    Read-Host -AsSecureString | ConvertFrom-SecureString 
    

    (パスワードを入力)このコマンドの出力を取り、前にそれを置くあなたの開始-job-問題ではありませんので、その後、

    $Secure = ConvertTo-SecureString -String 'above output' 
    $Cred = New-Object System.Management.Automation.PSCredential('Username',$Secure) 
    Start-Job -Credential $Cred 
    

    SecureString ノウハウを持つ人によって逆転させることができるが、スクリプトおよび/またはアカウントが安全である場合。

    +0

    うーん、私はそれをすることはできません、スクリプト内からすべてが来る必要がありますが、私はプレーンテキスト(安全なパスワードボールトなどから取得したもの)から安全な文字列に変換し、 '$ Cred '言及。 – PLK

    +0

    @PLK ConvertTo-SecureStringコマンドレットを使用してプレーンテキストを変換していますか? – TheIncorrigible1

    関連する問題