programing

PowerShell 스크립트의 파일 시스템 위치를 얻으려면 어떻게 해야 합니까?

powerit 2023. 9. 10. 13:09
반응형

PowerShell 스크립트의 파일 시스템 위치를 얻으려면 어떻게 해야 합니까?

PowerShell 스크립트가 있습니다.D:\temp.

이 스크립트를 실행하면 파일의 현재 위치가 나열되도록 합니다.이거 어떻게 해요?

예를 들어, 이 코드는 DOS 배치 파일로 구현됩니다. 파워쉘 스크립트로 변환하려고 하는데...

FOR /f "usebackq tokens=*" %%a IN ('%0') DO SET this_cmds_dir=%%~dpa
CD /d "%this_cmds_dir%"

파워쉘 3+

실행 중인 스크립트의 경로는 다음과 같습니다.

$PSCommandPath

디렉터리는 다음과 같습니다.

$PSScriptRoot

파워쉘 2

실행 중인 스크립트의 경로는 다음과 같습니다.

$MyInvocation.MyCommand.Path

디렉터리는 다음과 같습니다.

$PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent

로만 쿠즈민은 임호라는 질문에 답했습니다.모듈을 가져오시면 추가하겠습니다.Import-Module), 액세스할 수 있습니다.$PsScriptRoot모듈 내부의 자동 변수 - 모듈이 위치한 위치를 알려줍니다.

PowerShell V5 스크립트와 PowerShell ISE에서 사용할 수 있는 기능은 다음과 같습니다.

try {
    $scriptPath = $PSScriptRoot
    if (!$scriptPath)
    {
        if ($psISE)
        {
            $scriptPath = Split-Path -Parent -Path $psISE.CurrentFile.FullPath
        } else {
            Write-Host -ForegroundColor Red "Cannot resolve script file's path"
            exit 1
        }
    }
} catch {
    Write-Host -ForegroundColor Red "Caught Exception: $($Error[0].Exception.Message)"
    exit 2
}

Write-Host "Path: $scriptPath"

HTH

추신. 전체 오류 처리가 포함되어 있습니다.따라서 필요에 맞게 조정합니다.

다음은 한 가지 예입니다.

$ScriptRoot = ($ScriptRoot, "$PSScriptRoot" -ne $null)[0]
import-module $ScriptRoot\modules\sql-provider.psm1
Import-Module $ScriptRoot\modules\AD-lib.psm1 -Force

언급URL : https://stackoverflow.com/questions/3667238/how-can-i-get-the-file-system-location-of-a-powershell-script

반응형