PowerShell 이름 학습Learning PowerShell names

명령 및 매개 변수의 이름을 학습하려면 대부분의 명령줄 인터페이스에서 상당한 시간이 소요됩니다.Learning names of commands and parameters requires a significant time investment with most command-line interfaces. 이러한 문제는 몇 가지 패턴에 따라 발생합니다.The issue is that there are few patterns. 정기적으로 사용해야 하는 명령 및 매개 변수를 학습하는 유일한 방법이 바로 암기입니다.Memorization is only way to learn the commands and parameters that you need to use on a regular basis.

새 명령 또는 매개 변수를 사용할 때 항상 이미 알고 있는 항목을 사용할 수는 없습니다.When you work with a new command or parameter, you can't always use what you already know. 새 이름을 찾아 학습해야 합니다.You have to find and learn a new name. 일반적으로 명령줄 인터페이스는 소수의 도구로 시작해서 점점 증가하게 됩니다.Traditionally, command-line interfaces start with a small set of tools and grow with incremental additions. 표준 구조가 없는 이유도 쉽게 이해됩니다.It's easy to see why there's no standard structure. 각 명령이 별도 도구이므로 명령 이름에는 이러한 방식이 논리적일 수 있습니다.This seems logical for command names since each command is a separate tool. PowerShell에는 명령 이름을 처리하는 더 좋은 방법이 있습니다.PowerShell has a better way to handle command names.

기존 셸에서 명령 이름 학습Learning command names in traditional shells

대부분의 명령은 서비스나 프로세스와 같은 운영 체제 또는 응용 프로그램의 요소를 관리하도록 작성되었습니다.Most commands are built to manage elements of the operating system or applications, such as services or processes. 명령에는 패밀리에 맞거나 맞지 않을 수 있는 이름이 있습니다.The commands have names that may or may not fit into a family. 예를 들어 Windows 시스템에서는 net startnet stop 명령을 사용하여 서비스를 시작하고 중지할 수 있습니다.For example, on Windows systems, you can use the net start and net stop commands to start and stop a service. Sc.exe는 또 다른 Windows용 서비스 제어 도구입니다.Sc.exe is another service control tool for Windows. 이 이름이 net.exe 서비스 명령에 대한 명명 패턴에는 맞지 않습니다.That name does not fit into the naming pattern for the net.exe service commands. 프로세스 관리의 경우 Windows에는 프로세스를 표시하는 tasklist.exe 명령과 프로세스를 중단하는 taskkill.exe 명령이 있습니다.For process management, Windows has the tasklist.exe command to list processes and the taskkill.exe command to kill processes.

또한 이러한 명령에는 불규칙한 매개 변수 사양이 있습니다.Also, these commands have irregular parameter specifications. net start 명령을 사용하여 원격 컴퓨터에서 서비스를 시작할 수는 없습니다.You can't use the net start command to start a service on a remote computer. sc.exe 명령을 사용하여 원격 컴퓨터에서 서비스를 시작할 수 있습니다.The sc.exe command can start a service on a remote computer. 하지만 원격 컴퓨터를 지정하려면 이름 앞에 이중 백슬래시를 사용해야 합니다.But to specify the remote computer, you must prefix its name with a double backslash. DC01이라는 원격 컴퓨터에서 스풀러 서비스를 시작하려면 sc.exe \\DC01 start spooler를 입력합니다.To start the spooler service on a remote computer named DC01, you type sc.exe \\DC01 start spooler. DC01에서 실행되는 작업을 나열하려면 /S 매개 변수와 컴퓨터 이름을 백슬래시 없이 사용합니다.To list tasks running on DC01, you use the /S parameter and the computer name without backslashes. 정의합니다(예: tasklist /S DC01).For example, tasklist /S DC01.

참고

PowerShell v6 이전에는 scSet-Content cmdlet에 대한 별칭이었습니다.Prior to PowerShell v6, sc was an alias for the Set-Content cmdlet. sc.exe 명령을 실행하려면 파일 확장명을 포함해야 합니다.To run the sc.exe command, you must include the file extension.

