대부분의 명령줄 인터페이스의 경우 명령 이름과 명령 매개 변수 이름을 익히는 데 많은 시간이 걸립니다. 문제는 일정한 패턴이 없기 때문에 정기적으로 사용해야 하는 각 명령과 매개 변수를 익히려면 기억에만 의존해야 한다는 것입니다.

새 명령이나 매개 변수를 사용하여 작업할 경우 대개 기존 명령이나 매개 변수를 사용할 수 없기 때문에 새 이름을 찾아서 익혀야 합니다. 기능을 점차 추가하는 방식으로 인터페이스를 작은 도구 집합에서 점차 확장한다는 사실에 주목하면 인터페이스 구조가 표준 구조가 아닌 이유를 쉽게 이해할 수 있습니다. 특히 명령 이름과 관련해서 각 명령은 별도의 도구이기 때문에 이것이 논리적으로 들릴 수 있지만 명령 이름을 처리할 수 있는 더 좋은 방법이 있습니다.

대부분의 명령은 서비스나 프로세스와 같은 운영 체제 요소나 응용 프로그램을 관리하도록 만들어졌습니다. 명령에는 계열과 맞거나 맞지 않을 수 있는 다양한 이름이 있습니다. 예를 들어 Windows 시스템에서는 net start 명령과 net stop 명령을 사용하여 서비스를 시작하고 중지할 수도 있지만 net 서비스 명령의 이름 패턴과 맞지 않는 완전히 다른 sc라는 이름을 가진 보다 일반화된 서비스 제어 도구를 사용하여 서비스를 시작하고 중지할 수도 있습니다. Windows 프로세스 관리 명령으로는 프로세스를 표시하는 tasklist 명령과 프로세스를 종료하는 taskkill 명령이 있습니다.

명령에 사용되는 매개 변수는 불규칙적으로 적용됩니다. net start 명령으로는 원격 컴퓨터의 서비스를 시작할 수 없지만 sc 명령으로는 원격 컴퓨터의 서비스를 시작할 수 있습니다. 그러나 이 경우 원격 컴퓨터를 지정하려면 원격 컴퓨터 이름 앞에 두 개의 백슬래시를 입력해야 합니다. 예를 들어 DC01이라는 원격 컴퓨터에서 스풀러 서비스를 시작하려면 sc \\DC01 start spooler를 입력하고, DC01에서 실행 중인 작업을 표시하려면 tasklist /S DC01과 같이 /S("시스템"을 나타냄) 매개 변수를 사용하고 DC01 이름을 백슬래시 없이 제공해야 합니다.

서비스와 프로세스 사이에는 중요한 기술적인 차이가 있지만 둘 다 수명 주기가 잘 정의된 컴퓨터에서 관리가 가능한 요소입니다. 서비스나 프로세스를 중지 또는 시작하거나 현재 실행 중인 모든 서비스나 프로세스의 목록을 볼 수 있습니다. 즉, 서비스와 프로세스는 서로 다른 요소이지만 일반적으로 서비스나 프로세스에 대해 수행하는 작업은 개념상 동일합니다. 또한 매개 변수를 지정하여 이러한 작업을 사용자 지정하기 위해 선택할 수 있는 옵션도 개념상 유사합니다.

이러한 유사함을 이용하면 Windows PowerShell에서 cmdlet을 익히고 사용하기 위해 알아야 하는 개별 이름의 수를 줄일 수 있습니다.

쉽게 기억할 수 있는 Cmdlet의 동사-명사 이름 사용

Windows PowerShell은 "동사-명사" 이름 체계를 사용하며, 각 cmdlet 이름은 표준 동사에 특정 명사를 하이픈으로 연결하여 구성됩니다. Windows PowerShell 동사는 반드시 영어가 아니어도 되지만 Windows PowerShell의 특정 동작을 나타내야 합니다. 명사는 모든 언어의 명사와 매우 유사하며 시스템 관리에 중요한 특정 유형의 개체를 나타냅니다. 동사와 명사로 구성된 이름을 몇 개만 살펴보면 두 부분으로 구성된 이러한 이름이 얼마나 기억하기 쉬운지 쉽게 알 수 있습니다.

명사는 덜 제한적이지만 항상 명령의 실행 대상을 나타내야 합니다. Windows PowerShell에는 Get-Process, Stop-Process, Get-ServiceStop-Service와 같은 명령이 있습니다.

두 개의 명사와 두 개의 동사로 구성된 이름의 경우 일관성이 있어도 기억하기가 쉽지 않습니다. 그러나 10개의 동사와 10개의 명사로 구성된 표준 집합이 있다고 가정할 경우 20개의 단어만 기억하면 되지만 이러한 단어를 사용하여 100개의 고유한 명령 이름을 만들 수 있습니다.

종종 이름만으로 명령이 수행하는 작업을 알 수 있으며 대개 새 명령에 사용해야 하는 이름도 쉽게 확인할 수 있습니다. 예를 들어 컴퓨터 종료 명령은 Stop-Computer이고, 네트워크에 있는 모든 컴퓨터를 보여 주는 명령은 Get-Computer이며, 시스템 날짜를 표시하는 명령은 Get-Date일 수 있습니다.

