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개 명령에 대한 Name 및 Source 속성 값을 반환하는 예제입니다.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은 몇 가지 속성만 표시합니다. 이전 예제에서는 및 MemberType
Definition
멤버를 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…
명령의 출력 형식을 알면 관련 명령에 대한 검색 범위를 좁힐 수 있습니다.
추가 리소스
PowerShell