목차
Ⅰ. PowerShell 매개변수 사용법
1. 각종 매개변수 사용하기
2. 매개변수 자동 완성 및 축약 기능
Ⅱ. 매개변수 값
1. 매개변수 값 형식
2. 스위치 매개변수
Ⅲ. 프로세스 시작 및 중지
1. 프로세스 시작
2. 프로세스 중지
Ⅳ. 매개변수 유형
1. 필수 매개변수
2. 선택적 매개변수
3. 위치 매개변수 / 이름 매개변수
Ⅰ. PowerShell 매개변수 사용법
1. 각종 매개변수 사용하기
가. -Name 매개변수 : 프로세스 명을 인수로 하여 특정 프로세스 정보 찾기
- Get-Process cmdlet을 입력한다고 가정하였을 시, 현재 시스템에서 실행 중인 모든 프로세스에 대한 정보를 보여주지만 특정 프로세스에 대한 정보만 확인하고 싶을 때가 있는데 이때 매개변수(Parameter)를 사용하여 원하는 결과만 필터링 할 수 있음
- 특정 프로그램의 프로세스를 찾으려면 Get-Process cmdlet 뒤에 -Name 매개변수를 사용하면 됨
- -Name 매개변수 사용 예시
/* cmdlet 형식 */
Get-Process -Name [프로세스_명]
/* 사용 예시(Chrome 프로세스 찾기) */
PS C:\Users\security> Get-Process -Name chrome // Chrome이 실행 중이지 않기 때문에 Chrome 프로세스를 찾을 수 없다는 에러 메시지가 출력됨
Get-Process : 이름이 "chrome"인 프로세스를 찾을 수 없습니다. 프로세스 이름을 검증하고 다시 cmdlet을 호출하십시오.
위치 줄:1 문자:1
+ Get-Process -Name chrome
+ ~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (chrome:String) [Get-Process], ProcessCommandException
+ FullyQualifiedErrorId : NoProcessFoundForGivenName,Microsoft.PowerShell.Commands.GetProcessCommand
PS C:\Users\security> Get-Process -Name chrome // Chrome을 실행한 후 다시 cmdlet을 입력하면 결과가 잘 출력되는 것을 확인할 수 있음
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
274 21 22292 64404 0.17 2004 1 chrome
367 26 11216 37812 0.19 3044 1 chrome
403 29 16508 51556 0.19 3112 1 chrome
190 13 8200 19668 0.03 3248 1 chrome
371 23 36380 86672 0.22 4036 1 chrome
222 19 13068 29616 0.05 7980 1 chrome
160 10 2120 8940 0.02 9868 1 chrome
1333 49 35460 143284 0.86 10156 1 chrome
나. -FileVersionInfo 매개변수 : 파일의 버전 정보 등과 같은 추가 정보 얻기
- 프로세스의 버전 정보와 같은 더 자세한 내용을 확인하고 싶다면 -FileVersionInfo 매개변수를 함께 사용할 수 있음
- -FileVersionInfo 매개변수 사용 예시
/* cmdlet 형식 */
Get-Process -Name [프로세스_명] -FileVersionInfo
/* 사용 예시(메모장 프로세스 버전 정보 확인) */
PS C:\Users\security> Get-Process -Name notepad -FileVersionInfo // 메모장이 실행 중이지 않기 때문에 notepad 프로세스를 찾을 수 없다는 에러 메시지가 출력됨
Get-Process : 이름이 "notepad"인 프로세스를 찾을 수 없습니다. 프로세스 이름을 검증하고 다시 cmdlet을 호출하십시오.
위치 줄:1 문자:1
+ Get-Process -Name notepad -FileVersionInfo
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (notepad:String) [Get-Process], ProcessCommandException
+ FullyQualifiedErrorId : NoProcessFoundForGivenName,Microsoft.PowerShell.Commands.GetProcessCommand
PS C:\Users\security> Get-Process -Name notepad -FileVersionInfo // 메모장을 실행한 후 다시 cmdlet을 입력하면 결과가 잘 출력되는 것을 확인할 수 있음
ProductVersion FileVersion FileName
-------------- ----------- --------
11.2504.62.0 11.2504.62.0 C:\Program Files\WindowsApps\Microsoft.WindowsNotepad_11.2504.62.0_x64__8wekyb3d8b...
● ProductVersion은 S/W 전체의 버전 번호를, FileVersion은 개별 실행 파일의 버전 번호를 나타냄
● 경우에 따라 전체 제품 버전은 동일하더라도 특정 파일의 버그 수정 등으로 인해 FileVersion만 업데이트될 수 있음
다. -Id 매개변수 : 특정 프로세스 ID로 정보 찾기
- 프로세스 명이 아닌 ID(고유 식별자)로도 프로세스 정보를 검색할 수 있는데, 이는 여러 개의 동일한 이름의 프로세스가 실행 중일 때 특정 프로세스를 정확하게 지정하려는 용도로 유용하게 사용할 수 있음
- -ID 매개변수 사용 예시
/* cmdlet 형식 */
Get-Process -Id [프로세스_ID]
/* 사용 예시(메모장 프로세스 ID로 검색) */
PS C:\Users\security> Get-Process -N notepad // 먼저 Get-Process cmdlet으로 확인한 결과, 메모장의 프로세스 ID가 3024임을 확인
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
660 36 32912 87192 0.70 3024 1 Notepad
PS C:\Users\security> Get-Process -Id 3024 // Get-Process로 알아낸 메모장 프로세스 ID를 사용하여 검색
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
660 35 32880 87172 0.70 3024 1 Notepad
- ID는 각 프로세스에 고유하므로, 이름으로 검색하는 것보다 더 정확하고 안정적임
● 따라서 스크립트나 자동화된 작업에서 특정 프로세스를 제어할 때 특히 유용하게 사용됨
라. PowerShell의 가장 큰 장점은 바로 이러한 유연성인데, 상황에 맞게 매개변수를 조합하여 원하는 정보를 쉽게 얻거나 작업을 수행할 수 있음
2. 매개변수 자동 완성 및 축약 기능
가. 각 cmdlet에 어떤 매개변수를 사용할 수 있는지 궁금할 때는 [Tab]키를 사용하면 됨
- 예를 들어, "Get-Process -" 까지만 입력하고 [Tab]키를 입력하면 사용 가능한 매개변수들을 자동으로 보여줌
나. 매개변수 명이 다른 매개변수와 겹치지 않는다면 축약해서 입력할 수 있음
- 예를 들어, -Name 매개변수는 -N으로 줄여서 사용 가능함
PS C:\Users\security> Get-Process -Name chrome
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
276 22 21600 62556 0.31 2004 1 chrome
334 21 10512 38136 0.48 3044 1 chrome
401 21 16044 47228 0.31 3112 1 chrome
190 13 8084 19768 0.16 3248 1 chrome
371 22 29480 76036 0.45 4036 1 chrome
224 19 13044 29352 0.08 7980 1 chrome
160 9 2192 8960 0.02 9868 1 chrome
1399 49 39752 135108 3.31 10156 1 chrome
PS C:\Users\security> Get-Process -N chrome
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
276 22 21600 62556 0.31 2004 1 chrome
334 21 10512 38136 0.48 3044 1 chrome
401 21 16044 47228 0.31 3112 1 chrome
190 13 8084 19768 0.16 3248 1 chrome
371 22 29480 76036 0.45 4036 1 chrome
224 19 13044 29352 0.08 7980 1 chrome
160 9 2192 8960 0.02 9868 1 chrome
1399 49 39752 135108 3.31 10156 1 chrome
● 매개변수를 -Name으로 입력했을 때와 -N으로 입력했을 때의 출력이 동일함을 확인할 수 있음
Ⅱ. 매개변수 값
1. 매개변수 값 형식
가. PowerShell에서 올바른 매개변수 사용의 필요성
- 매개변수는 cmdlet의 동작을 사용자 지정하고 미세 조정하는 데 사용되는데, 이때 각 매개변수가 기대하는 데이터 유형을 정확히 이해해야 함
- 잘못된 매개변수 값으로 인한 오류 상황 1
PS C:\Users\security> Get-Process -Id five
Get-Process : 'Id' 매개 변수를 바인딩할 수 없습니다. 값 "five"을(를) "System.Int32" 유형으로 변환할 수 없습니다. 오류:
"입력 문자열의 형식이 잘못되었습니다."
위치 줄:1 문자:17
+ Get-Process -Id five
+ ~~~~
+ CategoryInfo : InvalidArgument: (:) [Get-Process], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.GetProcessCommand
● -Id 매개변수는 값으로 정수(integer), 즉, 숫자를 기대하지만 위의 cmdlet에서는 five라는 문자열을 값으로 제공하였으므로 "five를 System.Int32 유형으로 변환할 수 없다."라는 에러 메시지가 출력됨
● PowerShell은 five라는 텍스트를 숫자로 해석하려 시도하지만 실패하기 때문에 오류를 반환하는 것임
● 매개변수마다 기대하는 데이터 유형(ex : 문자열, 정수, 불리언 등)이 정해져 있으므로, 올바른 형식의 값을 제공해야 함
- 잘못된 매개변수 값으로 인한 오류 상황 2
● Start-Process cmdlet으로 어플리케이션을 실행시킬 때, 파일 경로를 지정해줘야 하는데 이때 경로에 공백이 포함된 경우 따옴표를 사용해야 함
● 아래의 상황은 경로를 따옴표로 묶어주지 않아 오류가 발생한 상황임
PS C:\Users\security> Start-Process -FilePath C:\Program Files\Google\Chrome\Application\chrome.exe
Start-Process : 지정된 파일을 찾을 수 없습니다 오류로 인해 이 명령을 실행할 수 없습니다.
위치 줄:1 문자:1
+ Start-Process -FilePath C:\Program Files\Google\Chrome\Application\ch ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Start-Process], InvalidOperationException
+ FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommand
● chrome.exe의 경로는 올바른데 지정된 파일을 찾을 수 없다는 에러 메시지가 출력된 것은 chrome.exe 경로에서 "Program Files" 부분에 공백이 포함되어있기 때문임
└ 따라서 "C:\Program"과 "Files\Google\Chrome\Application\chrome.exe"를 별개의 값으로 인식하여 올바른 경로를 찾지 못하는 것임
● 이러한 문제를 해결하기 위해서는 경로 전체를 따옴표로 감싸줘야 함
PS C:\Users\security> Start-Process -FilePath "C:\Program Files\Google\Chrome\Application\chrome.exe"
└ 그러면 명령어가 잘 실행되어 Chrome이 실행되는 것을 확인할 수 있음
● 위에서 보듯이 공백이나 기타 특수 문자가 포함된 문자열을 사용할 때는 항상 또옴표를 사용하여 문자열을 이스케이프해야 함
└ 문자열을 이스케이프(Escape)한다 : 따옴표를 사용하여 이 문자열은 그냥 텍스트 덩어리라는 것을 알려주는 것
2. 스위치 매개변수
가. 스위치 매개변수는 cmdlet에서 특정 기능을 켜거나 끄는 역할을 하는 간단한 옵션으로, 마치 전등 스위치를 켜거나 끄는 것처럼, 명령어를 실행할 때 이 매개변수를 추가하면 기능이 켜지고, 추가하지 않으면 기능이 꺼지는 방식임
나. 일반적인 cmdlet은 "[명령] [대상] [속성]"의 형태로 구성되는데 여기서 스위치 매개변수는 대개 " - "나 " / " 뒤에 붙는 간단한 단어로 표현됨
다. Remove-Item으로 알아보는 스위치 매개변수
- 일반적인 삭제 시
PS C:\Users\security> Remove-Item "C:\Users\security\Desktop\rmdir"
확인
C:\Users\security\Desktop\rmdir의 항목에는 하위 항목이 있으며 Recurse 매개 변수를 지정하지 않았습니다. 계속하면 해당 항목과
모든 하위 항목이 제거됩니다. 계속하시겠습니까?
[Y] 예(Y) [A] 모두 예(A) [N] 아니요(N) [L] 모두 아니요(L) [S] 일시 중단(S) [?] 도움말 (기본값은 "Y"): Y
PS C:\Users\security>
● Remove-Item cmdlet은 인수로 지정한 항목을 삭제할 건지 확인하는 메시지를 보여줌
└ 삭제할 항목이 폴더이고, 해당 폴더 내에 서브 폴더 및 파일들이 존재할 때만 메시지를 보여줌
└ 그 외에는 삭제할 건지 확인하는 메시지 없이 바로 삭제함
- 스위치 매개변수(-Recurse, -Force)를 사용하여 삭제 시
PS C:\Users\security> Remove-Item "C:\Users\security\Desktop\rmdir2" -Recurse -Force
● rmdir2 폴더 내에 파일이 존재함에도 불구하고 확인 메시지를 출력하지 않고 강제로 삭제해버림
### 알아두기 ###
★ -Recurse / -Force
- -Recurse와 -Force는 모두 PowerShell에서 사용되는 스위치 매개변수로, 명령어의 동작 방식을 변경함
- 두 매개변수는 서로 다른 역할을 수행하며, 종종 함께 사용됨
- -Recurse
● -Recurse는 "하위 항목을 포함하여 반복적으로"라는 의미로, 이 매개변수는 폴더 내의 모든 하위 폴더와 파일에 대해 특정 작업을 수행하도록 명령함
● 주요 기능 : cmdlet의 범위를 현재 폴더뿐만 아니라 그 안에 있는 모든 서브 폴더와 파일로 확장함
● 사용 예시
> Get-ChildItem -Path C:\dir -Recurse
- C:\dir 폴더와 그 아래 모든 서브 폴더의 모든 파일과 폴더를 나열함
> Remove-Item -Path C:\dir -Recurse
- C:\dir 폴더와 그 안에 있는 모든 서브 폴더 및 파일을 삭제함
- 이 매개변수가 없으면 폴더 안에 내용물이 있을 때, 삭제가 실패하거나 확인 메시지가 출력됨
- -Force
● -Force는 "강제로"라는 의미로, 이 매개변수는 일반적으로 접근이 제한되거나 보호되어있는 항목에 대해 명령을 강제로 실행하도록 함
● -Force는 권한, 파일 속성 등으로 인해 발생하는 오류를 무시하고 작업을 진행하게 만듦
● 주요 기능
└ 읽기 전용 파일 삭제 : 일반적인 Remove-Item으로는 삭제할 수 없는 읽기 전용(Read-Only) 파일을 강제로 삭제함
└ 숨김 파일 표시 : Get-ChildItem을 사용할 때, 숨김 속성이 있는 파일을 표시하도록 함
└ 존재하지 않는 경로 생성 : New-Item으로 폴더 생성 시, 이미 존재하는 경로에 대해 에러 메시지를 출력하지 않고 덮어씀
● 사용 예시
> Remove-Item -Path C:\read_only.txt -Force
- 읽기 전용으로 설정된 read_only.txt 파일을 강제로 삭제함
> Get-ChildItem -Path C:\dir -Force
- C:\dir 폴더 내의 일반 서브 폴더 및 파일뿐만 아니라 숨김 파일까지 모두 표시함
- -Recurse와 -Force를 함께 사용하는 경우
● 두 매개변수를 함께 사용하면 "하위 항목을 모두 포함하여, 권한이나 속성 제한을 무시하고 강제로"라는 강력한 명령이 됨
● 사용 예시
> Remove-Item -Path C:\dir -Recurse -Force
- 이 cmdlet은 C:\dir 폴더와 그 안의 모든 서브 폴더 및 파일들을 확인 메시지 없이, 그리고 읽기 전용과 같은 속성에 관계없이 즉시 삭제함
라. Test-Connection cmdlet으로 알아보는 스위치 매개변수
- 아래의 cmdlet은 google.com에 연결을 시도하고 자세한 연결 보고서를 반환하는데, 이 cmdlet은 기본적으로 4번 연결을 시도함
PS C:\Users\security> Test-Connection -ComputerName google.com
Source Destination IPV4Address IPV6Address Bytes Time(ms)
------ ----------- ----------- ----------- ----- --------
DESKTOP-UN... google.com 172.###.###.### 32 39
DESKTOP-UN... google.com 172.###.###.### 32 41
DESKTOP-UN... google.com 172.###.###.### 32 35
DESKTOP-UN... google.com 172.###.###.### 32 36
● 위와 같이 상세한 결과를 출력하지 않고 간단히 성공 / 실패 여부만 확인하고 싶다면 -Quiet 스위치 매개변수를 추가하면 됨
PS C:\Users\security> Test-Connection -ComputerName google.com -Quiet
True
● -Quiet 매개변수는 별도의 값을 필요로하지 않으며, 단순히 cmdlet의 출력을 간결한 True 또는 False로 변경하는 역할을 함
### 알아두기 ###
- 대부분의 매개변수에는 default 값이 설정되어있는데, 위에서 살펴본 바와 같이 Test-Connection cmdlet의 경우, 연결 시도 횟수를 지정하는 -Count 매개변수의 default 값은 4임
- 연결 시도 횟수를 변경하고 싶다면 -Count 매개변수에 원하는 값을 명시적으로 제공하여 default 값을 재정의할 수 있음
PS C:\Users\security> Test-Connection -ComputerName google.com -Count 7
Source Destination IPV4Address IPV6Address Bytes Time(ms)
------ ----------- ----------- ----------- ----- --------
DESKTOP-UN... google.com 142.###.###.### 32 44
DESKTOP-UN... google.com 142.###.###.### 32 42
DESKTOP-UN... google.com 142.###.###.### 32 45
DESKTOP-UN... google.com 142.###.###.### 32 42
DESKTOP-UN... google.com 142.###.###.### 32 46
DESKTOP-UN... google.com 142.###.###.### 32 46
DESKTOP-UN... google.com 142.###.###.### 32 37
● 위 cmdlet은 google.com에 7번의 연결을 시도하도록 지시함
Ⅲ. 프로세스 시작 및 중지
1. 프로세스 시작
가. Start-Process cmdlet을 사용하여 프로세스를 시작할 수 있음
- Start-Process cmdlet을 사용하여 Microsoft Edge 프로세스 실행하기
PS C:\Users\security> Start-Process -FilePath "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
2. 프로세스 중지
가. 프로세스를 중지하는 두 가지 방법
- 특정 인스턴스 중지
● Get-Process로 확인한 ID 값을 사용하여 특정 프로세스 인스턴스만 중지할 수 있음
● 사용 예시
PS C:\Users\security> Get-Process -N msedge
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
438 26 16384 55036 0.30 1920 1 msedge
166 10 8320 20064 0.05 2008 1 msedge
363 27 13612 42628 0.63 2148 1 msedge
159 10 8476 19336 0.13 4184 1 msedge
244 14 8676 28596 0.09 5188 1 msedge
204 17 17576 33296 0.06 6120 1 msedge
564 46 159464 236256 4.09 6540 1 msedge
1652 58 61476 174932 1.94 9520 1 msedge
169 9 2208 9952 0.03 10372 1 msedge
PS C:\Users\security> Stop-Process -Id 1920
PS C:\Users\security> Get-Process -N msedge
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
166 10 8320 20064 0.05 2008 1 msedge
354 26 13588 42616 0.64 2148 1 msedge
407 20 15628 43148 0.11 2972 1 msedge
244 14 8676 28596 0.09 5188 1 msedge
203 16 17576 33356 0.06 6120 1 msedge
563 46 159464 236272 4.11 6540 1 msedge
1563 55 61920 175228 2.02 9520 1 msedge
162 9 2232 9960 0.03 10372 1 msedge
- 모든 인스턴스 중지
● -Name 매개변수를 사용하여 이름이 일치하는 모든 프로세스를 한 번에 중지할 수도 있음
● 사용 예시
PS C:\Users\security> Get-Process -N msedge
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
166 10 8400 20168 0.05 2008 1 msedge
346 25 13580 42668 0.64 2148 1 msedge
408 20 15588 43228 0.11 2972 1 msedge
239 14 8620 28556 0.09 5188 1 msedge
203 17 17696 33484 0.08 6120 1 msedge
558 45 150072 227252 4.53 6540 1 msedge
1545 55 61828 175684 2.19 9520 1 msedge
162 9 2272 10044 0.03 10372 1 msedge
PS C:\Users\security> Stop-Process -N msedge
PS C:\Users\security> Get-Process -N msedge
Get-Process : 이름이 "msedge"인 프로세스를 찾을 수 없습니다. 프로세스 이름을 검증하고 다시 cmdlet을 호출하십시오.
위치 줄:1 문자:1
+ Get-Process -N msedge
+ ~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (msedge:String) [Get-Process], ProcessCommandException
+ FullyQualifiedErrorId : NoProcessFoundForGivenName,Microsoft.PowerShell.Commands.GetProcessCommand
### 알아두기 ###
- msedgewebview2 프로세스는 Edge 브라우저와는 별개로 다른 응용 프로그램에서 웹 콘텐츠를 렌더링하는 데 사용될 수 있으므로 " Stop-Process -N msedge " 명령으로 종료되지 않음
● PowerShell은 다른 프로그램에 영향을 줄 수 있는 프로세스는 그대로 두어 시스템 안정성을 유지하기 때문임
Ⅳ. 매개변수 유형
1. 필수 매개변수
가. 필수 매개변수 개요
- 필수 매개변수는 cmdlet이 제대로 작동하기 위해 반드시 필요한 매개변수로, 만약 필수 매개변수를 빠뜨리면 PowerShell은 직접 사용자에게 값을 입력하라고 요청함
● 이는 cmdlet이 실행하는 데 필요한 핵심 정보를 제공해 달라는 의미임
나. Test-Connection cmdlet으로 알아본 필수 매개변수
- Test-Connection cmdlet은 어떤 컴퓨터에 연결할지 알아야 하므로 -ComputerName 매개변수가 필수임
- -ComputerName 매개변수 없이 Test-Connection만 입력하였을 경우
PS C:\Users\security> Test-Connection
cmdlet Test-Connection(명령 파이프라인 위치 1)
다음 매개 변수에 대한 값을 제공하십시오.
ComputerName[0]: google.com
ComputerName[1]:
Source Destination IPV4Address IPV6Address Bytes Time(ms)
------ ----------- ----------- ----------- ----- --------
DESKTOP-UN... google.com 142.###.###.### 32 37
DESKTOP-UN... google.com 142.###.###.### 32 41
DESKTOP-UN... google.com 142.###.###.### 32 47
DESKTOP-UN... google.com 142.###.###.### 32 40
● PowerShell은 위와 같이 ComputerName[0]: 프롬프트를 표시하며 값을 요청함
└ 값을 입력하면 ComputerName[1]: 프롬프트가 나타나는데, 이는 Test-Connection이 여러 대의 컴퓨터를 한꺼번에 테스트할 수 있다는 것을 보여줌
└ 추가할 대상이 더 없다면 그냥 [Enter]키를 입력하여 건너뛸 수 있음
2. 선택적 매개변수
가. 선택적 매개변수 개요
- 선택적 매개변수는 필수적이지는 않지만, cmdlet의 동작이나 출력을 미세 조정하는 데 사용됨
- 선택적 매개변수는 cmdlet을 더 유연하고 강력하게 만들어줌
나. -Quiet 스위치 매개변수와 -Count 매개변수로 알아본 선택적 매개변수
> Test-Connection google.com -Quiet
> Test-Connection google.com -Count 10
- 위의 두 cmdlet에서 -Quiet와 -Count는 필수 매개변수는 아니지만, Test-Connection cmdlet과 결합하여 출력 결과를 간결하게 바꾸거나 요청 횟수를 조절할 수 있음
3. 위치 매개변수 / 이름 매개변수
가. PowerShell에서 매개변수를 사용하는 두 가지 주요한 방법이 있음
나. 위치 매개변수
- 위치 매개변수는 매개변수 이름 없이 값만 제공해도 PowerShell이 그 위치를 보고 어떤 매개변수인지 알아냄
- 사용 예시
> Test-Connection google.com
> Get-Process chrome
● 위의 Test-Connection cmdlet에서 -ComputerName 매개변수가 생략되었으나 PowerShell은 google.com이 첫 번째 위치에 있으므로 -ComputerName의 값이라는 것을 이해함
● 위의 Get-Process cmdlet에서 -Name 매개변수가 생략되었으나 "Get-Process -Name chrome" cmdlet과 동일하게 작동함
└ PowerShell은 Get-Process 바로 뒤에 오는 chrome을 -Name 매개변수의 값으로 자동으로 할당함
다. 이름 매개변수
- 이름 매개변수는 매개변수 이름과 함께 값을 명시적으로 지정해야 함
- 이름을 생략하면 PowerShell은 어떤 매개변수에 값을 할당해야 할지 알 수 없어 에러 메시지를 출력함
- 이름 매개변수를 생략하고 값만 입력하였을 시
PS C:\Users\security> Get-Process 8844
Get-Process : 이름이 "8844"인 프로세스를 찾을 수 없습니다. 프로세스 이름을 검증하고 다시 cmdlet을 호출하십시오.
위치 줄:1 문자:1
+ Get-Process 8844
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (8844:String) [Get-Process], ProcessCommandException
+ FullyQualifiedErrorId : NoProcessFoundForGivenName,Microsoft.PowerShell.Commands.GetProcessCommand
● 원래 의도는 메모장 프로세스 ID인 8844를 사용해 메모장 프로세스 정보를 가져오려고 했으나, 위의 cmdlet은 8844라는 이름의 프로세스를 찾으려고 시도하기 때문에 "프로세스를 찾을 수 없습니다."라는 에러 메시지를 출력함
● 원래 의도한 바를 달성하기 위해서는 이름 매개변수인 -Id를 명시적으로 지정해주어야 함
PS C:\Users\security> Get-Process -Id 8844
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
662 36 32012 91456 0.45 8844 1 Notepad
라. 위치 매개변수와 이름 매개변수의 차이를 이해하면 PowerShell 스크립트를 더 효율적으로 작성하고 오류를 방지하는 데 큰 도움이 됨
마. 위치 매개변수는 간결한 cmdlet을 만드는 데 유용하고, 이름 매개변수는 더 명확하고 구체적인 cmdlet을 만드는데 필요함
끝.
'Windows PowerShell > Summary of study contents' 카테고리의 다른 글
3. PowerShell 도움말 시스템 (3) | 2025.08.14 |
---|---|
1. PowerShell 기본 사항 (3) | 2025.08.08 |