0
在创建vm后,我运行运行powershell脚本的Azure自定义脚本扩展。因此,该脚本执行一些基本任务,如创建共享创建一些文件并创建一个PowerShell脚本并将其存储在虚拟机上。自定义虚拟机扩展脚本中的最后一步我试图设置一个任务计划程序作业来调用上面创建的powershell脚本,并且脚本应该以扩展名结束。尝试使用Azure自定义脚本扩展运行后台作业或PowerShell任务调度程序
问题是扩展卡在运行状态并永不停止。我编写了一个日志来了解脚本的进度,并显示脚本通过了整个脚本,但它仍然处于运行状态,并且任务计划程序脚本不能运行该任务。
当我手动登录vm时,我手动运行脚本并且工作正常。所以我不确定是什么导致它挂起以及它是以什么用户身份运行的vm扩展名。我尝试运行powershell后台作业而不是调度程序,并得到了上述相同的症状。 下面的代码是任务计划程序,我尝试运行vm自定义扩展,当尝试通过自定义扩展设置它时无法正常工作,但从vm手动设置运行良好。
$jobname = "MasterFileWatcher"
$script = "c:\test\MasterFileWatcher.ps1"
$repeat = (New-TimeSpan -Minutes 1)
$action = New-ScheduledTaskAction –Execute "$pshome\powershell.exe" -Argument "$script; quit"
$duration = ([timeSpan]::maxvalue)
$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date).Date -
RepetitionInterval $repeat -RepetitionDuration $duration
$msg = "Enter the username and password that will run the task";
$credential = $Host.UI.PromptForCredential("Task username and
password",$msg,"$env:userdomain\$env:username",$env:userdomain)
$username = $credential.UserName
$password = $credential.GetNetworkCredential().Password
$username = "$env:userdomain\testuser"
$password = "testpass"
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -StartWhenAvailable -RunOnlyIfNetworkAvailable -DontStopOnIdleEnd
Register-ScheduledTask -TaskName $jobname -Action $action -Trigger $trigger -RunLevel Highest -User $username -Password $password -Settings $settings
我不知道你是如何想到这个脚本扩展,以便填写密码为你 – 4c74356b41
的这部分运行代码被注释掉了,我想当我在这里粘贴代码时,它将注释部分取出。现在我已经很难对密码进行硬编码了。 #$ msg =“输入将运行任务的用户名和密码”; #$ credential = $ Host.UI.PromptForCredential(“Task username and password”,$ msg,“$ env:userdomain \ $ env:username”,$ env:userdomain) #$ username = $ credential.UserName #$ password = $ credential.GetNetworkCredential()。Password#> – JonnyD