배치 파일에서 다음과 같이 PowerShell 스크립트를 호출합니다.
powershell.exe "& "G:\Karan\PowerShell_Scripts\START_DEV.ps1"
이제 문자열 매개 변수를 START_DEV.ps1
. 매개 변수가라고 가정 해 보겠습니다 w=Dev
.
어떻게 할 수 있습니까?
답변:
Dev
배치 파일에서 문자열 을 매개 변수로 전달하고 싶다고 가정 해 보겠습니다 .
powershell -command "G:\Karan\PowerShell_Scripts\START_DEV.ps1 Dev"
powershell 스크립트 헤드 안에 넣으십시오.
$w = $args[0] # $w would be set to "Dev"
내장 변수를 사용하려는 경우이 옵션을 사용합니다 $args
. 그렇지 않으면:
powershell -command "G:\Karan\PowerShell_Scripts\START_DEV.ps1 -Environment \"Dev\""
powershell 스크립트 헤드 내부 :
param([string]$Environment)
명명 된 매개 변수가 필요한 경우
오류 수준 반환에 관심이있을 수도 있습니다.
powershell -command "G:\Karan\PowerShell_Scripts\START_DEV.ps1 Dev; exit $LASTEXITCODE"
오류 수준은 배치 파일 내에서 %errorlevel%
.
스크립트가로드되면 전달되는 모든 매개 변수가 특수 변수에 자동으로로드됩니다 $args
. 먼저 선언하지 않고 스크립트에서 참조 할 수 있습니다.
예를 들어,라는 파일을 만들고 그 자체로 한 줄에 test.ps1
변수 $args
를 갖습니다 . 이와 같은 스크립트를 호출하면 다음 출력이 생성됩니다.
PowerShell.exe -File test.ps1 a b c "Easy as one, two, three"
a
b
c
Easy as one, two, three
일반적인 권장 사항으로 PowerShell을 직접 호출하여 스크립트를 호출 할 때 -File
암시 적으로 옵션을 사용하는 대신 옵션을 사용하는 것이 좋습니다 &
. 특히 중첩 된 따옴표를 처리해야하는 경우 명령 줄을 좀 더 깔끔하게 만들 수 있습니다.
ps1 파일 상단에 매개 변수 선언 추가
param(
# Our preferred encoding
[parameter(Mandatory=$false)]
[ValidateSet("UTF8","Unicode","UTF7","ASCII","UTF32","BigEndianUnicode")]
[string]$Encoding = "UTF8"
)
write ("Encoding : {0}" -f $Encoding)
C:\temp> .\test.ps1 -Encoding ASCII
Encoding : ASCII
@Emiliano의 대답은 훌륭합니다. 다음과 같이 명명 된 매개 변수를 전달할 수도 있습니다.
powershell.exe -Command 'G:\Karan\PowerShell_Scripts\START_DEV.ps1' -NamedParam1 "SomeDataA" -NamedParam2 "SomeData2"
매개 변수는 명령 호출 외부에 있으며 다음을 사용합니다.
[parameter(Mandatory=$false)]
[string]$NamedParam1,
[parameter(Mandatory=$false)]
[string]$NamedParam2