📌 3줄 요약
- 원인: -File 뒤에 적은 경로에 .ps1 파일이 실제로 없습니다. 대부분 현재 폴더가 다르거나 파일 이름이 틀린 경우입니다.
- 해결: 스크립트가 있는 폴더로 이동하거나 전체 경로를 큰따옴표로 감싸서 다시 실행합니다.
- 확인: Test-Path가 True를 돌려주고 스크립트가 오류 없이 실행되면 해결된 것입니다.
⚠️ 이런 메시지가 떴다면
-File 매개 변수에 대한 인수 'scripts\xxx.ps1'이(가) 없습니다. 기존 '.ps1' 파일의 경로를 -File 매개 변수의 인수로 제공하십시오.
The argument 'scripts\xxx.ps1' to the -File parameter does not exist. Provide the path to an existing '.ps1' file as an argument to the -File parameter.
Windows PowerShell(powershell.exe)에 -File로 스크립트를 넘겼을 때 나오는 오류입니다. 인수를 빠뜨렸다는 뜻이 아닙니다. 적어 준 경로에 그 .ps1 파일이 없다는 뜻입니다.
설치 스크립트를 실행하다 같은 메시지를 만났습니다. 원인은 스크립트 파일이 아직 들어 있지 않은 브랜치의 작업 폴더에서 실행한 것이었습니다. 아래 순서대로 경로를 확인하면 됩니다.
적은 경로에 스크립트 파일이 없을 때 나는 오류입니다
✅ 바로 해결
- 스크립트가 있는 폴더에서 실행했는지 확인합니다:
Test-Path -Path .\scripts\xxx.ps1 -PathType Leaf - 폴더와 상관없이 실행하려면 전체 경로를 씁니다:
powershell -File "C:\Users\사용자이름\프로젝트폴더\scripts\xxx.ps1" - Git으로 받은 프로젝트라면 파일이 들어 있는 최신 코드를 받았는지 확인합니다:
git pull
왜 이 오류가 나나
-File 뒤에 상대 경로(예: .\scripts\xxx.ps1)를 쓰면 PowerShell은 지금 있는 폴더를 기준으로 파일을 찾습니다. 그 위치에 파일이 없으면 스크립트를 실행하기 전에 이 오류로 멈춥니다. 흔한 원인은 아래 세 가지입니다.
1. 다른 폴더에서 실행했다
가장 흔한 경우입니다. 프로젝트 폴더가 아니라 사용자 폴더(C:\Users\사용자이름)에서 명령을 실행하면 scripts 폴더를 찾지 못합니다. 배치 파일(.bat)에서 실행할 때도 마찬가지입니다. Microsoft 문서는 배치 파일에서 .\ 대신 %~dp0을 쓰라고 안내합니다.
2. 파일이 아직 없다
Git으로 받은 프로젝트라면 지금 브랜치나 지금 받아 둔 코드에 그 스크립트가 없을 수 있습니다. 안내문은 최신 코드 기준으로 쓰여 있는데 내 작업 폴더는 예전 상태인 경우입니다.
3. 파일 이름이나 확장자가 다르다
파일 이름에 오타가 있는 경우입니다.
해결 방법
1단계: 지금 위치와 파일이 있는지 확인
PowerShell 창에서 실행합니다. 지금 있는 폴더를 보여 줍니다.
Get-Location
같은 창에서 스크립트 파일이 있는지 확인합니다. 파일이 있으면 True, 없으면 False를 돌려줍니다.
Test-Path -Path .\scripts\xxx.ps1 -PathType Leaf
False라면 scripts 폴더에 어떤 .ps1 파일이 있는지 봅니다. 이름 오타나 확장자 문제를 여기서 찾을 수 있습니다.
Get-ChildItem -Path .\scripts -Filter *.ps1
2단계: 스크립트가 있는 폴더로 이동하거나 전체 경로 쓰기
PowerShell 창에서 프로젝트 폴더로 이동한 뒤 다시 실행합니다. 경로는 내 프로젝트 위치로 바꿔 씁니다.
Set-Location -Path "C:\Users\사용자이름\프로젝트폴더"
powershell -File .\scripts\xxx.ps1
폴더 위치와 상관없이 실행하려면 전체 경로를 큰따옴표로 감싸 씁니다. 경로에 공백이 있어도 안전합니다.
powershell -File "C:\Users\사용자이름\프로젝트폴더\scripts\xxx.ps1"
PowerShell 7을 쓴다면 위 명령에서 powershell 대신 pwsh를 씁니다.
3단계: Git 프로젝트라면 최신 코드 받기
프로젝트 폴더의 PowerShell 창에서 지금 브랜치와 상태를 확인합니다.
git status
안내문이 말하는 브랜치와 지금 브랜치가 같은지 봅니다. 같다면 최신 코드를 받습니다.
git pull
받은 뒤 1단계의 Test-Path를 다시 실행해 True가 나오는지 확인합니다. 저도 최신 코드를 받은 뒤 같은 설치 스크립트를 다시 실행해 해결했습니다.
4단계: 배치 파일에서 실행한다면 %~dp0 쓰기
배치 파일(.bat) 안에서는 .\ 대신 배치 파일이 있는 폴더를 뜻하는 %~dp0을 씁니다. %~dp0은 끝에 \가 붙어 있으므로 바로 뒤에 폴더 이름을 이어 씁니다. 배치 파일 안에 아래처럼 적습니다.
powershell -File "%~dp0scripts\xxx.ps1"
다른 방법으로, 배치 파일 첫머리에서 작업 폴더를 배치 파일 위치로 바꿔도 됩니다. /d는 드라이브가 다를 때도 함께 바꾸는 옵션입니다.
cd /d "%~dp0"
해결됐는지 확인
PowerShell 창에서 아래 명령이 True를 돌려주는지 봅니다.
Test-Path -Path .\scripts\xxx.ps1 -PathType Leaf
True가 나온 뒤 2단계의 실행 명령을 다시 입력해 같은 오류 없이 스크립트가 시작되면 해결된 것입니다.
경로를 맞추면 스크립트가 정상적으로 시작됩니다
그래도 안 될 때
- 경로에 공백이 있는데 따옴표가 없다: 공백 앞까지만 경로로 읽힙니다. 전체 경로를 큰따옴표로 감쌉니다.
- -File을 맨 뒤에 두지 않았다: Microsoft 문서에 따르면 -File 뒤에 오는 모든 값은 스크립트 경로와 그 스크립트의 인수로 해석됩니다. -NoProfile 같은 PowerShell 옵션은 -File 앞에 둡니다.
- PowerShell 7(pwsh)에서 .ps1이 아닌 파일을 넘겼다: PowerShell 7.2부터 Windows에서는 -File에 .ps1 파일만 받습니다.
자주 묻는 질문
실행 정책(Execution Policy)을 바꿔야 하나요?
이 오류는 파일을 찾지 못한 경우입니다. 실행 정책 설정과는 다른 문제이므로 정책을 바꾸기 전에 경로부터 확인합니다.
관리자 권한으로 실행하면 되나요?
관리자 권한은 파일 위치 문제를 해결하지 않습니다. 경로를 맞추는 것이 먼저입니다.
이 오류는 -File로 적은 경로에 .ps1 파일이 없다는 뜻입니다. 현재 폴더와 파일 존재를 확인하고, 전체 경로나 %~dp0으로 실행하면 해결됩니다.