Information Security Lab

Research on penetration testing and information security

Windows PowerShell/Summary of study contents

2. PowerShell 매개변수 값 및 형식

information-security-lab 2025. 8. 13. 22:28
목차

Ⅰ. 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