
Windows10에서 UAC가 나타나지 않고 여러 원격 컴퓨터에서 regedit를 실행할 수 있는 방법이 있습니까? Windows 10 테스트 컴퓨터에서 명령 /s
줄이 작동하지 않습니다(Win7 시스템에서 작동할 것이라고 확신했지만 대부분의 클라이언트 컴퓨터는 Win10입니다).
궁극적으로 목표는
- reg 파일을 HKLM으로 가져와 PowerShell 실행 정책을 무제한으로 높이고,
- Powershell을 사용하여 시스템 보호/복원을 활성화합니다.
- PowerShell을 사용하여 복원 지점을 만들고 마지막으로
- reg 파일을 가져와서 ExecutionPolicy를 Restricted 또는 RemoteSigned로 다시 설정하세요. (이것은 모두 사전 패치 작업으로 수행되고 있습니다. btw).
/s
내 테스트 컴퓨터에서는 Windows 10에서 UAC 팝업 없이 매개변수를 사용하더라도 regedit가 실행되지 않는다는 점을 제외하면 이 모든 것이 잘 작동합니다. 내 Win10 테스트 컴퓨터에서 이 현상을 본 적이 있습니다.
Bat 파일을 통해 승격된 PowerShell을 실행해 보았습니다.
powershell.exe -ExecutionPolicy Bypass -File .\MyScript.ps1
그리고
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList 'Set-ExecutionPolicy unrestricted -Force' -Verb RunAs}"
그러나 둘 다 실패합니다(즉, 액세스가 거부되고 powershell 실행 정책이 승격되지 않습니다).
reg 파일을 가져온 다음 Powershell 스크립트를 실행하는 것이 제가 달성한 성공에 가장 가깝습니다.
또한 [가져오기 위해 reg.exe에 대한 psexec 호출]을 검색한 다른 솔루션을 기반으로 Sysinternals psexec를 통해 이 작업을 시도했지만 자체적인 문제가 있습니다(psexec에는 EULA를 위해 reg를 가져와야 하므로 동일한 문제가 아니라 해결책).
이를 빌려 다음 명령도 실행해 보았습니다.
C:\Windows\System32\REG.exe ADD HKLM\\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell /v ExecutionPolicy /t REG_SZ /d Unrestricted /f
...하지만 "오류: 잘못된 키 이름"이라는 메시지가 계속 표시됩니다. 나는 아마도 이 작업을 너무 오랫동안(현재 3일) 진행했기 때문에 다른 눈이 필요할 것입니다. 누구든지 도와줄 수 있나요?
답변1
여러 가지 다른 시도를 시도했기 때문에 실제로 답변이 필요할 수 있는 게시물 내에서 지적한 몇 가지 문제가 있습니다. 이러한 명령을 원격으로 실행하는 방법을 명확하게 밝히지 않았습니다. 표시된 명령 중 실제로는 원격 컴퓨터에서 아무 작업도 수행하지 않습니다. 모두 로컬 컴퓨터에서 실행됩니다. 그러나 PSExec을 시도한다고 언급하셨습니다.
또한 UAC가 원격 명령 실행을 방해하는 상황도 인식하지 못합니다. 따라서 로컬 컴퓨터에서 명령을 실행하고 UAC 프롬프트가 표시된다고 가정할 수 있습니다. 그러나 실제로 원격으로 명령을 실행하기 위한 준비 과정에서 수행하는 것입니다.
그래서 저는 여러분이 올바른 방향으로 나아갈 수 있도록 몇 가지 기본적인 원격 실행 지원을 제공하려고 노력할 것입니다. 모든 원격 명령 실행에는 특정 방화벽 포트를 열어야 합니다. 그러므로 앞으로 나아갈 때 이 점을 명심하십시오.
Powershell에는 이미 원격 명령/스크립트 실행 메커니즘이 있습니다.
- 특정 명령에 대한 스위치를 사용하여
-ComputerName
원격 시스템에서 해당 명령을 실행할 수 있습니다. Enter-PSSession <ComputerName>
및 를 사용하여 대화형 원격 세션을 시작할 수 있습니다Exit-PSSession
.Invoke-Command -ComputerName <ComputerName>
명령을 사용하여 스크립트나 명령을 원격으로 실행할 수 있습니다 .
대화형 Powershell 세션을 시작한 다음 계속해서 스크립트 실행을 시도하지 않는 한 이러한 방법 중 어느 것도 실행 정책 제한의 적용을 받지 않습니다.
이 명령은 현재 로그인된 사용자 계정을 사용하여 원격 컴퓨터에서 실행됩니다. 원격 머신의 관리자가 아닌 경우 스위치를 PSCredential
사용하여 관리자라는 개체를 추가로 제공해야 합니다 -Credential
.
또는 PSExec를 사용하여 원격 명령이나 실행 파일을 실행할 수도 있습니다. 모든 권한 문제를 피하기 위해 SYSTEM 컨텍스트에서 실행하는 것이 바람직하지만 원격 시스템의 관리자 컨텍스트에서 간단히 실행하면 일반적으로 성공합니다.
-accepteula
스위치를 사용하여 EULA 프롬프트를 우회합니다.-s
스위치를 사용하여 SYSTEM 컨텍스트에서 실행-i
때로는 특정 타사 실행 파일을 제대로 실행하기 위해 (대화형) 스위치를 활용 해야 하는 경우도 있습니다.
PSExec를 통해 실행되는 명령에는 UAC 제한이 적용되지 않습니다. 그러나 PSExec을 통해 원격으로 Powershell을 실행하려고 하면 PSExec이 스크립트를 실행하려고 시도하고 스위치를 사용하지 않는 한 실행 정책이 방해가 됩니다 -ExecutionPolicy Bypass
. 그러나 PSExec을 사용하여 원격으로 Powershell을 실행하고 스크립트를 실행하는 것은 수행해야 할 작업을 수행하는 데 정말 먼 길입니다.
이번에도 PSExec은 현재 로그온한 사용자 컨텍스트를 사용하여 원격 컴퓨터에 대한 연결을 설정합니다. 원격 컴퓨터의 관리자가 아닌 경우 -u
및 -p
스위치를 사용하는 사용자 이름/비밀번호를 지정해야 합니다.
https://docs.microsoft.com/en-us/sysinternals/downloads/psexec
마지막으로, 명령이 실행되는 위치(로컬 또는 원격)를 항상 기억하고 액세스하려는 모든 리소스가 명령이 실행되는 위치의 관점에서 수행되고 있음을 인식해야 합니다. 예를 들어 C:\MyBatch.bat
원격 컴퓨터에서 명령을 실행하는 경우 해당 명령이 C:\MyBatch.bat
원격 컴퓨터에 존재해야 합니다.