2016-12-22 11 views
0

私はこのextensionProfileと紺碧の仮想マシンのスケールのための配置テンプレートを持っているとして登録-ScheduledJobを実行することはできません。PowerShellスクリプトはAzureのリソースマネージャCustomScriptExtension

"extensionProfile": { 
    "extensions": [ 
     { 
     "name": "customScript", 
     "location": "[resourceGroup().location]", 
     "properties": { 
      "publisher": "Microsoft.Compute", 
      "type": "CustomScriptExtension", 
      "settings": { 
      "fileUris": [ 
       "[concat(parameters('customInstallScriptLocation'), parameters('customInstallScriptFileName'))]" 
      ] 
      }, 
      "typeHandlerVersion": "1.8", 
      "autoUpgradeMinorVersion": true, 
      "protectedSettings": { 
      "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File \"', parameters('customInstallScriptFileName'), '\" -adminUsername ', parameters('adminUsername'), ' -adminPassword ', parameters('adminPassword'))]" 
      } 
     } 
     } 
    ] 
    } 

カスタムスクリプトが実行されvmssを展開し、 Invoke-WebRequestやStart-Processなどのコマンドは問題なく動作します。しかし、Register-ScheduledJobは機能しません。リモートデスクトップに接続してこのインストールスクリプトを手動で実行すると、手動ですべて正常に動作します。

これは手動で実行していない時に失敗したコードです:

$trigger = New-JobTrigger -AtStartup -RandomDelay 00:00:45 
Register-ScheduledJob -Trigger $trigger -FilePath $installDir\natPuncherStartupScript.ps1 -Name NPSSOnStartup >> $log 
logAndClearErrors $true 

エラーは次のとおりです。

Register-ScheduledJob : An error occurred while registering scheduled jobdefinition NPSSOnInstall to the Windows Task Scheduler. The Task Scheduler error is: (32,4):UserId:. 

私も試してみました:

$trigger = New-JobTrigger -AtStartup -RandomDelay 00:00:45 
Register-ScheduledJob -Credential $credential -Trigger $trigger -FilePath $installDir\natPuncherStartupScript.ps1 -Name NPSSOnStartup >> $log 
logAndClearErrors $true 

しかし、今エラーショーユーザー名/パスワードが無効であることを確認してください。また、リモートデスクトップから手動でこれを実行する場合、これは正常に動作します。

私には何が欠けていますか?カスタムスクリプト拡張からジョブをスケジュールできないのはなぜですか?

+0

あなたは '登録-ScheduledJob'に' -Credential'を指定して、ARMのテンプレートを展開するとき、あなたはエラーになるだろうことを意味していますか? Credentialの$ credentialをどうやって取得しましたか? –

+0

'$ adminPasswordSecure = ConvertTo-SecureString $ adminPassword -AsPlainText -Force $ credential = New-Object System.Management.Automation。PSCredential($ adminUsername、$ adminPasswordSecure) ' – Maarten

+0

前のコメントのコードを使用して、資格証明オブジェクトを作成しました。$ adminUsernameと$ adminPasswordは、customScriptExtensionから渡されます。 – Maarten

答えて

0

あなたの説明によると、私はRegister-ScheduledJobを使って出会ったエラーを再現することができました。

Register-ScheduledJobについての公式文書から。

-Credential

は、スケジュールされたジョブを実行する権限を持つユーザーアカウントを指定します。デフォルトは現在のユーザーです。

この問題は、このスケジュールされたジョブを実行するユーザーアカウントによって引き起こされる可能性が高いと想定しました。いくつかの試行の後、私の側では期待どおりに動作し、スケジュールされたジョブはARMテンプレートを使用してAzure VMに登録できます。ここではコアコマンドを参照することができます。

$trigger = New-JobTrigger -AtStartup -RandomDelay 00:00:45 
$pwd= ConvertTo-SecureString “{your-vm-adminPwd}” -AsPlainText -Force 
$credential = New-Object System.Management.Automation.PSCredential (“{your-vm-adminName}”, $pwd) 
Register-ScheduledJob -Trigger $trigger -FilePath $installDir\start1.ps1 -Name bruceScheduledJob -Credential $credential -Authentication CredSSP 
+0

あなたの答えをありがとう。あなたのコードでは、それはまだcustomScriptExtensionからは機能しません。私は自分のVMのadminUsernameとパスワードを資格情報として使用しましたが、ドメイン名やコンピュータ名は使用しませんでした。私のインストールスクリプトがcustomScriptExtensionによって呼び出されたとき、 'whoami'コマンドはリモートデスクトップから' nt authority \ system'を返し、 'myDomain \ MyAdminUsername'を返します。 スクリプトは別のドメインのユーザーによって実行されるため、完全なユーザー名を指定する必要はありますか?もしそうなら、私はそれをどのように要求することができますか?私は仮想マシンスケーセットを導入しており、各仮想マシンには別の名前が付いています – Maarten

+0

私は公式の[チュートリアル](https://msdn.microsoft.com/en-us/powershell/reference/5.1/psscheduledjob/register- scheduled-job-example-4-create-scheduled-jobs-on-remote-computers)を使用して、リモートコンピュータ上のスケジュールジョブを作成する方法について説明します。パラメータ '-Authentication CredSSP'で' Register-ScheduledJob'を指定した後、スケジュールされたジョブを正常に登録できました。 adminUsernameについては、私は単一のユーザー名とユーザー名をコンピュータ名と組み合わせてテストしました。あなたはあなたの側でそれをテストすることができます。 –

-2

私は同じ問題での時間を過ごし、スクリプト内のユーザー/パスワード情報を提供したくなかったし、他のソリューションに失敗しました。このPowerScriptの行は最終的に(YourCommandバッチコマンドを実行)働いた:

&schtasks /create /tn YourTaskName /sc onstart /tr YourCommand /NP /DELAY 0001:00 /RU SYSTEM 
0

あなたはvmextensionはそれを登録したい場合は、それがLocalSystemアカウントでログインする必要があります。 「ユーザー名/パスワードが無効です」:

Register-ScheduledTask -TaskName $jobname -Action $action -Trigger $trigger -RunLevel Highest -User "System" -Settings $settings 

Stackoverflow link of this issue I had

関連する問題