서비스 및 프로세스는 컴퓨터에서 수명 주기가 잘 정의된 관리 가능 요소의 예입니다.Services and processes are examples of manageable elements on a computer that have well-defined life cycles. 서비스 및 프로세스를 시작 또는 중지하거나, 현재 실행 중인 모든 서비스나 프로세스의 목록을 가져올 수 있습니다.You may start or stop services and processes, or get a list of all currently running services or processes. 서비스 및 프로세스 간에는 중요한 기술적 차이가 있지만, 서비스 및 프로세스에서 수행하는 작업은 개념적으로 동일합니다.Although there are important technical distinctions between them, the actions you perform on services and processes are conceptually the same. 또한 매개 변수를 지정하여 작업을 사용자 지정하기 위해 선택할 수 있는 사항도 개념적으로 유사할 수 있습니다.Furthermore, the choices we make to customize an action by specifying parameters may be conceptually similar as well.

PowerShell은 이러한 유사성을 이용하여 cmdlet을 이해하고 사용하기 위해 알아야 하는 고유 이름 수를 줄입니다.PowerShell exploits these similarities to reduce the number of distinct names you need to know to understand and use cmdlets.

cmdlet에 명령을 쉽게 기억할 수 있도록 verb-noun 이름 사용Cmdlets use verb-noun names to reduce command memorization

PowerShell은 "verb-noun" 명명 시스템을 사용합니다.PowerShell uses a "verb-noun" naming system. 각 cmdlet 이름은 표준 동사와 특정 명사를 하이픈으로 연결해 만듭니다.Each cmdlet name consists of a standard verb hyphenated with a specific noun. PowerShell verb는 영어 동사가 아닐 수도 있지만 PowerShell에서 특정 작업을 나타냅니다.PowerShell verbs are not always English verbs, but they express specific actions in PowerShell. noun은 모든 언어의 명사와 매우 유사합니다.Nouns are very much like nouns in any language. 시스템 관리에서 중요한 특정 유형의 개체를 설명합니다.They describe specific types of objects that are important in system administration. 몇 가지 예를 살펴보면 두 부분으로 이루어진 이러한 이름이 학습에 어떻게 도움이 되는지를 쉽게 확인할 수 있습니다.It's easy to demonstrate how these two-part names reduce learning effort by looking at a few examples.

PowerShell에는 권장되는 표준 verb 집합이 있습니다.PowerShell has a recommended set of standard verbs. noun은 덜 제한적이지만 verb가 작용하는 대상을 설명합니다.Nouns are less restricted, but always describe what the verb acts upon. PowerShell에는 Get-Process, Stop-Process, Get-ServiceStop-Service와 같은 명령이 있습니다.PowerShell has commands such as Get-Process, Stop-Process, Get-Service, and Stop-Service.

noun 2개와 verb 2개를 포함하는 이 예제에서 일관성을 유지해도 학습이 크게 간소화되지 않습니다.For this example of two nouns and verbs, consistency does not simplify learning that much. 이 목록을 10개의 verb와 10개의 noun으로 이루어진 표준화된 집합으로 확장합니다.Extend that list to a standardized set of 10 verbs and 10 nouns. 이제 20개의 단어만 이해하면 됩니다.Now you only have 20 words to understand. 하지만 이러한 단어는 100개의 고유한 명령 이름으로 조합될 수 있습니다.But those words can be combined to form 100 distinct command names.

이름을 참조하여 PowerShell 명령이 수행하는 작업을 쉽게 이해할 수 있습니다.It's easy to understand what a PowerShell command does by reading its name. 컴퓨터를 종료하는 명령은 Stop-Computer입니다.The command to shut down a computer is Stop-Computer. 네트워크에 있는 모든 컴퓨터를 나열하는 명령은 Get-Computer입니다.The command to list all computers on a network is Get-Computer. 시스템 날짜를 가져오는 명령은 Get-Date입니다.The command to get the system date is Get-Date.

Get-Command에 대해 Verb 매개 변수를 사용하여 특정 verb를 포함하는 모든 명령을 나열할 수 있습니다.You can list all commands that include a particular verb with the Verb parameter for Get-Command. 예를 들어 verb Get을 사용하는 모든 cmdlet을 보려면 다음과 같이 입력합니다.For example, to see all cmdlets that use the verb Get, type:

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 매개 변수를 사용합니다.Use the Noun parameter to see a family of commands that affect the same type of object. 예를 들어, 서비스 관리에 사용할 수 있는 명령을 보려면 다음 명령을 실행합니다.For example, run following command to see the commands available for managing services:

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에서 표준 매개 변수 사용Cmdlets use standard parameters

