Ошибка при запуске приложения из планировщика задач windows с использованием сценария Powershell на сервере Windows 2016 - PullRequest
0 голосов
/ 06 января 2020

Мне нужно запустить приложение с другой учетной записью пользователя учетной записи службы, и эта работа выполняется с помощью задания, созданного в планировщике задач Windows, который вызывает скрипт powershell, чтобы открыть приложение в качестве пользователя учетной записи службы. Проблема в том, что когда этот скрипт выполняется из планировщика задач, приложение никогда не запускается; Тот же скрипт отлично работает, когда я запускаю его отдельно.

Ниже код устанавливает задачу в планировщик задач.

$scriptPath = "C:\temp\SetupTask.ps1"
$action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "PowerShell.exe -executionpolicy bypass -noprofile -file $scriptPath 2>&1 > c:\\temp\\Setuptask.txt"
$principal = New-ScheduledTaskPrincipal -UserID "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest
$trigger = New-JobTrigger -AtStartup -RandomDelay 00:00:15
$settings = New-ScheduledTaskSettingsSet -MultipleInstances Queue
Register-ScheduledTask -TaskName "RunSetup" -Principal $principal -TaskPath "\test\setup" -Trigger $trigger -Action $action -Force -Settings $settings

Ниже приведен код, который выполняет планировщик задач - SetupTask.ps1 .

$timestamp = Get-Date
Write-Host "Setup Script Start at $timestamp"
Write-Host "Running Xapp"
& "C:\temp\RunXAppbyTask.ps1"
Unregister-ScheduledTask -TaskPath "test\setup" -TaskName "RunSetup" -Confirm:$false
$timestamp = Get-Date
Write-Host "Setup Script End at $timestamp"

Ниже приведен код для runXAppbyTask.ps1

 $username = "XXX-DDD" + "\service_account_user"
 $password = "YYYYYY"  
 $credentialsObject = New-Object System.Management.Automation.PSCredential -ArgumentList    @($username, (ConvertTo-SecureString -String $password -AsPlainText -Force))

  $XAPPExeName = "XAPP.Client.DesktopUI"  
  $XAPPPath = "C:\Program Files\XAPP\XAPPClient\" + $XAPPExeName + ".exe"

  try {
    $timestamp = Get-Date  
    Write-Host "Starting XAPP Application as $username at $timestamp"  
    Start-Process -FilePath $XAPPPath -Credential ($credentialsObject) #The aplication doesn't start up, this same script works fine when ran separately.
    Start-Sleep -s 60
    $timestamp = Get-Date
    Write-Host "Started XAPP Application as $username at $timestamp" 

    try {
      $Process = Get-Process $XAPPExeName  # Always fail to get the process since the process don't get started when called from the task scheduler
      Write-Host $Process.Id "-" $Process.Name
      if (!($Process.HasExited)) {
        Stop-Process -Name $Process.Name -Force
      }
    }
    catch {
      write-host "Error Closing the XAPP Application."
    }
    }
    catch {
    write-host "Error Starting the XAPP Application."  
  }

Я сделал go по следующим ссылкам, которые, как мне кажется, вызывают подобные проблемы, но я не смог найти решение этой проблемы. Пожалуйста, обратите внимание, что не генерируется ошибка, скрипт просто запускается успешно, но приложение никогда не запускается. Любая помощь здесь будет высоко оценена. Заранее спасибо.

Нить-1

Нить-2

1 Ответ

0 голосов
/ 06 января 2020

Похоже, что для выполнения вашей задачи требуется повышенное разрешение, так как я вижу, что вы пытаетесь получить доступ к C:\Program Files\XAPP\XAPPClient\

Можете ли вы попробовать запустить задачу windows с самыми высокими привилегиями? Вы можете сделать это, установив флажок в параметрах безопасности

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...