Get-Command(Get-Command에 대해서는 다음 단원에 자세히 설명되어 있음)와 함께 -Verb 매개 변수를 사용하면 특정 동사가 포함된 모든 명령을 표시할 수 있습니다. 예를 들어 동사 Get을 사용하는 모든 cmdlet을 보려면 다음과 같이 입력하십시오.

PS> Get-Command -Verb Get
CommandType     Name                            Definition
-----------     ----                            ----------
Cmdlet          Get-Acl                         Get-Acl [[-Path] <String[]>]...
Cmdlet          Get-Alias                       Get-Alias [[-Name] <String[]...
Cmdlet          Get-AuthenticodeSignature       Get-AuthenticodeSignature [-...
Cmdlet          Get-ChildItem                   Get-ChildItem [[-Path] <Stri...
...

-Noun 매개 변수는 동일한 유형의 개체에 영향을 주는 명령 계열을 볼 수 있게 해 주므로 훨씬 더 유용합니다. 예를 들어 서비스를 관리하는 데 사용할 수 있는 명령을 보려면 다음 명령을 입력하십시오.

PS> Get-Command -Noun Service
CommandType     Name                            Definition
-----------     ----                            ----------
Cmdlet          Get-Service                     Get-Service [[-Name] <String...
Cmdlet          New-Service                     New-Service [-Name] <String>...
Cmdlet          Restart-Service                 Restart-Service [-Name] <Str...
Cmdlet          Resume-Service                  Resume-Service [-Name] <Stri...
Cmdlet          Set-Service                     Set-Service [-Name] <String>...
Cmdlet          Start-Service                   Start-Service [-Name] <Strin...
Cmdlet          Stop-Service                    Stop-Service [-Name] <String...
Cmdlet          Suspend-Service                 Suspend-Service [-Name] <Str... 
...

단지 동사-명사 이름 체계를 사용한다고 해서 명령을 cmdlet이라고 할 수는 없습니다. cmdlet이 아니지만 동사-명사 이름을 사용하는 기본 Windows PowerShell 명령의 한 예로 콘솔 창을 지우는 명령인 Clear-Host를 들 수 있습니다. 다음과 같이 Get-Command를 실행하면 알 수 있듯이 Clear-Host 명령은 실제로 내부 함수입니다.

PS> Get-Command -Name Clear-Host

CommandType     Name                            Definition
-----------     ----                            ----------
Function        Clear-Host                      $spaceType = [System.Managem...

표준 매개 변수 사용

앞에서 설명한 대로 이전의 명령줄 인터페이스에 사용되는 명령은 대개 일관된 매개 변수 이름을 사용하지 않으며, 어떤 경우는 매개 변수에 아예 이름이 없습니다. 이름이 있어도 단일 문자나 약어로 되어 있어 신속하게 입력할 수는 있지만 새로운 사용자가 쉽게 이해하기 힘듭니다.

대부분의 다른 이전 명령줄 인터페이스와 달리 Windows PowerShell에서는 매개 변수를 직접 처리하며, 매개 변수에 대한 이러한 직접 액세스와 함께 개발자 지침을 사용하여 매개 변수 이름을 표준화합니다. 이렇게 해도 모든 cmdlet이 항상 표준 이름을 사용하는 것은 아니지만 표준화를 촉진합니다.

참고:

매개 변수 이름 앞에는 Windows PowerShell이 매개 변수로 명확히 식별할 수 있도록 '-'이 옵니다. 예를 들어 Get-Command -Name Clear-Host에서 매개 변수 이름이 실제로는 Name이지만 -Name으로 입력되어 있습니다.

다음은 표준 매개 변수의 이름과 사용 방법에 대한 몇 가지 일반적인 특징입니다.

도움말 매개 변수(?)

-? 매개 변수를 cmdlet에 지정하면 cmdlet이 실행되는 대신 cmdlet에 대한 도움말이 표시됩니다.

일반 매개 변수

Windows PowerShell에는 일반 매개 변수라고 하는 여러 개의 매개 변수가 있습니다. 이러한 매개 변수는 Windows PowerShell 엔진에 의해 제어되므로 cmdlet에 의해 구현될 때마다 항상 동일한 방식으로 동작합니다. 일반 매개 변수로는 WhatIf, Confirm, Verbose, Debug, Warn, ErrorAction, ErrorVariable, OutVariableOutBuffer가 있습니다.

권장 매개 변수

Windows PowerShell 핵심 cmdlet은 유사한 매개 변수에 표준 이름을 사용합니다. 매개 변수 이름을 반드시 사용해야 하는 것은 아니지만 Windows PowerShell에는 표준 이름 사용을 권장하는 명시적 지침이 있습니다.

예를 들어 이 지침에서는 Server, Host, System, Node 또는 기타 일반적인 대체 단어가 아니라 ComputerName과 같이 컴퓨터를 이름으로 참조하는 매개 변수 이름을 권장합니다. 이러한 권장 매개 변수 이름으로는 Force, Exclude, Include, PassThru, PathCaseSensitive가 있습니다.




목차