2011-04-19 7 views
2

원격 컴퓨터에서 PS 스크립트를 실행해야하는데 아래 코드에서와 같이 수행해야합니다.PSTool을 사용하여 원격 컴퓨터에서 PowerShell 스크립트 실행

Process psExecer = new Process 
      { 
       StartInfo = 
       { 
        UseShellExecute = false, 
        CreateNoWindow = false, 
        WindowStyle = ProcessWindowStyle.Hidden, 
        FileName = @"c:\PsTools\PsExec.exe", 
        Arguments = @"c:\windows\System32\cmd.exe /k c:\windows\System32\WindowsPowerShell\v1.0\powershell.exe E:\Scripts\SetUP.ps1 -u super -p Pass -s"   
       } 
      }; 

      psExecer.Start(); 
      psExecer.WaitForExit(); 
      Thread.Sleep(5000); 

문제는 스크립트에 일부 sharepoint cmdlet이 있으며 공유 지점 PSSnapin을로드해야한다는 것입니다. 스크립트는 Powershell의 64 비트 이미지에서 실행될 때만 제대로 실행됩니다.

PSTool을 사용하여 실행하려고하면 PSTool은 코드에 표시된대로 명시 적으로 경로를 언급했지만 항상 % windir % \ SysWoW64 폴더에서 32 비트 PowerShell을 호출합니다. 그렇게, 내 문제에 대한 해결책

감사합니다 것입니다 왜

, 이름 : Jeez

+0

그냥 궁금한데 왜'cmd'를로드 한 다음'powershell'을 직접 실행하지 않고'powershell'을로드해야합니까? –

+0

powershell을 직접로드하면 같은 오류가 발생하므로 많이 사용하지 않은 cmd를 사용하여로드를 시도했습니다. – JeeZ

+0

필자는 오타라고 가정하고 있지만 64 비트 버전의 powershell을 실행해야한다고 말한 후 ' System32'. 혼란이 없는지 확인하기 위해 질문을 업데이트 할 수 있습니까? –

답변

2

때 32 비트 응용 프로그램을 참조합니다 C : 그것은 SysWOW64와

시도로 리디렉션 것 SYSTEM32 \ \ WINDOWS c : \ windows \ sysnative \ windowspowershell \ v1.0 \ powershell.exe

+0

Jako 당신 말이 맞아요. PsTool이 32 비트 응용 프로그램이기 때문에 항상 32 비트 powershell이 ​​호출되고 있었기 때문에이 문제에 직면했습니다. 정보에 대해 감사드립니다. – JeeZ

1

당신이 부르는 문제는 UAC로 인한 프로세스 가상화의 부작용입니다.

여기에 세 가지 솔루션은 다음과 같습니다

1. 대상 컴퓨터에서 UAC를 제거

2. WinRM을 당신이 원격 Windows 2008 R2와 같은 목표에 PowerShell 스크립트를 실행하려면

Windows 7을 사용하는 가장 좋은 방법은 WSMan을 사용하는 것입니다. about_Remote Help를 PowerShell에서 사용하는 것입니다.

3. 시도는, 가상화를 방지하려면 가상화를 제거하고자하는 EXE 파일과 같은 디렉토리에 매니페스트를 추가하려면 원격 컴퓨터

에 호출하는 과정에서 가상화를 제거합니다. 매니페스트는 yourexename.exe.manifest이라는 XML 파일입니다. You can find in this site a manifest sample. requestedPrivilegesasInvoker으로 설정하십시오.

관련 문제