소유자가 procs를 가져와야합니다. 아래 내 데모 스크립트는 먼저 로컬, 다음은 같은 일을 할 것입니다 소유자가 발동을 찾을 것입니다,하지만 같은 상자에 명령을 호출 :Powershell : "GetOwner"예외 호출 : 작업으로 호출 할 때 "찾을 수 없음"
cls
write-host 'LOCAL CALL: '
$procs = @(Get-WmiObject win32_process |? {($_.getowner().user -eq 'APP_ACCOUNT') })
write-host $procs.count
$func = {
$procs = @(Get-WmiObject win32_process |? {($_.getowner().user -eq 'APP_ACCOUNT') })
write-host $procs.count
}
write-host 'REMOTE CALL: '
$session = New-PSSession -ComputerName 'SERVER'
$job = Invoke-Command -Session $session -ScriptBlock $func -AsJob
Wait-Job -Job $job
$job | Receive-Job
$job | Remove-Job
Remove-PSSession -Session $session
내 스크립트에 오류가 그것을 실행할 때 대부분의 시간 다음과 같은 출력 :
LOCAL CALL:
38
REMOTE CALL:
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
26 Job26 RemoteJob Completed True SERVER ...
Exception calling "GetOwner" : "Not found "
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : WMIMethodException
+ PSComputerName : SERVER
38
그래서 첫 번째 38은 로컬로 실행 소유자에 대한 발견 발동의 수입니다. 두 번째 시간에도 38을 찾았지만 getowner를 호출하는 데 오류가 발생했습니다. 나는 그것이 처음 일한 이유를 이해하지 못한다. 명령을 호출 할 때 어떤 종류의 "거품"으로 작동합니까? 내 큰 스크립트에서는 작업 상태가 실패로 돌아가고 동일한 오류가 발생하더라도 실행이 중단되므로이 문제가 더 심각한 문제로 나타납니다. 하나의 문제는 한 번에.
다보르 하나 개 여기에 조각 혼란이를 : 당신은 –
@JustinHolbrook _ 나는 getowner 호출에 get-wmiobject 권한의 결과를 파이핑하므로 무시할 수없는 지연이 예상됩니다 ._' Get-WmiObject win32_process'의 내부 작업에 대해서는 확신 할 수 없습니다. 파이프를 시작하기 전에 프로세스 목록을 캐싱 할 수도 있습니다. 어쨌든, 당신은 항상 프로세스와 getowners를 기록 할 수 있습니다. 나는 어떤 프로세스가이 오류를 일으키는 지 알게되면 많이 배울 것이라고 생각합니다. 나는 당신의 연구 결과에 호기심을 갖고 있습니다. –
나는 그 오류에 대한 범인 인 내 프로세스가 아닌 것을 깨달았다. 나는 모든 프로세스가 getowner에게 piping하는 중이다. 원격으로 호출하면 시간이 오래 걸리기 때문에 일부 프로세스가 종료되는 데 충분한 지연이 발생할 수 있습니다. 이것은 제가 관심을 가지고있는 프로세스의 수를 일정하게 유지하는 이유를 설명합니다. –