Windows 2003, 2008 및 2008r2 서버가있는 네트워크가 있습니다. "Microsoft.Update"com 개체를 사용하여 로컬 컴퓨터를 패치하기 위해 작성한 powershell 스크립트가 있습니다. ( Windows Update PowerShell Remoting과 유사합니다 .) 스크립트는 로컬에서 훌륭하게 작동하지만 관리 할 서버가 많으므로 원격으로 해당 기능을 사용하고 싶습니다. 이 경우에는 해결되지 않은 다른 게시물과 유사하게 떨어집니다.
그러나 특정 클래스에서 두 가지 방법으로 실패 범위를 좁힐 수있었습니다.
(New-Object -ComObject "Microsoft.Update.Session").CreateUpdateDownloader()
(New-Object -ComObject "Microsoft.Update.Session").CreateUpdateInstaller()
Powershell에서 로컬로 관리자 권한으로 실행하면 아무런 문제가 없습니다. invoke-command (또는 enter-session 또는 winrs)를 사용하려고하면 다음 오류가 발생합니다. (이것은 localhost로 테스트 중이지만 모든 호스트가 수행합니다. credssp 및 kerberos와 같은 다른 인증 방법으로 시도했습니다.);
PS C:\> Invoke-Command -ComputerName localhost -ScriptBlock { (New-Object -ComObject "microsoft.update.session").createUpdateDownloader()}
Exception calling "CreateUpdateDownloader" with "0" argument(s): "Access is denied. (Exception from HRESULT: 0x80070005
(E_ACCESSDENIED))"
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ComMethodTargetInvocation
나는 이것이 블로그에서 버그로 언급 된 것을 보았지만 그 주장을 뒷받침하지는 않았다. 두 가지 해결 방법이 있으며 둘 다 나를 행복하게하지 않습니다.
- psexec를 사용하여 시스템 사용자로 명령을 실행하십시오. PSExec은 신뢰할 수없는 것으로 판명되었으므로 사용하지 않으려 고합니다. 또한 순수한 powershell 솔루션을 원합니다.
- 예약 된 작업을 작성하고 시스템 사용자로 스크립트를 실행하도록 지시하십시오. ( 그의 게시물을 통해 ) 이것은 지저분 할뿐만 아니라 업데이트 결과를 얻지 못합니다. 파일에 로그인하거나 데이터베이스 등을 업데이트해야합니다.
호스트에서 원격으로 업데이트를 실행하는 다른 방법이 열려 있습니다. 많은 사람들이 겪고있는 문제인 것 같습니다.
메시지를 설명하지만 그 이유나 해결 방법이 아닌 일부 문서 를 찾았습니다 .
반환 값 성공하면 S_OK를 반환합니다. 그렇지 않으면 COM 또는 Windows 오류 코드를 반환합니다.
This method can also return the following error codes. Return code Description E_INVALIDARGA parameter value is invalid. E_ACCESSDENIED This method cannot be called from a remote computer.
내가 원격 컴퓨터에 있다는 것을 어떻게 알 수 있습니까?