2장 - 도움말 시스템

두 IT 전문가 그룹이 PowerShell을 관련 기술 수준 확인을 위해 컴퓨터를 이용할 수 없는 필기시험을 받았습니다. PowerShell 초보자는 한 그룹에 배치되었고 다른 그룹에는 전문가가 배치되었습니다. 테스트 결과 두 그룹 간의 기술 수준은 큰 차이가 없었습니다. 두 그룹 모두 첫 번째 테스트와 유사한 두 번째 테스트를 받았습니다. 이번에는 인터넷에 액세스할 수 없는 PowerShell을 사용하는 컴퓨터에 대한 액세스 권한이 부여되었습니다. 두 번째 테스트의 결과는 두 그룹 간의 기술 수준에서 큰 차이를 보였습니다. 전문가들은 항상 답을 알지는 못하지만 답을 파악하는 방법을 알고 있습니다.

이 두 그룹 간의 첫 번째 및 두 번째 테스트 결과의 차이는 무엇인가요?

이 두 테스트에서 관찰된 차이점은 전문가가 PowerShell에서 수천 개의 명령을 사용하는 방법을 기억하지 않기 때문입니다. PowerShell 내에서 도움말 시스템을 매우 잘 사용하는 방법을 알아봅니다. 필요할 때 필요한 명령을 확인하고 확인한 명령의 사용 방법을 알아낼 수 있습니다.

PowerShell 개발자인 Jeffrey Snover가 이와 비슷한 이야기를 여러 번 들려주었습니다.

PowerShell을 제대로 활용하려면 도움말 시스템을 숙지해야 합니다.

검색 가능성

PowerShell에서 컴파일된 명령을 cmdlet이라고 합니다. Cmdlet은 (CMD let이 아닌) "command-let"으로 발음합니다. Cmdlet 이름은 쉽게 검색할 수 있도록 단수 "동사-명사" 명령 형식입니다. 예를 들어 실행 중인 Get-Process 프로세스를 결정하는 cmdlet과 서비스 목록 및 해당 상태 검색하기 위한 cmdlet이 Get-Service있습니다. PowerShell에는 이 책의 뒷부분에서 다룰 별칭 및 함수와 같은 다른 유형의 명령이 있습니다. PowerShell 명령이라는 용어는 cmdlet, 함수 또는 별칭인지 여부에 관계없이 PowerShell에서 모든 유형의 명령을 참조하는 데 자주 사용되는 제네릭 용어입니다.

PowerShell의 세 가지 주요 Cmdlet

  • Get-Command
  • Get-Help
  • Get-Member(3장에서 설명)

자주 묻는 질문 중 하나는 PowerShell에서 명령이 무엇인지 어떻게 파악하는가하는 것입니다. 둘 다 Get-Command 명령을 Get-Help 결정하는 데 사용할 수 있습니다.

Get-Help

Get-Help 는 다목적 명령입니다. Get-Help 에서는 명령을 찾은 후 명령을 사용하는 방법을 알아볼 수 있습니다. Get-Help 은 명령을 찾는 데도 사용할 수 있지만 비교했을 때는 다른 간접적인 방식으로 사용할 수 Get-Command있습니다.

명령을 찾는 데 사용되는 경우 Get-Help 먼저 제공된 입력에 따라 명령 이름의 야생카드 일치 항목을 검색합니다. 일치 항목을 찾지 못하면 도움말 항목 자체를 검색하고 일치하는 항목이 없으면 오류가 반환됩니다. 대중적인 믿음과는 달리 도움말 Get-Help 항목이 없는 명령을 찾는 데 사용할 수 있습니다.

PowerShell의 도움말 시스템에 대해 가장 먼저 알아야 할 것은 cmdlet을 사용하는 Get-Help 방법입니다. 다음 명령은 에 대한 Get-Help도움말 항목을 표시하는 데 사용됩니다.

Get-Help -Name Get-Help
Do you want to run Update-Help?
The Update-Help cmdlet downloads the most current Help files for Windows PowerShell
modules, and installs them on your computer. For more information about the Update-Help
cmdlet, see http://go.microsoft.com/fwlink/?LinkId=210614.
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"):

