시작 프로세스 - 관리자가 위치를 설정하지 않음으로써 작업 디렉토리
명령을 입력할 때
Start-Process powershell -WorkingDirectory "D:\folder"
PowerShell 로 .D:\folder
로케이션 세트.
하지만 명령을 입력하면
Start-Process powershell -WorkingDirectory "D:\folder" -Verb RunAs
관리 권한이 있는 새 PowerShell 창을 열지만C:\Windows\system32
로케이션 세트.
관리자 권한과 자신의 위치가 결정된 새 PowerShell 창을 여는 방법은 무엇입니까?
저도 같은 문제가 있어서 이 명령으로 해결했습니다.
Start-Process powershell.exe -verb runAs -ArgumentList '-NoExit', '-Command', 'cd D:\folder'
위의 명령을 실행하면 관리 권한과 지정된 디렉토리를 사용하여 Windows가 실행됩니다.
관리자로서 PowerShell에서 현재 폴더로 CMD를 여는 데 사용할 수 있는 다른 예는 다음과 같습니다.
Start-Process cmd -ArgumentList ("/k cd {0}" -f (Get-Location).path) -Verb RunAs
스크립트 내에서 사용할 경우 사용할 수 있습니다.
Start-Process cmd -ArgumentList ("/k cd {0}" -f $PSScriptRoot) -Verb RunAs
상승되지 않은 현재의 PowerShell 세션에서 상승된 새 세션을 열려면 다음을 사용할 수 있습니다.
Start-Process powershell.exe -ArgumentList ("-NoExit",("cd {0}" -f (Get-Location).path)) -Verb RunAs
아니면
Start-Process powershell.exe -ArgumentList ("-NoExit",("cd {0}" -f $PSScriptRoot)) -Verb RunAs
와 함께 사용할 경우 대상 실행 파일이 a인 경우 인수를 지정합니다.NET 실행 파일(예:
pwsh.exe
(PowerShell(Core) CLI)는 이를 존중합니다.cmd.exe
신기하게도powershell.exe
(윈도우즈 PowerShell CLI)는 (윈도우즈 PowerShell CLI는) 를 사용하지 않으며, 항상 다음과 같이 사용합니다.C:\Windows\System32
.- 의 수준에 문제가 있습니다.이 문서(.)에서 PowerShell이 사용하는 NET API( 참조)NET 6.0.0-미리보기.4.21253.7).
당신이 호출하는 걸 알지 못하면요따라서 새로운 프로세스에서 원하는 작업 폴더로 변경하는 해결책인 NET 실행 파일이 필요합니다. ふゆな의 유용한 답변에 대한 보다 강력한 대안을 제공하기 위해서는 다음과 같은 작업이 필요합니다.
$dir = $PWD.ProviderPath # use the current dir.
Start-Process -Verb RunAs powershell.exe @"
-noexit -c Set-Location -LiteralPath "$dir"
"@
된 .
"..."
여기는$dir
공백이 있는 경로도 올바르게 처리되도록 합니다. (중간 변수 없이 현재 디렉터리를 사용하려면 바꾸기"dir"
와 함께"$($PWD.ProviderPath)"
.으로.
$PWD
의.ProviderPath
property를 사용하면 파일 시스템 native 경로가 사용됩니다(드라이브 문자도 참조).cmd.exe
, 예를 들어, 호출 세션의 현재 위치가 PowerShell 전용 드라이브( 참조)를 기반으로 할 수 있으며, 이 드라이브는 상승된 프로세스가 정의하지 않았을 수 있습니다(동일한 루트 위치를 기반으로 전혀 또는 그렇지 않음).- 주의 사항: 네이티브 경로가 매핑된 네트워크 드라이브에 있는 경우, 상위 프로세스에서 동일한 드라이브 매핑을 볼 수 없기 때문에 작동하지 않습니다. 그러면 기본 UNC 경로를 전달합니다.
지정된 작업 디렉토리에서 업그레이드된 GUI 응용프로그램을 시작하는 방법:
작업 디렉토리로 변경하는 작업은 새로운 상위 프로세스에서 수행해야 하므로 이 작업을 수행하려면 헬퍼 셸 프로세스가 필요합니다. 이 작업은 다음을 통해 수행하는 것이 가장 좋습니다.cmd.exe
(성능 향상을 위해):
$exeToLaunch = 'Notepad.exe' # may include arguments
$dir = $PWD.ProviderPath # use the current dir.
Start-Process -Verb RunAs -WindowStyle Hidden cmd.exe @"
/c cd "$dir" & $exeToLaunch
"@
관리자로서 Powershell을 실행하면,
push-location 명령을 다음과 같이 사용합니다.
Push-Location -Path C:\
또는 스크립트에 입력하고 상승된 Powershell 프롬프트에서 스크립트를 실행합니다.
방금 당신의 코드 예시를 실행해보았는데, 그것은 제게 정확하게 열렸습니다.WorkingDirectory
위치.명령을 실행하기 전에 디렉토리가 존재하는지 확인합니다.드라이브에 대한 테스트를 했습니다.C
세컨더리 드라이브도 함께 작동했습니다.
언급URL : https://stackoverflow.com/questions/43494863/start-process-workingdirectory-as-administrator-does-not-set-location
'programing' 카테고리의 다른 글
PowerShell에서 배열 평탄화 (0) | 2023.10.08 |
---|---|
MySQL 쿼리에서 결과를 반환하는 Node.js (0) | 2023.10.08 |
PTHREAD_MUTEX_ADAPTIVE_NP란 무엇입니까? (0) | 2023.10.08 |
'터치 시작' 및 '클릭' 이벤트를 바인딩하지만 둘 다에 응답하지 않는 방법은 무엇입니까? (0) | 2023.10.08 |
C - 오류: 'a'의 저장 크기를 알 수 없습니다. (0) | 2023.10.08 |