PowerShell 검색

PowerShell은 명령줄 셸이며 하나의 스크립팅 언어입니다. PowerShell은 관리 작업을 자동화하는 데 도움이 되도록 Windows에서 시작했습니다. 이제 플랫폼 간을 실행하며 다양한 작업에 사용할 수 있습니다.

PowerShell을 고유하게 만드는 것은 텍스트가 아닌 .NET 개체를 허용하고 반환한다는 점입니다. 이 기능을 사용하면 파이프라인에서 다른 명령을 더 쉽게 연결할 수 있습니다.

PowerShell의 용도

PowerShell 사용량은 Windows 전용인 시절부터 증가했습니다. 여전히 Windows 작업 자동화에 사용되지만, 현재는 다음과 같은 작업에 사용할 수 있습니다.

  • 클라우드 관리. PowerShell을 사용하여 클라우드 리소스를 관리할 수 있습니다. 예를 들어 클라우드 리소스에 대한 정보를 검색하고 새 리소스를 업데이트하거나 배포할 수 있습니다.
  • CI/CD. 연속 통합/지속적인 배포 파이프라인의 일부로 사용할 수도 있습니다.
  • Active Directory 및 Exchange에 대한 작업을 자동화합니다. 이를 사용하여 Active Directory에서 사용자를 만들고 Exchange에서 사서함을 만드는 것과 같은 Windows의 거의 모든 작업을 자동화할 수 있습니다.

훨씬 더 많은 영역에서 사용되고 있으며 앞의 목록을 통해 PowerShell이 크게 발전했음을 알 수 있습니다.

PowerShell을 사용하는 사람은 누구인가요?

PowerShell은 다양한 역할에서 작업하는 사람들을 도울 수 있는 강력한 도구입니다. 일반적으로 PowerShell은 시스템 관리자 역할에서 사용되었지만 현재는 DevOps, Cloud Ops, 개발자 등 다양한 사용자에 의해 사용되고 있습니다.

PowerShell cmdlet

PowerShell에는 수백 개의 사전 설치된 명령이 함께 제공됩니다. PowerShell 명령을 cmdlet(command-lets로 발음)이라고 합니다.

각 cmdlet의 이름은 동사-명사 쌍으로 구성됩니다. 예들 들어 Get-Process입니다. 이 명명 규칙을 사용하면 cmdlet이 수행하는 작업을 더욱 쉽게 이해할 수 있습니다. 또한 찾고자 하는 명령을 더 쉽게 찾을 수 있습니다. 사용할 cmdlet을 찾는 경우 동사 또는 명사를 필터링할 수 있습니다.

cmdlet을 사용하여 PowerShell 탐색

PowerShell을 처음 선택하면 학습할 내용이 너무 많은 것 같아서 어렵게 느껴질 수 있습니다. PowerShell은 필요에 따라 한 번에 조금씩 학습할 수 있도록 설계되었습니다.

PowerShell에는 PowerShell을 검색하는 데 도움이 되는 cmdlet이 포함되어 있습니다. 이러한 세 cmdlet을 사용하여 사용할 수 있는 명령, 명령의 작업 및 작동하는 형식을 검색할 수 있습니다.

  • Get-Verb. 이 명령을 실행하면 대부분의 명령이 준수하는 동사 목록이 반환됩니다. 응답에는 이러한 동사가 수행하는 작업을 설명합니다. 대부분의 명령은 이 명명 규칙을 따르므로 명령이 수행하는 작업을 예상합니다. 이렇게 하면 적절한 명령과 명령을 만들 때 어떤 이름을 지정할지 선택할 수 있습니다.
  • Get-Command. 이 명령은 머신에 설치된 모든 명령 목록을 검색합니다.
  • Get-Member. 개체 기반 출력에서 작동하며 명령에 사용할 수 있는 개체, 속성 및 메서드를 검색할 수 있습니다.
  • Get-Help. 명령 이름으로 이 명령을 인수로 호출하면 명령의 다양한 부분을 설명하는 도움말 페이지가 표시됩니다.

이러한 명령을 사용하여 PowerShell에 대해 알고 있어야 하는 거의 모든 사항을 검색할 수 있습니다.

동사

