명령을 실행하고 변수를 새 프로세스에 전달하기 위해 PowerShell을 어떻게 시작하나요?

명령을 실행하고 변수를 새 프로세스에 전달하기 위해 PowerShell을 어떻게 시작하나요?

저는 현재 Windows 10 20H2 OS에 대한 모든 해킹을 한 번에 수행하는 스크립트를 작업 중입니다.

PowerShell 7.0.4 x64를 사용하고 있습니다. Admin에서 스크립트를 실행하고 싶습니다 pwsh. 일부 레지스트리 키를 변경하려면 TrustedInstaller 권한이 필요하다는 것을 알았습니다. 해결책을 찾았습니다. 프로세스 psexec -S를 시작하여 권한이 pwsh있는 명령을 실행하는 데 을 (를) 사용했습니다. 변수를 새 프로세스에 전달하는 방법과 스크립트 실행을 계속하기 위해 TrustedInstaller자동으로 종료되도록 만드는 방법을 모릅니다 .psexec

나는 이것을 예로 사용하겠습니다:

$TiSvc=@(
"PrintWorkflowUserSvc"
"RmSvc"
"SCardSvr"
"SecurityHealthService"
"Sense"
"SgrmBroker"
"wscsvc"
)
$TiSvc | %{Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\$_" -Name Start -Type DWord -Value 4}

권한이 없으면 TrustedInstaller액세스 거부 오류로 인해 명령이 실패합니다.

이제 이 문제를 해결하려면 다음 명령을 실행하십시오 ( 폴더를 에 psexec넣었습니다 ).SysInternalspath

$PwSh=(Get-Process -Id $pid).path
PsExec -S $PwSh ???

[array]현재 세션에서 변수를 설정하고 싶은데 새 세션에 $TiSvc전달하고 다음 명령을 실행하는 방법을 모르겠습니다 .$TiSvcpwsh

$TiSvc | %{Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\$_" -Name Start -Type DWord -Value 4}

그리고 명령이 실행된 후 새 pwsh세션을 종료하고 종료하여 psexec스크립트 실행을 계속합니다.

어떻게 해야 합니까? 도움을 주시면 감사하겠습니다.

답변1

실행하려는 명령을 TrustedInstaller스크립트 파일과 동일한 경로의 텍스트 파일에 넣고 가 있는지 확인한 후 PsExec.exe다음 Path명령을 사용하십시오.

$PwSh=(Get-Process -Id $pid).path
psexec -S $pwsh -file $psscriptroot\tiworker.txt

다른 프로세스에서 TrustedInstaller 권한이 필요한 명령을 실행하기 위해 PowerShell실행이 완료된 후 프로세스가 자동으로 종료되어 기본 스크립트 실행이 계속되도록 합니다.


TrustedInstaller 권한 없이 PowerShell 프로세스가 시작되는 사소한 실수를 수정했습니다.


위의 방법은 다음 명령을 실행하려고 시도했을 때 제대로 작동하지 않았습니다.

Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Services\WinDefend" -Name "Start" -Type DWord -Value 4
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Services\WdBoot" -Name "Start" -Type DWord -Value 4
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Services\WdFilter" -Name "Start" -Type DWord -Value 4
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Services\WdNisDrv" -Name "Start" -Type DWord -Value 4
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Services\WdNisSvc" -Name "Start" -Type DWord -Value 4

오류가 발생했습니다.

Set-ItemProperty: Attempted to perform an unauthorized operation.

내가 사용한다면reg add

ERROR: Access is denied.

그러나 이전 명령은 모두 반환되었습니다.

The operation completed successfully.

특히 다음 명령은 다음과 같습니다.

Set-ItemProperty -Path "HKLM:\Software\Microsoft\Windows Defender" -Name "DisableAntiSpyware" -Type DWord -Value 1
Set-ItemProperty -Path "HKLM:\Software\Microsoft\Windows Defender" -Name "DisableRoutinelyTakingAction" -Type DWord -Value 1
Set-ItemProperty -Path "HKLM:\Software\Microsoft\Windows Defender" -Name "ProductStatus" -Type DWord -Value 0
Set-ItemProperty -Path "HKLM:\Software\Microsoft\Windows Defender\Real-Time Protection" -Name "DisableAntiSpywareRealtimeProtection" -Type DWord -Value 1
Set-ItemProperty -Path "HKLM:\Software\Microsoft\Windows Defender\Real-Time Protection" -Name "DisableRealtimeMonitoring" -Type DWord -Value 1
Set-ItemProperty -Path "HKLM:\Software\Microsoft\Windows Defender\Scan" -Name "AutomaticallyCleanAfterScan" -Type DWord -Value 0
Set-ItemProperty -Path "HKLM:\Software\Microsoft\Windows Defender\Scan" -Name "ScheduleDay" -Type DWord -Value 8
Set-ItemProperty -Path "HKLM:\Software\Microsoft\Windows Defender\UX Configuration" -Name "AllowNonAdminFunctionality" -Type DWord -Value 0
Set-ItemProperty -Path "HKLM:\Software\Microsoft\Windows Defender\UX Configuration" -Name "DisablePrivacyMode" -Type DWord -Value 1

TrustedInstaller가 아닌 관리자로 실행하면 각각 다음 오류가 반환됩니다.

Set-ItemProperty: Requested registry access is not allowed.

를 사용하여 실행하면 PsExec이 오류가 생성되지 않습니다.

하지만 이 오류는 다음과 같습니다.

Set-ItemProperty: Attempted to perform an unauthorized operation.

여전히 생성됩니다.

PsExec나는 이것이 원격 작업에 의존하고 "원격 지원", "원격 데스크톱" 및 "원격 레지스트리"를 비활성화했기 때문이라고 생각합니다 .

나는 NSudoLC.exe오류없이 Windows Defender를 성공적으로 비활성화했습니다.

NSudoLC.exe -U:T -P:E $pwsh -file $home\desktop\tisvc.txt

NSudo위에서 언급한 두 가지 오류를 모두 사용하면 생성되지 않습니다.

관련 정보