2016-07-25 3 views
0

C# 프로그램에 PowerShell 기능을 추가하고 system.managment.automation.dll 어셈블리를 참조로 포함했습니다.system.managment.automation을 사용하는 Powershell 스크립트는 C# 호스트가 죽은 후에도 계속 실행됩니까?

  • 사용하여 실행 영역 :

  • 하지 사용하여 실행 영역 : this website에 따르면

    PowerShell powerShell = PowerShell.Create(); 
    powerShell.AddScript("my script"); 
    powerShell.Invoke(); 
    

I에 유래에 C#을에서 PowerShell을의 scrit를 호출하는 두 가지 방법을 발견했다 , Powershell 인스턴스가 C# 호스트에 묶여있는 것처럼 보입니다.

Powershell 런타임은 기본적으로 명령을 동기식으로 처리하고 처리 결과를 호스트 응용 프로그램에 전달하여 사용자에게 반환 할 수 있도록합니다. 스크립트가 논리적으로는 C#을 호스트와 중지 할 수 있도록

또한, PowerShell 스크립트가 포함 된 system.managment.automation.dll 조립이 아닌 시스템 전체를 사용합니다.

사용자가 내 프로그램을 닫은 후에도 Powershell 스크립트가 계속 실행됩니까? 두 가지 방법은 어떻게됩니까?

추신 : PowerShell v2를 지원하고 싶습니다.

+0

'powerShell = PowerShell.Create()'및'powerShell.Invoke()'를 실행하면 암시 적으로 runspace가 생성됩니다. 이 런 공간은 호스트 응용 프로그램 –

+0

로 "죽습니다."두 가지 방법이 동일하므로 첫 번째는 두 번째 방법의 축약 버전입니까? – cgcmake

+0

첫 번째 코드는 덜 간결하지만 (더 자세한 코드), 그렇습니다. 그들은 동일합니다. –

답변

0

는의 역방향 연대기이를 보자 :

어떤 두 가지 방법에 대한 있습니까?

는 "하지 사용하여 실행 영역"에 의해 파워 쉘 코드를 실행하는 것과 같은 것은 없습니다. 이름에서 알 수 있듯이 실행 영역이있는 파워 쉘 코드 실행의에서 공간입니다 -

간단한 설명은 실행 영역은 핵심 전제 조건이라는 것이다.

당신이 할 경우 :

PowerShell powerShell = PowerShell.Create() 

실행 영역이 내재적으로 작성하고 PowerShell을 인스턴스에 연결되어 있습니다.

유일한 차이점은 Runspace 생성에 대한 제어를 직접 인스턴스화하는 대신 System.Management.Automation API로 연기하는 것입니다.

사용자가 내 프로그램을 닫은 후에도 Powershell 스크립트가 계속 실행됩니까? 당신이 즉 원격 실행 영역에 연결할 때

스크립트가 호스트 응용 프로그램이 종료 된 후 실행 을 계속하는 아래 유일한 상황이 될 것입니다.다른 프로세스 또는 다른 컴퓨터에서 호스팅되는 실행 공간

그렇지 않으면 종료 할 때 나머지 호스트 응용 프로그램과 함께 실행 영역 (암시 적 또는 비공유)이 삭제됩니다.

+0

프로그램이 죽은 후에도 PowerShell 스크립트를 계속 수행 할 수있는 방법이 있습니까? (아마 호스트에서 PowerShell.exe를 호출하는 것입니까?) – cgcmake

+0

여러 옵션. 작업을 예약하고,'powershell.exe' 등을 실행하십시오. 정확하게 달성하려는 것은 무엇입니까? –

+0

GUI를 통해 사용자가 지정한 디렉토리에서 파일/폴더가 작성/삭제되었음을 사용자에게 경고합니다. 그러나 이것은 프로그램의 기능 중 하나 일 뿐이며 사용자가 프로그램을 종료하기 때문에이 디렉토리를 보지 않으려합니다. BTW 나는 새로운 아이디어를 가지고 있습니다 : 새로운 프로세스를 만드는 것인가? – cgcmake