‘동사’는 PowerShell에서 중요한 개념입니다. 대부분의 cmdlet이 따르는 명명 표준입니다. 또한 고유한 명령을 작성할 때 따라야 하는 명명 표준이기도 합니다. 동사는 데이터를 읽거나 변경하는 것과 같이 수행하려는 작업을 말한다는 것입니다. PowerShell에는 표준화된 동사 목록이 있습니다. 가능한 모든 동사의 전체 목록을 가져오려면 Get-Verb cmdlet을 사용합니다.

Get-Verb

cmdlet은 동사의 긴 목록을 반환합니다. 설명동사가 수행하는 작업에 대한 컨텍스트를 제공합니다. 출력의 처음 몇 행은 다음과 같습니다.

Verb    AliasPrefix   Group     Description
----    -----------   -----     -----------
Add     a             Common    Adds a resource to a container, or attaches an item to another item
Clear   cl            Common    Removes all the resources from a container but does not delete the container
Close   cs            Common    Changes the state of a resource to make it inaccessible, unavailable, or unusab…
Copy    cp            Common    Copies a resource to another name or to another container
Enter   et            Common    Specifies an action that allows the user to move into a resource
Exit    ex            Common    Sets the current environment or context to the most recently used context
...

Get-Command를 사용하여 명령 찾기

cmdlet은 Get-Command 시스템에 설치된 사용 가능한 모든 명령 목록을 반환합니다. 당신이 다시 얻을 목록은 매우 큽다. 매개 변수 또는 도우미 cmdlet을 사용하여 응답을 필터링하여 반환되는 정보의 양을 제한할 수 있습니다.

이름 필터링

다른 매개 변수를 사용하는 출력을 Get-Command 필터링할 수 있습니다. 필터링을 사용하면 특정 속성이 있는 명령을 찾을 수 있습니다. Name 매개 변수를 사용하면 이름으로 특정 명령을 찾을 수 있습니다.

Get-Command -Name Get-Process
CommandType     Name              Version    Source
-----------     ----              -------    ------
Cmdlet          Get-Process       7.0.0.0    Microsoft.PowerShell.Management

프로세스에서 작동하는 모든 명령을 찾으려면 어떻게 해야 할까요? wild카드 * 사용하여 다른 형식의 문자열을 일치시킬 수 있습니다. 예시:

Get-Command -Name *-Process
CommandType     Name              Version    Source
-----------     ----              -------    ------
Cmdlet          Debug-Process     7.0.0.0    Microsoft.PowerShell.Management
Cmdlet          Get-Process       7.0.0.0    Microsoft.PowerShell.Management
Cmdlet          Start-Process     7.0.0.0    Microsoft.PowerShell.Management
Cmdlet          Stop-Process      7.0.0.0    Microsoft.PowerShell.Management
Cmdlet          Wait-Process      7.0.0.0    Microsoft.PowerShell.Management

명사 및 동사 필터링

동사 및 명사 값을 필터링하는 다른 매개 변수가 있습니다. 명령 이름의 동사 부분은 맨 왼쪽 부분입니다. 동사는 cmdlet에서 반환된 Get-Verb 값 중 하나여야 합니다. 명령의 가장 오른쪽 부분은 명사 부분입니다. 명사도 무엇이든 될 수 있습니다.

  • 동사에서 필터링합니다. 명령 Get-Process에서 동사 부분은 .입니다 Get. 동사 부분을 필터링하려면 동사 매개 변수를 사용합니다.

    Get-Command -Verb 'Get'
    

    이 예제에서는 동 Get사를 사용하는 모든 명령을 나열합니다.

  • 명사에서 필터링합니다. 명령 Get-Process에서 명사 부분은 .입니다 Process. 명사에서 필터링하려면 명사 매개 변수를 사용합니다. 다음 예제에서는 문자 U로 시작하는 명사로 시작하는 모든 cmdlet을 반환합니다.

    Get-Command -Noun U*
    

또한 매개 변수를 결합하여 검색 범위를 좁힐 수 있습니다. 예를 들면 다음과 같습니다.

Get-Command -Verb Get -Noun U*
CommandType     Name                         Version    Source
-----------     ----                         -------    ------
Cmdlet          Get-UICulture                7.0.0.0    Microsoft.PowerShell.Utility
Cmdlet          Get-Unique                   7.0.0.0    Microsoft.PowerShell.Utility
Cmdlet          Get-Uptime                   7.0.0.0    Microsoft.PowerShell.Utility