PowerShell 버전 3부터 PowerShell 도움말은 운영 체제와 함께 제공되지 않습니다. 명령에 대해 처음 Get-Help 실행되면 이전 메시지가 표시됩니다. help cmdlet 대신 함수 또는 man 별칭을 Get-Help 사용하는 경우 이 프롬프트가 표시되지 않습니다.

Y 키를 눌러 예라고 대답하면 기본적으로 인터넷 액세스가 필요한 cmdlet이 실행됩니다Update-Help. Y 는 대문자 또는 소문자로 지정할 수 있습니다.

도움말이 다운로드되고 업데이트가 완료되면 지정된 명령에 대한 도움말 항목이 반환됩니다.

Get-Help -Name Get-Help

잠시 시간을 내어 컴퓨터에서 해당 예제를 실행하고, 출력을 검토하고, 정보가 그룹화되는 방식을 기록해 둡니다.

  • 이름
  • 개요
  • 구문
  • 설명
  • 관련 링크
  • REMARKS

여기에서 볼 수 있듯이 도움말 항목에는 엄청난 양의 정보가 포함될 수 있으며 전체 도움말 항목이 아닙니다.

PowerShell과는 관련이 없지만 매개 변수는 명령에 입력을 제공하는 방법입니다. Get-Help 에는 전체 도움말 항목 또는 해당 하위 집합을 반환하기 위해 지정할 수 있는 많은 매개 변수가 있습니다.

이전 결과 집합에 표시된 도움말 항목의 구문 섹션에는 에 대한 Get-Help모든 매개 변수가 나열됩니다. 언뜻 보기에 동일한 매개 변수가 6번 나열된 것처럼 보입니다. 구문 섹션에 있는 각 블록이 매개 변수 집합입니다. 즉 Get-Help cmdlet에는 서로 다른 매개 변수 6개가 있습니다. 자세히 살펴보면 각 매개 변수 집합에서 하나 이상의 매개 변수가 다르다는 것을 알 수 있습니다.

매개 변수 집합은 상호 배타적입니다. 매개 변수 집합 중 하나에만 존재하는 고유 매개 변수를 사용하면 해당 매개 변수 집합 내에 포함된 매개 변수만 사용할 수 있습니다. 예를 들어 전체상세 매개 변수는 서로 다른 매개 변수 집합에 있으므로 동시에 지정할 수 없습니다.

다음 매개 변수 각각은 서로 다른 매개 변수 집합에 있습니다.

  • 전체
  • 자세히
  • 예제
  • 온라인
  • 매개 변수
  • ShowWindow

구문 섹션의 사각형 및 꺾쇠 괄호와 같은 모든 비밀 구문은 무언가를 의미하지만 이 책의 부록 A에서 다룹니다. 중요하지만, 비밀 구문을 배우는 것은 PowerShell을 새로 사용하고 매일 사용하지 않을 수 있는 사람을 위해 유지하기 어려운 경우가 많습니다.

비밀 구문을 더 잘 이해하려면 부록 A를 참조하세요.

초보자를 위해 일반 언어를 제외하고 동일한 정보를 파악하는 더 쉬운 방법이 있습니다.

전체 매개 변수 Get-Help 를 지정하면 전체 도움말 항목이 반환됩니다.

Get-Help -Name Get-Help -Full

잠시 시간을 내어 컴퓨터에서 해당 예제를 실행하고, 출력을 검토하고, 정보가 그룹화되는 방식을 기록해 둡니다.

  • 이름
  • 개요
  • 구문
  • 설명
  • PARAMETERS
  • 입력
  • 출력
  • 메모장
  • 예제
  • 관련 링크

Full 매개 변수를 사용하면 몇 가지 추가 섹션이 반환되었으며, 그 중 하나는 암호화된 SYNTAX 섹션보다 더 많은 정보를 제공하는 PARAMETERS 섹션입니다.

Full 매개 변수는 switch 매개 변수입니다. 값을 요구하지 않는 매개 변수를 스위치 매개 변수라고 합니다. switch 매개 변수를 지정하면 해당 값은 true이고 그렇지 않은 경우 해당 값은 false입니다.

PowerShell 콘솔에서 이 장을 작업하고 있다면 이전 명령은 Get-Help에 대한 전체 도움말 항목을 표시하기 때문에 읽을 수가 없을 것입니다. 더 좋은 방법이 있습니다.

