매개 변수를 두 가지 방법으로 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 참조)

image

그림 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 참조)

image

그림 2. 명명 된 매개 변수 전달.

이제 스크립트가 호출 될 때 “-dir”다음에 관심있는 디렉토리를 지정하고 “-size”를 지정하여 관심있는 크기를 표시합니다.이 매개 변수는 명명 된 매개 변수이므로 순서를 반대로 할 수 있습니다. “-size”가 먼저 지정되고 “-dir”이 두 번째로 지정됩니다.

또는 완전히 생략 할 수 있으며 스크립트 내의 값이 사용됩니다.

이 팁 (2902)은 Windows 7, 8 및 10에 적용됩니다.