PowerShell 스크립트 에 매개 변수 전달
매개 변수를 두 가지 방법으로 PowerShell 스크립트에 전달할 수 있습니다. (PowerShell에 대해 모르는 경우 “`link : / windows-Introduction_to_PowerShell [Introduction to PowerShell]`”팁을 참조하십시오.) 매개 변수는 위치 또는 이름으로 전달할 수 있습니다. 둘 다 똑같이 유효하므로 각각이 어떻게 수행되는지 살펴 보겠습니다.
LookForFiles.ps1이라는 PowerShell 스크립트가 있습니다. 주어진 디렉토리에서 파일을 찾고 크기가 20K보다 큰 파일을 표시합니다. 지금 내 스크립트는 다음과 같습니다.
$files = Get-ChildItem C:\Temp foreach ($file in $files) { if ($file.length -gt 20000) { Write-Output $file } }
보시다시피, 내 디렉터리 이름 (C : \ Temp)과 확인할 크기 (20000)는 모두 하드 코딩되어 있습니다. 대신 디렉토리 이름과 크기를 전달하여 스크립트가 더 유연해질 수 있기를 바랍니다.
먼저이 매개 변수를 위치별로 전달하도록 변경하겠습니다. 즉, 첫 번째 매개 변수는 디렉토리가되고 두 번째 매개 변수는 크기가됩니다. 내 새 스크립트는 다음과 같습니다.
$files = Get-ChildItem args[0] foreach ($file in $files) { if ($file.length -gt args[1]) { Write-Output $file } }
이제 스크립트를 호출하고 출력을 관찰합니다. (그림 1 참조)
그림 1. 위치 매개 변수 전달.
스크립트를 호출 할 때 두 개의 매개 변수, 즉 “C : \ Temp”및 “20000”을 전달합니다. 이들은 “$ args [0]”및 “$ args [1]”로 채워집니다
스크립트가 이전과 동일하게 실행되도록 각각 이제 이름이 지정된 매개 변수를 예상하도록 스크립트를 수정 해 보겠습니다.
param([string] $dir = "C:\Temp", [int32] $size = 20000) $files = Get-ChildItem $dir foreach ($file in $files) { if ($file.length -gt $size) { Write-Output $file } }
“$ args”변수에 대한 참조를 제거했습니다. 첫 번째 줄 (두 번째 줄로 확장 됨)은 “param”입니다.
성명서. 이렇게하면 PowerShell에 명명 된 매개 변수가 필요합니다. 이 “param”문은 스크립트의 첫 번째 줄이어야합니다. 두 개의 변수를 정의하고 기본값으로 초기화합니다. $ dir 문자열 변수를 정의하고 기본값은 “C : \ Temp”이며 int32 (숫자) 변수 $ size를 정의하고 기본값은 20000으로 설정합니다. 이러한 값은 기본값으로 초기화되므로 스크립트가 호출 되어도 여전히 실행되고 해당 값을 사용합니다.
이전에 $ args [0]을 사용하던 대신 $ dir 변수를 사용하고 $ args [1]을 사용하던 곳 대신 $ size 변수를 사용합니다. 다음과 같은 명명 된 매개 변수를 지정하여 스크립트를 호출 해 보겠습니다.
(그림 2 참조)
그림 2. 명명 된 매개 변수 전달.
이제 스크립트가 호출 될 때 “-dir”다음에 관심있는 디렉토리를 지정하고 “-size”를 지정하여 관심있는 크기를 표시합니다.이 매개 변수는 명명 된 매개 변수이므로 순서를 반대로 할 수 있습니다. “-size”가 먼저 지정되고 “-dir”이 두 번째로 지정됩니다.
또는 완전히 생략 할 수 있으며 스크립트 내의 값이 사용됩니다.
이 팁 (2902)은 Windows 7, 8 및 10에 적용됩니다.