2013-02-04 2 views
2

WMI를 사용하여 랩 컴퓨터에 도메인 관리자로 연결합니다. 그런 다음이 명령 줄을 실행하여 프린터를 만듭니다.prnmngr.vbs를 사용하여 원격 컴퓨터에 기본 프린터를 설정할 수 없습니다.

cscript C:\Windows\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs -a -p Test002 -m "Canon Inkjet iP100 series" -r FAKE002 

잘 작동합니다.

나는 다음 기본값으로 프린터를 설정하려면이 명령 줄을 실행

cscript C:\Windows\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs -t -p Test002 

전혀 작동하지 않습니다.

일부 관련 세부 정보 : 두 명령 줄이 같은 방법

  • 두 번째 명령 라인은 내가 실행하고 로컬 범위
  • 사용자와 WMI를 통해 실행하면 잘 작동에 의해 실행되는

    • 이 스크립트는 컴퓨터에서 관리자 권한을 가지며 수동으로 기본 프린터를 설정할 수 있습니다.
    • 원격 범위를 만들려는 사용자 매개 변수는 도메인 관리자에 속합니다.
    • 원격으로 실행하면 스크립트가 성공한 것으로보고합니다. 오류가 표시되지 않습니다.

    원격 WMI를 사용하여 호출 할 때 다른 매개 변수가있는 동일한 스크립트가 작동하지 않는 이유에 대해 완전히 혼란 스럽습니다. 몇 시간 동안 검색을했는데 적절한 답을 찾지 못했습니다. 여기

    내가 가진 원격 컴퓨터에 연결하고있는 범위를 만드는 데 사용하고있는 방법입니다 :

    public static ManagementScope CreateScope() { 
         string nameSpace = @"\\" + Parameters.FQDN + @"\root\cimv2"; 
    
         ManagementPath path = new ManagementPath(nameSpace); 
         ConnectionOptions Connection = new ConnectionOptions(); 
         Connection.Username = Parameters.User; // Username value includes the domain 
         Connection.Password = Parameters.Password; 
         Connection.Impersonation = ImpersonationLevel.Impersonate; 
    
         return new ManagementScope(path, Connection); 
    
    } 
    

    두 번째 명령 줄로 원격 컴퓨터에 프린터를 설정하지 않는 사람이 왜 말해 줄 수 기본 프린터?

  • +0

    오류 메시지가 있습니까? 나는 PSTOOLS와 Process Class를 사용하여 같은 일을 시도 할 것이다. 매우 이상하지만 그룹 정책과 관련이 있습니다. Windows Installer 파일을 원격으로 실행하려고 할 때 WMI에서 비슷한 문제가 발생했습니다. 내 관리자 계정 프로필이 이미 원격 시스템에있는 경우이를 수행하지 못하게했습니다. 명령을 사용하여 컴퓨터에서 배치 파일을 실행할 수 있습니다. 행운을 빕니다. – Derek

    +0

    Derek에게 답장을 보내 주셔서 감사합니다. 귀하의 질문에 대한 답변으로 원래 게시물을 업데이트했습니다. 스크립트를 원격으로 실행할 때 오류가 표시되지 않습니다. – Bruce

    +0

    도메인 컨트롤러를 확인했지만 현재보고있는 내용을 설명하는 그룹 정책을 찾을 수 없습니다. 관리자 권한으로 새 사용자를 시도했지만 스크립트가 여전히 실패했습니다. 지금 당장은 실험실 컴퓨터에 복사 한 콘솔 응용 프로그램으로이 문제를 해결하기 위해 노력하고 있습니다. 조만간 다른 원격 솔루션이 제공되지 않는다면 PsTools를 사용해 보겠다.하지만 왜 내가 이것을보고 있는지 이해하고 싶다. – Bruce

    답변

    0

    희망이 도움이됩니다. 두 명령을 사용하여 런타임에 배치 파일을 만들고 그런 식으로 프로세스를 만드는 것이 좋습니다. 하지만 이제 다음과 같이 문제가있는 최종 명령을 테스트하십시오. -

    string Command = @"cscript C:\Windows\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs -t -p Test002"; 
    
    ManagemenConnectionOptions connOptions = new ConnectionOptions(); 
    connOptions.Impersonation = ImpersonationLevel.Impersonate; 
    connOptions.EnablePrivileges = true; 
    tScope manScope = new ManagementScope 
        (String.Format(@"\\{0}\ROOT\CIMV2", Parameters.FQDN), connOptions); 
    manScope.Connect(); 
    
    ObjectGetOptions objectGetOptions = new ObjectGetOptions(); 
    ManagementPath managementPath = new ManagementPath("Win32_Process"); 
    ManagementClass processClass = new ManagementClass 
        (manScope, managementPath, objectGetOptions); 
    ManagementBaseObject inParams = processClass.GetMethodParameters("Create"); 
    inParams["CommandLine"] = Command; 
    
    ManagementBaseObject outParams = processClass.InvokeMethod("Create", inParams, null); 
    Console.WriteLine("Creation of the process returned: " + outParams["returnValue"]); 
    Console.WriteLine("Process ID: " + outParams["processId"]); 
    
    +0

    코드와 광산의 두 가지 차이점은 ObjectGetOptions 및 EnablePrivileges 행입니다. 불행히도, 그 라인을 포함하여 문제를 해결하지 못했습니다. 이 코드는 코드가 실행될 때 출력됩니다 ( ). cscript C : \ Windows \ System32 \ Printing_Admin_Scripts \ en-US \ prnmngr.vbs -t -p Test002 출력 매개 변수 : 프로세스 ID : 5600 반환 된 프로세스 생성 : 0' – Bruce

    +0

    이는 프로세스가 오류없이 생성되었음을 의미합니다. 정말 이상합니다. 죄송합니다. 작동하지 않았습니다. – Derek

    +0

    다음 링크 확인 : - http://stackoverflow.com/questions/6388503/change-default-printer-within-wpf-application – Derek