앞에서 설명한 것처럼 기존 명령줄 인터페이스에서 사용되는 명령이 항상 일관된 매개 변수 이름을 갖는 것은 아닙니다.As noted earlier, commands used in traditional command-line interfaces don't always have consistent parameter names. 매개 변수는 입력하기는 쉽지만 초보 사용자가 이해하기 어려운 단일 문자나 약어로 되어 있는 경우가 많습니다.Parameters are often single-character or abbreviated words that are easy to type but aren't easily understood by new users.

대부분의 다른 기존 명령줄 인터페이스와 달리 PowerShell은 매개 변수를 직접 처리하며, 매개 변수에 대한 이러한 직접 액세스와 함께 개발자 지침을 사용하여 매개 변수 이름을 표준화합니다.Unlike most other traditional command-line interfaces, PowerShell processes parameters directly, and it uses this direct access to the parameters along with developer guidance to standardize parameter names. 이 지침에 따르면 모든 cmdlet이 표준을 준수하도록 권장되지만 항상 표준을 따른다고 보장할 수는 없습니다.This guidance encourages but does not guarantee that every cmdlet conforms to the standard.

PowerShell은 매개 변수 구분 기호도 표준화합니다.PowerShell also standardizes the parameter separator. 매개 변수를 PowerShell 명령과 함께 사용할 때는 항상 이름 앞에 ‘-’을 사용합니다.Parameter names always have a '-' prepended to them with a PowerShell command. 다음과 같은 예제를 참조하세요.Consider the following example:

Get-Command -Name Clear-Host

매개 변수의 이름은 Name이지만 명령줄에서 매개 변수로 사용할 때는 -Name으로 입력됩니다.The parameter's name is Name, but it is typed as -Name when used on the command line as a parameter.

다음은 표준 매개 변수 이름 및 사용법의 몇 가지 일반적인 특성입니다.Here are some of the general characteristics of the standard parameter names and usages.

도움말 매개 변수(?)The Help parameter (?)

cmdlet에서 -? 매개 변수를 지정하면 PowerShell에서 해당 cmdlet에 대한 도움말이 표시됩니다.When you specify the -? parameter on any cmdlet, PowerShell displays help for the cmdlet. cmdlet은 실행되지 않습니다.The cmdlet is not executed.

공통 매개 변수Common parameters

PowerShell에는 몇 가지 공통 매개 변수가 있습니다.PowerShell has several common parameters. 이러한 매개 변수는 PowerShell 엔진에 의해 제어됩니다.These parameters are controlled by the PowerShell engine. 공통 매개 변수는 항상 동일한 방법으로 작동합니다.Common parameters always behave the same way. 일반 매개 변수로는 WhatIf, Confirm, Verbose, Debug, Warn, ErrorAction, ErrorVariable, OutVariableOutBuffer가 있습니다.The common parameters are WhatIf, Confirm, Verbose, Debug, Warn, ErrorAction, ErrorVariable, OutVariable, and OutBuffer.

PowerShell 핵심 cmdlet은 유사한 매개 변수에 표준 이름을 사용합니다.The PowerShell core cmdlets use standard names for similar parameters. 반드시 이러한 표준 이름을 사용해야 하는 것은 아니지만 표준 이름 사용을 권장하는 명시적 지침이 있습니다.The use of these standard names is not enforced, but there is explicit guidance to encourage standardization.

예를 들어 컴퓨터를 나타내는 매개 변수의 권장되는 이름은 Server, Host, System, Node 또는 기타 일반적인 대체 단어가 아니라 ComputerName입니다.For example, the recommended name for a parameter that refers to a computer is ComputerName, rather than Server, Host, System, Node, or some other common alternative. 기타 중요한 권장 매개 변수 이름으로는 Force, Exclude, Include, PassThru, PathCaseSensitive가 있습니다.Other important recommended parameter names are Force, Exclude, Include, PassThru, Path, and CaseSensitive.