2010-04-20 3 views
0

간단한 질문이지만 문제가 있습니다.AsJob을 실행하면 Get-WMIObject가 실패합니다.

$cred = Get-Credential 
$jobs = @() 
$jobs += Get-WmiObject ` 
-Authentication 6 ` 
-ComputerName 'serverName' ` 
-Query 'Select * From IISWebServerSetting' ` 
-Namespace 'root/microsoftiisv2' ` 
-EnableAllPrivileges ` 
-Credential $cred ` 
-Impersonation 4 ` 
-AsJob 

$joblist = Wait-Job -Job $jobs -Timeout 60 

foreach ($job in $jobs) 
{ 
    if ($job.State -eq "Completed") 
    { 
     $app = Receive-Job -Job $job 
     $app 
    } else { 
     ("Job not completed: " + $job.Name + "@" + $job.State + ". Reason:" + $job.ChildJobs[0].JobStateInfo.Reason) 
     Remove-Job -Job $job -Force 
    } 
} 

직접 실행하면 쿼리가 성공하고 -AsJob을 실행하면 실패합니다.

Reason:System.UnauthorizedAccessException: Access is denied. 

나는 어떤 유용한 효과 -Impersonation, -Credentials, -Authority 및 -EnableAllPrivileges와 jiggered했습니다. 나는 근본적인 무언가를 간과하고있는 것처럼 보입니다. Powershell 프롬프트가 원격 서버에 연결할 수 있지만 내 자식 프로세스가 거부 된 이유는 무엇입니까?

+0

Grrrrrrr-GLE>하는 데 도움이 - 서버에서 실행할 때/코드는 잘 실행됩니다. 예비 추측 : 내 트래픽을 가로 채고있는 방화벽이 있습니다. – codepoke

답변

1

PowerShell V2 원격으로 구성된 원격 컴퓨터 및이 컴퓨터에서 실행중인 컴퓨터가 있습니까?

참고 : 당신이 얻을-WmiObject를 대한 도움말을 보면이 다음 상태 원격 컴퓨터와이 매개 변수를 사용하려면, 로컬 및 원격 컴퓨터 원격 구성해야합니다. 또한 Windows V ista 이상의 Windows 버전에서 " 관리자로 실행"옵션을 사용하여 Windows PowerShell을 시작해야합니다. 자세한 내용은 about_Remote_Requirements를 참조하십시오.

+0

아. 나는 지금 본다. 직접 연결할 수 있었을 때 어떻게 든 인증 문제라고 생각했습니다. 실제로 PowerShell은 원격으로 명령을 실행하려고 시도하고 있습니다. 내가 일하는 200 개 이상의 상자 중 하나에 Enter-PSSession을 사용할 수 없으며 원격 작업을 구성 할 수 없습니다. 내 요청을 일괄 적으로 처리하여 동시에 여러 개의 로컬 세션으로 실행한다고 생각합니다. 지정된 환경 내에서 동일한 이점과 효과. 고마워, 제임스. – codepoke

0

표시되는 "액세스가 거부되었습니다"는 실제로 DCOM에서 발생합니다. -AsJob 및 WMI는 비동기 원격으로 알려진보다 효율적이고 효율적인 WMI 원격 양식을 사용합니다. 이 때문에 일부 추가 방화벽 구성을 변경해야합니다. 특히 Windows 방화벽 UI에서 "원격 관리 허용"이 필요하다고 생각합니다.

MSDN에이 문서는 자세히 설정을 설명합니다

Connecting to WMI Thru Windows Firewall

희망이

+0

"시작"고마워요. 99 % 확실하지만 Windows 방화벽은이 W2k3 서버에서 사용할 수 없습니다. 기본적으로 (귀하의 기사에 따라) 비활성화되어 있으며 내부 방화벽을 비활성화하는 정책이 있다고 생각합니다. 나는 월요일에 점검 할 수있다. 그러나 나는 이것이 그것이다고 생각하지 않는다. – codepoke

관련 문제