2017-01-30 1 views
1

cmd에서 script1 powershell에있는 Method1을 실행하려고합니다. Method1는 몇 시간이 걸릴하는 방법이며, 단순히 다음이다 나를 위해 어떤 작업cmd에서 powershell 메서드를 실행하고 반환을 기다리지 마십시오.

을 파이어 앤 포겟 원하는 : 내가 할 때 모든 위의 라인을 잘 한 노력

c:\temp>powershell 
PS c:\temp>. .\script1.ps1;Method1 

나는 PS의 CMD를 열어 두었다. PS 창을 닫으면 Method1이 죽습니다.

그래서 실제로 내가 원하는 cmd를에서 taht를 어떻게 든 어쩌면

내가 해봤 정말로 확실하지 .. 새로운 프로세스를 만듭니다 PS 창의 의존하지 않고 Method1 작품을 만들기 위해, 한 줄에서, 이다

c:\temp>cmd /c powershell . .\script1.ps1;Method1 
그것은 몇 초 동안 실행

하지만 cmd를이 닫히고을 얻을 때, Method1보다도 종료

또한

시도3210
c:\temp>cmd /c powershell -noexit "& { . .\script.ps1;Method1 }" 

다시 말하지만, 나는 그것이 작동하고이 작업을 수행하면 그러나 PS 창이 열립니다 나는 닫을 경우는 종료보다 Method1

편집 도움이에서, 나는 시도했다 :

c:\temp>cmd /c powershell start-process cmd /c powershell . .\script1.ps1;Method1 

하지만 점점 예외 :

Start-Process : A positional parameter cannot be found that accepts argument 'powershell'.

하지만 여전히, 내가 할 수없는 t 작업

+0

작동 여부 – 4c74356b41

답변

1

당신은 그래서 그냥, 그것을 위해 파워 쉘 채용 정보를 사용할 수 있습니다

Start-Job -FilePath somepath 

를하고 스크립트의 끝에 메서드 호출을 추가하거나 같은 스크립트 블록에 전달합니다

Start-Job -ScriptBlock {. .\path_to_ps1; Method1} 

또는 아마 hackish를 사용하십시오 :

start-process cmd -WindowStyle Hidden -ArgumentList "'/c powershell . .\script1.ps1;Method1'" 

실제로, 당신은 CMD를 사용하지 않고 Powershell을 시작할 수 있습니다. pproach :

Invoke-Command LocalHost -Scriptblock $script -InDisconnectedSession 

InDisconnectedSession 스위치는 종료되지 않습니다 별도의 PowerShell 세션에서 실행 : 또는

start-process powershell -WindowStyle Hidden -ArgumentList ". .\script1.ps1;Method1" 
+0

마지막 답변을 찾고 있는데 cmd에서 실행하려고합니다. 시작 프로세스를 호출하는 방법은 무엇입니까? – user829174

+0

당신이 무엇을 묻고 있는지 확실하지 않아서 powershell 창에 붙여 넣으십시오. – 4c74356b41

+0

일단 PS에 붙여 넣으면 오류가 발생합니다. 앰퍼샌드가 허용되지 않습니다. & 연산자는 나중에 사용할 수 있도록 예약되어 있습니다. "&"를 사용하여 앰퍼샌드를 문자열로 전달하십시오. – user829174

1

당신은 순수 PowerShell을 용액 (이 관리자로 실행해야 할주의)을하려는 경우 PowerShell 창을 닫을 때. Get-PSSession을 사용하고 세션을 Enter-PSSession으로 전달하여 실행 도중 또는 실행 후 상호 작용할 수 있습니다. 창을 닫을 때이 상태를 기억하십시오. 죽이기 때문에 죽이지 않으므로 Exit-PSSession을 사용하면됩니다.

그러나 문제가 있습니다. 최소한 쉽게 원격 작업을 수행 할 수는 없습니다. 이로 인해 한 컴퓨터 (이 경우 자신의 컴퓨터)와 원격으로 연결되어있는 다른 컴퓨터로 "이중 홉"이 발생하고 보안을 위해 PowerShell은 두 번째 원격 세션에 자격 증명을 전달하지 않으므로 심지어 연결할 수 없습니다 자격 증명을 수동으로 입력해야합니다. 원격 작업을 수행해야하는 경우 숨겨진 PowerShell 프로세스를 시작하는 것이 좋습니다.

관련 문제