문제

좋아 여기 내 문제가 있습니다.

서버에서 원격으로 스크립트를 실행하려고합니다.

저는 두 상자의 관리자이며 방화벽 예외가 제자리에 있으며 원격 관리자가 활성화되어 있으며 다른 모든 것이 내가 볼 수있는 좋아 보입니다.

invoke-command -ComputerName $ComputerName -ScriptBlock `
{
    cd C:\Windows\System32\inetsrv\; 
    ./appcmd.exe ADD vdir /app.name:<SiteName>/ /path:/<VDir Name> /physicalPath:<Path to files>
}

다음 오류를 계속받습니다

ERROR ( hresult:80070005, message:Failed to commit configuration changes. Access is denied.

실행하려는 서버는 서버 2K8 R2 상자이며 문제가 UAC 문제라고 생각합니다. 어쨌든 UAC 상자에서 예를 클릭하지 않고도 관리자로 실행할 수 있습니까?

이 코드는 결국 완전히 자동화되어야하는 스크립트가 될 것입니다.

모든 도움은 대단히 감사하겠습니다.

도움이 되었습니까?

해결책

확인. 일부 연구와 테스트 후 나는 문제를 알아 냈습니다. UAC와 방화벽과 스크립트를 비활성화 한 후에도 여전히 작동하지 않는 후에는 조금 더 깊이 파고 들었고 주요 문제는 호출 명령이 명령을 실행하는 방식이라는 것을 발견했습니다. 스크립트를 실행하는 사람의 자격 증명을 사용하여 서버에 인증 한 다음 다른 계정을 사용하여 권한을 실행하거나 특정 명령을 실행할 수 없도록 사용자의 권한을 낮추려고합니다.

-Credentials 스위치를 Invoke 명령에 추가했으며 이제 모든 것이 잘 작동하고 있습니다. 아래 수정 코드 샘플 :

$user = New-Object Management.Automation.PSCredential("$UserName", $securePassword)
invoke-command -ComputerName $ComputerName -Credential $user -ScriptBlock ` 
{ 
    cd C:\Windows\System32\inetsrv\;  
    ./appcmd.exe ADD vdir /app.name:<SiteName>/ /path:/<VDir Name> /physicalPath:<Path to files> 
} 

다른 팁

이것 원격 시스템의 로컬 관리자인지 확인 해야하는 것 같습니다 (특히 WMI를위한 것이지만). 에 따르면 이것 레지스트리 키를 변경하여 관리자의 원격 로그온에 대한 UAC를 중지 할 수 있습니다 (LocalAccountTokenFilterPolicy 검색). 이는 UAC를 비활성화하지 않아야합니다.

HKLM Software Microsoft Windows CurrentVersion Policies System에서 5 및 재부팅 옵션을 설정하고 재부팅하십시오.

이것은 문제없이 UAC를 비활성화 할 것입니다. 나는 허가를 받거나 허가를받지 않든 상관없이 모든 사용자를 위해 그것을 할 것입니다. 비스타에서) 그들은입니다. THSI 트릭도 Win7에서도 작동합니다.

내 레지스트리 트릭으로 재미있게 보내십시오 :)

추신 : 위의 답변이있는 내 게시물/스레드에 관한 한 UAC를 비활성화하는 방법을 보여주는 검열 의견이 밝혀졌습니다 (부지런한 답변이 제거됨).

어쨌든 UAC 상자에서 예를 클릭하지 않고도 관리자로 실행할 수 있습니까?

이것이 가능하다면 그것은 완전히 UAC의 요점을 물리 칠 것입니다.

따라서 유일한 솔루션은 상자에서 UAC를 비활성화하는 것 같습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top