PowerShell 스크립트의 현재 위치를 가져오는 방법

  1. Split-Path Cmdlet을 사용하여 PowerShell 스크립트의 현재 위치 가져오기
  2. $PSScriptRoot 변수를 사용하여 PowerShell 스크립트의 현재 위치 가져오기
  3. Windows PowerShell에서 작업 디렉토리 가져오기로 PowerShell 스크립트의 현재 위치 가져오기
  4. 결론
PowerShell 스크립트의 현재 위치를 가져오는 방법

이 종합 가이드에서는 PowerShell 스크립트의 현재 위치를 결정하는 다양한 방법에 대해 탐구합니다. 이는 스크립트의 이식성과 신뢰성을 향상시키는 기본적인 요소입니다. 논의된 각 방법은 PowerShell의 다양한 버전과 스크립팅 시나리오에 맞춰져 있어 널리 적용될 수 있습니다.

우리는 먼저 이전 PowerShell 버전에서 유연한 접근인 Split-Path cmdlet로 시작한 후, PowerShell 3 이상에서 $PSScriptRoot의 편리함으로 이동합니다. 이어서 다양한 환경과 요구에 맞춘 강력한 $ExecutionContext 방법과 간단한 Get-Location cmdlet을 탐구합니다.

마지막으로, 친숙한 pwd 별칭을 사용하여 PowerShell의 적응력을 보여주며 과정을 간소화합니다.

Split-Path Cmdlet을 사용하여 PowerShell 스크립트의 현재 위치 가져오기

PowerShell 3 이전에는 Split-Path cmdlet을 사용하여 MyInvocation.MyCommand.Definition 속성을 쿼리하는 더 나은 방법이 없었습니다.

$global:MyInvocation와 함께 Split-Path를 사용하는 주된 목적은 현재 실행 중인 PowerShell 스크립트의 디렉토리 경로를 추출하는 것입니다. 이는 스크립트가 다른 파일이나 같은 위치의 디렉토리와 상호 작용해야 할 때 또는 스크립트의 동작이 위치에 의존할 때 특히 유용합니다.

$scriptDirectory = Split-Path -Parent $MyInvocation.MyCommand.Definition
Write-Host "Current script location: $scriptDirectory"

이 예제에서는 Split-Path를 사용하여 실행 중인 스크립트의 전체 경로에서 디렉토리 구성 요소를 분리하는 -Parent 매개변수를 사용합니다. 이 경로는 $MyInvocation.MyCommand.Definition로부터 얻습니다.

결과적으로 얻은 디렉토리 경로는 변수 $scriptDirectory에 저장됩니다.

마지막으로, Write-Host를 사용하여 이 디렉토리 경로를 출력하여 스크립트의 현재 위치를 명확하고 즉각적으로 볼 수 있게 합니다. 이 방법은 효율적일 뿐 아니라 PowerShell의 다양한 버전에서 호환성을 보장합니다.

출력:

파워쉘 스크립트의 현재 위치 가져오기 - 출력 1

이것이 저장된 PowerShell(.ps1) 파일에서 위의 구문을 포함할 경우에만 작동한다는 점에 유의할 필요가 있습니다. 명령 행에서 위 구문을 실행하면 Null 예외가 반환됩니다.

또한, PowerShell의 통합 스크립트 환경(ISE)에서 선택으로 실행할 경우(선택으로 실행 또는 F8를 눌러) ParameterArgumentValidationErrorNullNotAllowed 또는 Null 예외가 발생한다는 점도 주의할 필요가 있습니다.

이 문제를 해결하는 간단한 방법은 $psISE 변수를 호출하고 CurrentFile.FullPath 속성을 가져오는 것으로, 그곳에서 스크립트의 현재 위치를 얻을 수 있습니다.

$PSScriptRoot 변수를 사용하여 PowerShell 스크립트의 현재 위치 가져오기

PowerShell 3 이상을 실행하는 경우, 현재 파일이나 모듈의 디렉토리를 저장하기 위한 자동 변수가 도입되었습니다.

$PSScriptRoot 변수는 실행 중인 스크립트의 디렉토리 경로를 저장합니다. 이 자동 변수는 경로를 하드 코딩하는 것이 실용적이지 않은 포터블 스크립트를 작성하는 데 매우 유용합니다.

스크립트가 스크립트 자체와 같은 디렉토리에 있는 파일이나 모듈을 로드해야 할 때 특히 편리합니다.

Write-Host "The current script is located in: $PSScriptRoot"

우리의 스크립트에서는 Write-Host cmdlet을 사용하여 $PSScriptRoot의 값을 출력합니다. 이 변수는 스크립트가 위치한 디렉토리의 전체 경로를 자동으로 포함합니다.

Write-Host를 호출하여 경로가 PowerShell 콘솔에 표시되도록 합니다. 이 접근법은 쉽고 효과적이며, 다양한 환경과 시나리오에 대해 스크립트를 다재다능하게 만듭니다.

출력:

파워셸 스크립트의 현재 위치 가져오기 - 출력 2

Windows PowerShell에서 작업 디렉토리 가져오기로 PowerShell 스크립트의 현재 위치 가져오기