도우미 cmdlet을 사용하여 결과 필터링

다른 cmdlet을 사용하여 결과를 필터링할 수도 있습니다.

  • Select-Object. 이 다양한 명령을 사용하면 하나 이상의 개체에서 특정 속성을 선택할 수 있습니다. 다시 가져오는 항목의 수를 제한할 수도 있습니다. 다음은 현재 세션에서 사용할 수 있는 처음 5개 명령에 대한 NameSource 속성 값을 반환하는 예제입니다.

    Get-Command | Select-Object -First 5 -Property Name, Source
    
    Name                      Source
    ----                      ------
    Add-AppPackage            Appx
    Add-AppPackageVolume      Appx
    Add-AppProvisionedPackage Dism
    Add-AssertionOperator     Pester
    Add-ProvisionedAppPackage Dism
    

    자세한 내용은 Select-Object를 참조 하세요.

  • Where-Object. 이 cmdlet을 사용하면 속성 값에 따라 반환되는 개체를 필터링할 수 있습니다. 이 명령은 속성 값을 테스트할 수 있는 식을 사용합니다. 다음 예제에서는 .로 p시작하는 모든 프로세스를 ProcessName 반환합니다.

    Get-Process | Where-Object {$_.ProcessName -like "p*"}
    

    cmdlet은 Get-Process 프로세스 개체의 컬렉션을 반환합니다. 응답을 필터링하려면 출력을 .에 파이프 합니다 Where-Object. 파이핑은 두 개 이상의 명령이 파이프 | 문자를 통해 연결됨을 의미합니다. 한 명령의 출력은 다음 명령에 대한 입력으로 전송됩니다. 연산자를 -like 사용하여 문자p로 시작하는 프로세스를 일치시키는 필터 식 Where-Object 입니다.

Get-Member를 사용하여 개체 탐색

원하는 cmdlet을 찾을 수 있게 되면 생성되는 출력에 대해 자세히 알고 싶습니다. cmdlet은 Get-Member 개체의 형식, 속성 및 메서드를 표시합니다. 검사할 출력을 파이프합니다 Get-Member.

Get-Process | Get-Member

결과는 반환된 형식 TypeName 과 개체의 모든 속성 및 메서드를 표시합니다. 이러한 결과의 발췌는 다음과 같습니다.

TypeName: System.Diagnostics.Process

Name        MemberType     Definition
----        ----------     ----------
Handles     AliasProperty  Handles = Handlecount
Name        AliasProperty  Name = ProcessName
...

MemberType 매개 변수를 사용하여 반환된 정보를 제한할 수 있습니다.

Get-Process | Get-Member -MemberType Method

기본적으로 PowerShell은 몇 가지 속성만 표시합니다. 이전 예제에서는 및 MemberTypeDefinition 멤버를 Name표시했습니다. 보려는 속성을 지정하는 데 사용할 Select-Object 수 있습니다. 예를 들어 다음과 Definition 같은 속성만 Name 표시하려고 합니다.

Get-Process | Get-Member | Select-Object Name, Definition

매개 변수 유형별 검색

Get-Member프로세스 형식 개체를 반환하는 것을 Get-Process 보여 주었습니다. ParameterType 매개 변수를 Get-Command사용하여 Process 개체를 입력으로 사용하는 다른 명령을 찾을 수 있습니다.

Get-Command -ParameterType Process
CommandType     Name                         Version    Source
-----------     ----                         -------    ------
Cmdlet          Debug-Process                7.0.0.0    Microsoft.PowerShell.Managem…
Cmdlet          Enter-PSHostProcess          7.1.0.0    Microsoft.PowerShell.Core
Cmdlet          Get-Process                  7.0.0.0    Microsoft.PowerShell.Managem…
Cmdlet          Get-PSHostProcessInfo        7.1.0.0    Microsoft.PowerShell.Core
Cmdlet          Stop-Process                 7.0.0.0    Microsoft.PowerShell.Managem…
Cmdlet          Wait-Process                 7.0.0.0    Microsoft.PowerShell.Managem…

명령의 출력 형식을 알면 관련 명령에 대한 검색 범위를 좁힐 수 있습니다.

추가 리소스