2012-09-13 3 views
0

실행 파일이 실행 중인지 확인하는 powershell 스크립트를 만들었습니다. 아무 것도하지 않으면 실행 중이 아니면 실행 파일을 실행하십시오. 앱을 서비스로 실행할 수 없기 때문에이 작업을 수행합니다. 마우스 오른쪽 jcon.ps1 클릭하고 PowerShell에서 실행을 클릭합니다 - 나는 Windows 탐색기를 통해 실행할 때 powershell invisible executable

jcon.ps1 

$Prog = "C:\Program Files (x86)\JCON\Edifact\edifact.exe" 
if (! (ps | ? {$_.path -eq $prog})) {& $prog} 

이 스크립트

작동합니다.

그러나 예약 된 작업을 통해 스크립트를 실행하면 문제가 발생합니다.

<?xml version="1.0" encoding="UTF-16"?> 
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task"> 
    <RegistrationInfo> 
    <Date>2012-09-06T10:35:07.1546685</Date> 
    <Author>BDPNT\jcon</Author> 
    </RegistrationInfo> 
    <Triggers> 
    <BootTrigger> 
     <Repetition> 
     <Interval>PT10M</Interval> 
     <StopAtDurationEnd>false</StopAtDurationEnd> 
     </Repetition> 
     <Enabled>true</Enabled> 
    </BootTrigger> 
    </Triggers> 
    <Principals> 
    <Principal id="Author"> 
     <UserId>BDPNT\jcon</UserId> 
     <LogonType>S4U</LogonType> 
     <RunLevel>HighestAvailable</RunLevel> 
    </Principal> 
    </Principals> 
    <Settings> 
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy> 
    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries> 
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries> 
    <AllowHardTerminate>true</AllowHardTerminate> 
    <StartWhenAvailable>false</StartWhenAvailable> 
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable> 
    <IdleSettings> 
     <StopOnIdleEnd>true</StopOnIdleEnd> 
     <RestartOnIdle>false</RestartOnIdle> 
    </IdleSettings> 
    <AllowStartOnDemand>true</AllowStartOnDemand> 
    <Enabled>false</Enabled> 
    <Hidden>false</Hidden> 
    <RunOnlyIfIdle>false</RunOnlyIfIdle> 
    <WakeToRun>false</WakeToRun> 
    <ExecutionTimeLimit>P3D</ExecutionTimeLimit> 
    <Priority>7</Priority> 
    </Settings> 
    <Actions Context="Author"> 
    <Exec> 
     <Command>"C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe"</Command> 
     <Arguments>-executionpolicy unrestricted -file "d:\script\jcon.ps1"</Arguments> 
    </Exec> 
    </Actions> 
</Task> 

"edifact.exe"가 실행되고 있지 않을 때이 코드를 실행하면 실행 파일이 시작되었지만 GUI가 표시되지 않습니다. 또한 사용자가 응용 프로그램이 제대로 작동하지 않는다고보고합니다. 그러나 실행 파일은 실행 중이지만 보이지 않는 GUI는 없습니다. 실행 파일은 프로세스로 실행 중입니다. 나는 그것을 작업 관리자에서 볼 수있다.

작업이 로컬 관리자로 실행 중입니다. 예약 된 작업을 통해 앱을 호출 할 때 GUI가 표시되지 않는 이유에 대한 아이디어가 있습니까?

 <Command>"C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe"</Command> 
     <Arguments>-executionpolicy unrestricted -file "d:\script\jcon.ps1"</Arguments> 

나는 이미 -windowstyle 최대 매개 변수를 시도하고 문제가 남아 있었다.

감사합니다.

+0

에 다음 XML에서는이 설정을 변경해야합니까? –

+0

예, BDPNT \ jcon. 또한 작업 로그는 성공적으로 실행되었음을 나타냅니다. – Datapimp23

답변

1

대화 형 창을 팝업하는 일부 powershell 예약 작업이 있습니다. 작업 스케줄러 UI에서 설정은 "사용자가 로그온 할 때만 실행"입니다. 작업 시작하면 로그인 한 동일한 로컬 관리자 사용자와 작업이 실행될 때 때

<LogonType>S4U</LogonType> 

<LogonType>InteractiveToken</LogonType> 
+0

당신이 맞습니다, 당신의 도움에 감사드립니다. – Datapimp23

관련 문제