Help는 Windows의 실행 파일에 대한 more.com 래퍼인 함수more로 파이프 Get-Help 되는 함수입니다. PowerShell 콘솔 help 에서 한 번에 한 페이지의 도움말을 제공합니다. ISE에서 이 기능은 Get-Help와 동일한 방식으로 작동합니다. 더 나은 환경을 제공하고 형식이 적기 때문에 cmdlet 대신 Get-Help 함수를 사용하는 help 것이 좋습니다.

하지만 입력할 내용이 적다는 것이 항상 좋은 것은 아닙니다. 명령을 스크립트로 저장하거나 다른 사용자와 공유하려는 경우 전체 cmdlet 및 매개 변수 이름을 사용해야 합니다. 전체 이름은 자체 문서화이므로 이해하기 쉽습니다. 여러분의 명령을 읽고 이해해야 하는 다음 사람을 생각해 보세요. 그 사람이 여러분일 수도 있습니다. 동료와 미래의 자아는 당신을 감사할 것입니다.

Windows 10 랩 환경 컴퓨터의 PowerShell 콘솔에서 다음 명령을 실행해 보세요.

Get-Help -Name Get-Help -Full
help -Name Get-Help -Full
help Get-Help -Full

Windows 10 랩 환경 컴퓨터에서 실행했을 때 이전에 나열된 명령의 출력에 차이가 있나요?

마지막 두 옵션이 결과를 한 번에 한 페이지씩 반환하는 것 외에는 차이가 없습니다. 스페이스바는 함수를 사용할 Help 때 콘텐츠의 다음 페이지를 표시하는 데 사용되며 Ctrl+C는 PowerShell 콘솔에서 실행되는 명령을 취소합니다.

첫 번째 예제에서는 cmdlet을 Get-Help 사용하고, 두 번째 예제는 함수를 Help 사용하고, 세 번째 예제는 함수를 사용할 때 Name 매개 변수를 Help 생략합니다. Name은 위치 매개 변수이며 해당 예제에서 위치를 기준으로 사용됩니다. 따라서 값 자체를 올바른 위치에 지정한다면 매개 변수 이름을 지정하지 않고도 값을 지정할 수 있습니다. 값을 지정할 위치를 어떻게 알 수 있나요? 다음 예제와 같이 도움말을 읽습니다.

help Get-Help -Parameter Name
-Name <String>
    Gets help about the specified command or concept. Enter the name of a cmdlet, function,
    provider, script, or workflow, such as Get-Member, a conceptual article name, such as
    about_Objects, or an alias, such as ls. Wildcard characters are permitted in cmdlet and
    provider names, but you can't use wildcard characters to find the names of function help and
    script help articles.

    To get help for a script that isn't located in a path that's listed in the $env:Path
    environment variable, type the script's path and file name.

    If you enter the exact name of a help article, Get-Help displays the article contents.

    If you enter a word or word pattern that appears in several help article titles, Get-Help
    displays a list of the matching titles.

    If you enter a word that doesn't match any help article titles, Get-Help displays a list of
    articles that include that word in their contents.

    The names of conceptual articles, such as about_Objects, must be entered in English, even in
    non-English versions of PowerShell.

    Required?                    false
    Position?                    0
    Default value                None
    Accept pipeline input?       True (ByPropertyName)
    Accept wildcard characters?  true

이전 예제에서 Parameter 매개 변수는 Help 함수와 함께 Name 매개 변수에 대한 도움말 항목의 정보만 반환하는 데 사용되었습니다. 때로는 수백 페이지에 달하는 것처럼 보이기도 하는 도움말 항목 전체를 일일이 살펴보는 방법보다 훨씬 효율적입니다.

이러한 결과에 따라 Name 매개 변수가 위치이며 위치 지정 시 위치 0(첫 번째 위치)에 지정되어야 한다는 것을 알 수 있습니다. 매개 변수 이름을 지정했다면 매개 변수가 지정되는 순서는 중요하지 않습니다.

또 다른 중요 정보는 Name 매개 변수가 자신의 값에 대한 데이터 유형이 <String>으로 표시되는 단일 문자열이라 예상한다는 점입니다. 여러 문자열을 수락하면 데이터 형식이 .로 <String[]>나열됩니다.

명령에 대한 전체 도움말 항목을 표시하지 않으려는 경우가 있습니다. Full 외에도 다양한 매개 변수를 Get-Help 또는 Help를 이용해 지정할 수 있습니다. Windows 10 랩 환경 컴퓨터에서 다음 명령을 실행해 보세요.

Get-Help -Name Get-Command -Full
Get-Help -Name Get-Command -Detailed
Get-Help -Name Get-Command -Examples
Get-Help -Name Get-Command -Online
Get-Help -Name Get-Command -Parameter Noun
Get-Help -Name Get-Command -ShowWindow

일반적으로 전체 또는 온라인 매개 변수와 함께 사용합니다help <command name>. 예제에만 관심이 있는 경우 Examples 매개 변수를 사용하고 특정 매개 변수에만 관심이 있는 경우 매개 변수 매개 변수를 사용합니다. ShowWindow 매개 변수는 여러 모니터를 사용할 경우 다른 모니터에 배치할 수 있는 별도의 검색 가능한 창에서 도움말 항목을 엽니다. 전체 도움말 항목을 표시하지 않는 알려진 버그가 있으므로 ShowWindow 매개 변수를 피했습니다.

별도의 창에서 도움말을 보려면 다음 예제와 같이 Online 매개 변수를 사용하거나 전체 매개 변수를 사용하여 결과를 파이프하는 것이 Out-GridView좋습니다.

help Get-Command -Full | Out-GridView

Out-GridView cmdlet의 cmdlet 및 ShowWindow 매개 변수 Get-Help 모두 GUI(그래픽 사용자 인터페이스)가 있는 운영 체제가 필요합니다. 서버 코어(no-GUI) 설치 옵션을 사용하여 설치된 Windows Server에서 둘 중 하나를 사용하려고 하면 오류 메시지가 생성됩니다.

명령을 찾는 데 사용하려면 Name 매개 변수와 함께 별표(*) wild카드 문자를 사용합니다Get-Help. 다음 예제와 같이 Name 매개 변수의 값 으로 명령을 검색하는 용어를 지정합니다.

help *process*
Name                              Category  Module                    Synopsis
----                              --------  ------                    --------
Enter-PSHostProcess               Cmdlet    Microsoft.PowerShell.Core Connects to and ...
Exit-PSHostProcess                Cmdlet    Microsoft.PowerShell.Core Closes an intera...
Get-PSHostProcessInfo             Cmdlet    Microsoft.PowerShell.Core
Debug-Process                     Cmdlet    Microsoft.PowerShell.M... Debugs one or mo...
Get-Process                       Cmdlet    Microsoft.PowerShell.M... Gets the process...
Start-Process                     Cmdlet    Microsoft.PowerShell.M... Starts one or mo...
Stop-Process                      Cmdlet    Microsoft.PowerShell.M... Stops one or mor...
Wait-Process                      Cmdlet    Microsoft.PowerShell.M... Waits for the pr...
Get-AppvVirtualProcess            Function  AppvClient                ...
Start-AppvVirtualProcess          Function  AppvClient                ...

이전 예제 * 에서는 와일드카드 문자가 필요하지 않으며 생략하면 동일한 결과가 생성됩니다. Get-Help는 백그라운드에서 야생카드 문자를 자동으로 추가합니다.

help process

이전 명령은 프로세스의 각 끝에서 wild카드 문자를 지정하는 * 것과 동일한 결과를 생성합니다.

항상 일관되게 작동하는 옵션이므로 추가하는 것을 선호합니다. 추가하지 않으면 특정 시나리오에서는 필요하지만 다른 시나리오에서는 필요하지 않게 됩니다. 값 중간에 와일드카드 문자를 추가하면 사용자가 지정된 값에 자동으로 추가되지 않습니다.

help pr*cess

와일드카드 문자가 시작, 끝 또는 시작과 끝에 pr*cess모두 추가되지 않는 한 * 해당 명령에서 결과가 반환되지 않습니다.

지정한 값이 대시로 시작하는 경우 PowerShell이 이를 매개 변수 이름으로 해석하고 cmdlet에 대한 Get-Help 매개 변수 이름이 없으므로 오류가 생성됩니다.

help -process

찾으려는 항목이 -process로 끝나는 명령이라면 값의 시작 부분에 * 와일드카드 문자를 추가하기만 하면 됩니다.

help *-process

PowerShell 명령을 Get-Help검색할 때 검색하는 내용에 너무 구체적이지는 않고 좀 더 모호하게 작업하려고 합니다.

앞에서 검색한 process 결과 명령 이름에 포함된 명령만 발견되었으며 해당 결과만 반환되었습니다 process . 검색processes하는 데 사용되는 경우 Get-Help 명령 이름에 대한 일치 항목을 찾을 수 없으므로 시스템에서 PowerShell의 모든 도움말 항목을 검색하고 찾은 일치 항목을 반환합니다. 이렇게 하면 엄청난 수의 결과가 반환됩니다.

Get-Help processes
Name                              Category  Module                    Synopsis
----                              --------  ------                    --------
Disconnect-PSSession              Cmdlet    Microsoft.PowerShell.Core Disconnects from...
Enter-PSHostProcess               Cmdlet    Microsoft.PowerShell.Core Connects to and ...
ForEach-Object                    Cmdlet    Microsoft.PowerShell.Core Performs an oper...
Get-PSSessionConfiguration        Cmdlet    Microsoft.PowerShell.Core Gets the registe...
New-PSTransportOption             Cmdlet    Microsoft.PowerShell.Core Creates an objec...
Out-Host                          Cmdlet    Microsoft.PowerShell.Core Sends output to ...
Where-Object                      Cmdlet    Microsoft.PowerShell.Core Selects objects ...
Clear-Variable                    Cmdlet    Microsoft.PowerShell.U... Deletes the valu...
Compare-Object                    Cmdlet    Microsoft.PowerShell.U... Compares two set...
Convert-String                    Cmdlet    Microsoft.PowerShell.U... Formats a string...
ConvertFrom-Csv                   Cmdlet    Microsoft.PowerShell.U... Converts object ...
ConvertTo-Html                    Cmdlet    Microsoft.PowerShell.U... Converts Microso...
ConvertTo-Xml                     Cmdlet    Microsoft.PowerShell.U... Creates an XML-b...
Debug-Runspace                    Cmdlet    Microsoft.PowerShell.U... Starts an intera...
Export-Csv                        Cmdlet    Microsoft.PowerShell.U... Converts objects...
Export-FormatData                 Cmdlet    Microsoft.PowerShell.U... Saves formatting...
Format-List                       Cmdlet    Microsoft.PowerShell.U... Formats the outp...
Format-Table                      Cmdlet    Microsoft.PowerShell.U... Formats the outp...
Get-Random                        Cmdlet    Microsoft.PowerShell.U... Gets a random nu...
Get-Unique                        Cmdlet    Microsoft.PowerShell.U... Returns unique i...
Group-Object                      Cmdlet    Microsoft.PowerShell.U... Groups objects t...
Import-Clixml                     Cmdlet    Microsoft.PowerShell.U... Imports a CLIXML...
Import-Csv                        Cmdlet    Microsoft.PowerShell.U... Creates table-li...
Measure-Object                    Cmdlet    Microsoft.PowerShell.U... Calculates the n...
Out-File                          Cmdlet    Microsoft.PowerShell.U... Sends output to ...
Out-GridView                      Cmdlet    Microsoft.PowerShell.U... Sends output to ...
Select-Object                     Cmdlet    Microsoft.PowerShell.U... Selects objects ...
Set-Variable                      Cmdlet    Microsoft.PowerShell.U... Sets the value o...
Sort-Object                       Cmdlet    Microsoft.PowerShell.U... Sorts objects by...
Tee-Object                        Cmdlet    Microsoft.PowerShell.U... Saves command ou...
Trace-Command                     Cmdlet    Microsoft.PowerShell.U... Configures and s...
Write-Output                      Cmdlet    Microsoft.PowerShell.U... Sends the specif...
Debug-Process                     Cmdlet    Microsoft.PowerShell.M... Debugs one or mo...
Get-Process                       Cmdlet    Microsoft.PowerShell.M... Gets the process...
Get-WmiObject                     Cmdlet    Microsoft.PowerShell.M... Gets instances o...
Start-Process                     Cmdlet    Microsoft.PowerShell.M... Starts one or mo...
Stop-Process                      Cmdlet    Microsoft.PowerShell.M... Stops one or mor...
Wait-Process                      Cmdlet    Microsoft.PowerShell.M... Waits for the pr...
Get-Counter                       Cmdlet    Microsoft.PowerShell.D... Gets performance...
Invoke-WSManAction                Cmdlet    Microsoft.WSMan.Manage... Invokes an actio...
Remove-WSManInstance              Cmdlet    Microsoft.WSMan.Manage... Deletes a manage...
Get-WSManInstance                 Cmdlet    Microsoft.WSMan.Manage... Displays managem...
New-WSManInstance                 Cmdlet    Microsoft.WSMan.Manage... Creates a new in...
Set-WSManInstance                 Cmdlet    Microsoft.WSMan.Manage... Modifies the man...
about_Arithmetic_Operators        HelpFile                            Describes the op...
about_Arrays                      HelpFile                            Describes arrays...
about_Debuggers                   HelpFile                            Describes the Wi...
about_Execution_Policies          HelpFile                            Describes the Wi...
about_ForEach-Parallel            HelpFile                            Describes the Fo...
about_Foreach                     HelpFile                            Describes a lang...
about_Functions                   HelpFile                            Describes how to...
about_Language_Keywords           HelpFile                            Describes the ke...
about_Methods                     HelpFile                            Describes how to...
about_Objects                     HelpFile                            Provides essenti...
about_Parallel                    HelpFile                            Describes the Pa...
about_Pipelines                   HelpFile                            Combining comman...
about_Preference_Variables        HelpFile                            Variables that c...
about_Remote                      HelpFile                            Describes how to...
about_Remote_Output               HelpFile                            Describes how to...
about_Sequence                    HelpFile                            Describes the Se...
about_Session_Configuration_Files HelpFile                            Describes sessio...
about_Variables                   HelpFile                            Describes how va...
about_Windows_PowerShell_5.0      HelpFile                            Describes new fe...
about_WQL                         HelpFile                            Describes WMI Qu...
about_WS-Management_Cmdlets       HelpFile                            Provides an over...
about_ForEach-Parallel            HelpFile                            Describes the Fo...
about_Parallel                    HelpFile                            Describes the Pa...
about_Sequence                    HelpFile                            Describes the Se...

Help를 사용하여 process를 검색하면 결과 10개가 반환되고 processes를 검색하면 결과 68개가 반환됩니다. 결과가 하나만 있으면 명령 목록 대신 도움말 항목 자체가 표시됩니다.

get-help *hotfix*
NAME
    Get-HotFix

SYNOPSIS
    Gets the hotfixes that have been applied to the local and remote computers.


SYNTAX
    Get-HotFix [-ComputerName <String[]>] [-Credential <PSCredential>] [-Description
    <String[]>] [<CommonParameters>]

    Get-HotFix [[-Id] <String[]>] [-ComputerName <String[]>] [-Credential
    <PSCredential>] [<CommonParameters>]


DESCRIPTION
    The Get-Hotfix cmdlet gets hotfixes (also called updates) that have been installed
    on either the local computer (or on specified remote computers) by Windows Update,
    Microsoft Update, or Windows Server Update Services; the cmdlet also gets hotfixes
    or updates that have been installed manually by users.


RELATED LINKS
    Online Version: http://go.microsoft.com/fwlink/?LinkId=821586
    Win32_QuickFixEngineering http://go.microsoft.com/fwlink/?LinkID=145071
    Get-ComputerRestorePoint
    Add-Content

REMARKS
    To see the examples, type: "get-help Get-HotFix -examples".
    For more information, type: "get-help Get-HotFix -detailed".
    For technical information, type: "get-help Get-HotFix -full".
    For online help, type: "get-help Get-HotFix -online"

이제 PowerShell에서 도움말 항목이 있는 명령만 찾을 수 있다는 Help 신화를 설명합니다.

help *more*
NAME
    more

SYNTAX
    more [[-paths] <string[]>]


ALIASES
    None


REMARKS
    None

이전 예제에서는 도움말 항목이 more 없는 것을 확인하지만 PowerShell의 Help 시스템에서 찾을 수 있었습니다. 일치하는 항목이 하나뿐이며 명령에 도움말 항목이 없을 때 표시되는 기본 구문 정보를 반환했습니다.

PowerShell에는 다양한 개념적(About) 도움말 항목이 포함되어 있습니다. 다음 명령을 사용하여 시스템의 모든 정보 도움말 항목 목록을 반환할 수 있습니다.

help About_*

결과를 단일 About 도움말 항목으로 제한하면 목록 대신 실제 도움말 항목이 표시됩니다.

help about_Updatable_Help

About 도움말 항목이 존재하려면 PowerShell의 도움말 시스템을 업데이트해야 합니다. 컴퓨터에서 도움말 시스템의 초기 업데이트가 실패하면 Update-Help cmdlet이 성공적으로 실행될 때까지는 파일을 사용할 수 없습니다.

Get-Command

Get-Command는 명령을 쉽게 찾을 수 있도록 설계되었습니다. 매개 변수 없이 실행 Get-Command 하면 시스템의 모든 명령 목록이 반환됩니다. 다음 예제는 Get-Command cmdlet을 사용하여 프로세스 작업에 사용할 수 있는 명령을 확인하는 방법을 보여줍니다.

Get-Command -Noun Process
CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Cmdlet          Debug-Process                                      3.1.0.0    Microsof...
Cmdlet          Get-Process                                        3.1.0.0    Microsof...
Cmdlet          Start-Process                                      3.1.0.0    Microsof...
Cmdlet          Stop-Process                                       3.1.0.0    Microsof...
Cmdlet          Wait-Process                                       3.1.0.0    Microsof...

실행된 이전 예제 Get-Command 에서는 Noun 매개 변수가 사용되고 Process Noun 매개 변수의 값으로 지정됩니다. Get-Command cmdlet 사용 방법을 모른다면 어떻게 해야 할까요? 에 대한 도움말 항목을 표시하는 데 사용할 Get-Help 수 있습니다 Get-Command.

이름, 명사동사 매개 변수는 wild카드 허용합니다. 다음 예제에서는 Name 매개 변수와 함께 사용되는 wild카드s를 보여 줍니다.

Get-Command -Name *service*
CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Function        Get-NetFirewallServiceFilter                       2.0.0.0    NetSecurity
Function        Set-NetFirewallServiceFilter                       2.0.0.0    NetSecurity
Cmdlet          Get-Service                                        3.1.0.0    Microsof...
Cmdlet          New-Service                                        3.1.0.0    Microsof...
Cmdlet          New-WebServiceProxy                                3.1.0.0    Microsof...
Cmdlet          Restart-Service                                    3.1.0.0    Microsof...
Cmdlet          Resume-Service                                     3.1.0.0    Microsof...
Cmdlet          Set-Service                                        3.1.0.0    Microsof...
Cmdlet          Start-Service                                      3.1.0.0    Microsof...
Cmdlet          Stop-Service                                       3.1.0.0    Microsof...
Cmdlet          Suspend-Service                                    3.1.0.0    Microsof...
Application     AgentService.exe                                   10.0.14... C:\Windo...
Application     SensorDataService.exe                              10.0.14... C:\Windo...
Application     services.exe                                       10.0.14... C:\Windo...
Application     services.msc                                       0.0.0.0    C:\Windo...
Application     TieringEngineService.exe                           10.0.14... C:\Windo...

네이티브 PowerShell 명령이 아닌 실행 파일도 반환하기 때문에 Name 매개 변수 Get-Command 와 함께 wild카드s를 사용하는 팬은 아닙니다.

Name 매개 변수와 함께 wild카드 문자를 사용하려는 경우 CommandType 매개 변수를 사용하여 결과를 제한하는 것이 좋습니다.

Get-Command -Name *service* -CommandType Cmdlet, Function, Alias

PowerShell 명령에만 동사와 명사가 둘 다 있기 때문에 동사 또는 사 매개 변수 또는 둘 다를 사용하는 것이 더 좋습니다.

도움말 항목에 문제가 있나요? 다행히도 PowerShell의 도움말 항목은 오픈 소스이며 GitHub의 PowerShell-Docs 리포지토리에서 사용할 수 있습니다. 자신을 위해 잘못된 정보를 수정할 뿐만 아니라 다른 모든 사람도 수정하여 비용을 지불합니다. GitHub에서 PowerShell 설명서 리포지토리를 포크하고, 도움말 항목을 업데이트하고, 끌어오기 요청을 제출하기만 하면됩니다. 끌어오기 요청이 수락되면 모든 사용자가 수정된 설명서를 사용할 수 있습니다.

도움말 업데이트

PowerShell 도움말 항목의 로컬 복사본은 이전에 명령에 대한 첫 번째 도움말이 요청된 업데이트되었습니다. 때때로 도움말 콘텐츠에 대한 업데이트가 있을 수 있으므로 주기적으로 도움말 시스템을 업데이트하는 것이 좋습니다. 이 Update-Help cmdlet은 도움말 항목을 업데이트하는 데 사용됩니다. 기본적으로 인터넷 액세스를 요구하며 사용자는 관리자 자격으로 PowerShell을 실행해야 합니다.

Update-Help
Update-Help : Failed to update Help for the module(s) 'BitsTransfer' with UI culture(s)
{en-US} : Unable to retrieve the HelpInfo XML file for UI culture en-US. Make sure the HelpInfoUri
property in the module manifest is valid or check your network connection and then try the command again.
At line:1 char:1
+ Update-Help
+
    + CategoryInfo          : InvalidOperation: (:) [Update-Help], Exception
    + FullyQualifiedErrorId : InvalidHelpInfoUri,Microsoft.PowerShell.Commands.UpdateHel
   pCommand

Update-Help : Failed to update Help for the module(s) 'NetworkControllerDiagnostics,
StorageReplica' with UI culture(s) {en-US} : Unable to retrieve the HelpInfo XML file
for UI culture en-US. Make sure the HelpInfoUri property in the module manifest is valid
or check your network connection and then try the command again.
At line:1 char:1
+ Update-Help
+
    + CategoryInfo          : ResourceUnavailable: (:) [Update-Help], Exception
    + FullyQualifiedErrorId : UnableToRetrieveHelpInfoXml,Microsoft.PowerShell.Commands.
   UpdateHelpCommand

몇 가지 모듈이 오류를 반환했는데, 이는 드문 일이 아닙니다. 컴퓨터에 인터넷에 액세스할 수 없는 경우 인터넷에 액세스할 수 있는 다른 컴퓨터에서 cmdlet을 사용하여 Save-Help 먼저 업데이트된 도움말 정보를 네트워크의 파일 공유에 저장한 다음 SourcePath 매개 변수 Update-Help 를 사용하여 도움말 항목에 대해 이 네트워크 위치를 지정할 수 있습니다.

예약된 작업을 설정하거나 PowerShell에서 프로필 스크립트에 일부 논리를 추가하여 컴퓨터의 도움말 콘텐츠를 주기적으로 업데이트하는 것이 좋습니다. 프로필 스크립트는 이후 장에서 설명하겠습니다.

요약

이 챕터에서는 두 명령을 모두 Get-HelpGet-Command사용하여 명령을 찾는 방법을 알아보았습니다. 도움말 시스템을 사용하여 명령을 찾은 후 사용하는 방법을 알아내는 방법을 알아보았습니다. 또한 업데이트를 사용할 수 있을 때 도움말 항목의 콘텐츠를 업데이트하는 방법도 알아보았습니다.

나의 과제는 하루에 PowerShell 명령을 배우는 것입니다.

Get-Command | Get-Random | Get-Help -Full

검토

  1. 위치의 DisplayName 매개 변수 Get-Service 인가요?
  2. cmdlet에는 몇 개의 매개 변수 집합이 Get-Process 있나요?
  3. 이벤트 로그 작업을 위한 PowerShell 명령은 무엇인가요?
  4. 컴퓨터에서 실행 중인 PowerShell 프로세스 목록을 반환하기 위한 PowerShell 명령은 무엇인가요?
  5. 컴퓨터에 저장된 PowerShell 도움말 콘텐츠를 업데이트하려면 어떻게 해야 할까요?

이 챕터에서 다루는 항목에 대한 자세한 내용을 알아보려면 다음 PowerShell 도움말 항목을 읽어보는 것이 좋습니다.

다음 챕터에서는 개체, 속성 및 메서드뿐만 아니라 cmdlet에 대해 Get-Member 알아봅니다.