이제 스크립트의 현재 위치를 가져오는 방법에 대해 논의했으므로, 스크립트의 현재 작업 디렉토리를 가져오는 방법을 배우는 것도 나쁘지 않을 것입니다.

Windows PowerShell v2에서는 $ExecutionContext 변수가 EngineIntrinsics 속성을 포함하고 있습니다. 이 변수와 속성을 사용하여 cmdlet에 사용할 수 있는 실행 객체를 찾을 수 있으며, 여기에는 실행 중인 Windows PowerShell 스크립트의 현재 작업 디렉토리도 포함됩니다.

$currentScriptLocation = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath('.\')
Write-Host "Current script location: $currentScriptLocation"

이 예제에서는 $ExecutionContext를 활용하여 현재 스크립트의 위치를 획득합니다. 매개변수 '.\'와 함께 GetUnresolvedProviderPathFromPSPath 메서드를 호출함으로써, PowerShell에게 현재 디렉토리('.\'로 표현됨)를 전체 경로로 변환할 것을 요청합니다.

결과는 변수 $currentScriptLocation에 저장된 후, Write-Host를 사용하여 표시합니다. 이 방법은 스크립트가 특정 방식에서 실행되는 것에 의존하지 않으므로 특히 강력하며, PowerShell의 다양한 버전에서 작동합니다.

출력:

PowerShell 스크립트의 현재 위치 가져오기 - 출력 3

그러나 최신 Windows PowerShell 버전을 실행하는 경우, 편리하게 사용할 수 있는 별도의 cmdlet이 도입되었습니다. Get-Location cmdlet을 사용하고 Path 속성을 호출하여 스크립트의 현재 작업 디렉토리를 가져올 수 있습니다.

$currentDirectory = (Get-Location).Path
Write-Host "Current directory: $currentDirectory"

제공된 코드에서는 먼저 Get-Location cmdlet을 사용하여 현재 위치 객체를 검색합니다. 그 후 Path 속성에 접근하여 현재 디렉토리를 문자열로 가져와 $currentDirectory 변수에 저장합니다.

마지막으로, Write-Host를 사용하여 이 정보를 표시합니다. 이 방법은 디렉토리 위치 측면에서 실행 컨텍스트를 알아야 하는 스크립트에 대해 매우 효과적입니다.

출력:

파워셸 스크립트의 현재 위치 가져오기 - 출력 4

PowerShell에서 pwdGet-Location cmdlet의 별칭입니다. Get-Location cmdlet은 PowerShell 세션의 현재 작업 디렉토리를 검색하며, 이는 전통적인 pwd(print working directory) 명령이 Unix 계열 시스템에서 하는 일과 정확히 동일합니다.

PowerShell은 유연성과 호환성을 염두에 두고 이러한 별칭을 제공하여 다른 셸 환경(예: Unix 또는 Linux)에 익숙한 사용자가 PowerShell에서 유사한 명령을 더 쉽게 사용할 수 있도록 합니다.

$currentDirectory = pwd
Write-Host "Current directory: $currentDirectory"

이 예제에서는 pwd 명령을 사용하여 현재 위치 객체를 가져오고, 이를 $currentDirectory 변수에 저장한 다음, Write-Host를 활용하여 현재 디렉토리의 경로를 콘솔에 출력합니다.

이 방법은 특히 간단하며 복잡한 구문이나 추가 매개변수가 필요하지 않습니다. 스크립트가 실행되는 디렉토리를 확인하는 빠르고 신뢰할 수 있는 방법입니다.

출력:

파워쉘 스크립트의 현재 위치 가져오기 - 출력 5

결론

이 기사는 PowerShell 스크립트의 현재 위치를 확인하는 다양한 방법에 대해 철저하게 탐구했으며, 각 방법은 서로 다른 PowerShell 버전과 스크립팅 컨텍스트에 맞춰져 있습니다. 이전 버전에서 적합한 Split-Path cmdlet부터 후속 버전의 자동 $PSScriptRoot 변수까지, 가이드는 다양한 PowerShell 사용자를 위한 관련성을 보장합니다.

또한, $ExecutionContextGet-Location cmdlet의 사용은 각각 강력하고 간단한 대안을 제공하며, pwd 별칭은 다양한 스크립팅 배경을 가진 사용자에게 친숙한 옵션을 제공합니다. 이 종합 가이드는 스크립트 이식성과 신뢰성을 향상시킬 뿐 아니라 PowerShell의 다재다능한 특성을 강조합니다.

이러한 기술로 무장한 스크립트 작성자 및 시스템 관리자는 파일 경로 종속성을 처리하는 데 더 잘 준비되어 있으며, 이를 통해 스크립트를 다양한 환경에서 더욱 적응력 있고 효과적으로 만들 수 있습니다. 궁극적으로 이러한 방법을 이해하는 것은 PowerShell 스크립팅을 마스터하고 서로 다른 플랫폼과 시나리오에 걸쳐 스크립트의 기능을 최적화하는 데 필수적입니다.

튜토리얼이 마음에 드시나요? DelftStack을 구독하세요 YouTube에서 저희가 더 많은 고품질 비디오 가이드를 제작할 수 있도록 지원해주세요. 구독하다
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn