홈페이지 » 어떻게 » Geek School PowerShell에서 개체를 사용하는 방법 배우기

    Geek School PowerShell에서 개체를 사용하는 방법 배우기

    개체 이해는 PowerShell을 "가져 오는"기본 개념 중 하나입니다. 개체를 탐색하고 PowerShell을 다른 어떤 셸보다 나은 방식으로 만드는 방법에 대해 알아 보려면 여기에 가입하십시오..

    시리즈의 이전 기사를 읽으십시오.

    • PowerShell을 사용하여 Windows를 자동화하는 방법 배우기
    • PowerShell에서 Cmdlet을 사용하는 방법 학습

    그리고 일주일 내내 나머지 시리즈에 계속해서 관심을 가져주세요..

    사물

    PowerShell이 ​​Bash와 같은 전통적인 Linux 쉘이나 레거시 명령 프롬프트와 다른 점을 궁금해 한 적이 있습니까? 답은 정말 간단합니다. 전통적인 셸에서는 텍스트를 출력하기 때문에 서식과 필터링과 같은 작업을 수행하기가 어렵습니다. 물론, 작업을 끝내는 데 도움이되는 도구 (sed와 grep이 마음에 들었습니다.)가 있지만, 하루가 끝날 무렵에는 무거운 텍스트 파싱을하고 싶다면 다음과 같은 정규 표현식을 알아야합니다. 손등 뒤로.

    PowerShell은 기본 .Net 프레임 워크를 이용하고 텍스트 대신 개체를 사용하여 다른 접근 방식을 취합니다. 객체는 단지 무언가를 표현한 것입니다. 그것들은 그것들을 사용하기위한 부분과 행동들의 모음입니다. 자전거의 부품을 살펴보고 사용 방법에 대해 알아 보겠습니다..

    .NET의 객체는 두 가지 작은 차이점을 제외하고는 거의 동일합니다. "Parts"가 호출됩니다. 속성들 및 "지침"이 호출됩니다. 행동 양식. Windows 서비스를 객체로 나타내려면 서비스 이름, 상태 및 설명이라는 세 가지 속성을 사용하여 Windows 서비스를 설명하는 것이 적절하다고 판단 할 수 있습니다. 또한 서비스와 상호 작용해야하므로 객체에 Start, Stop 및 Pause 메소드를 제공 할 수 있습니다.

    Get-Member cmdlet에 개체의 속성과 메서드를 전달하여 개체의 속성과 메서드를 볼 수 있습니다. PowerShell cmdlet이 출력하는 개체는 .Net 프레임 워크의 기본 형식이지만 C #과 같은 언어를 사용해야하는 경우 사용자 개체를 만들거나 PSObject 형식을 사용할 수 있습니다.

    파이프 라인

    파이프 라인이있는 Linux 쉘이 많아서 한 명령이 파이프 라인의 다음 명령에 입력으로 출력하는 텍스트를 보낼 수 있습니다. PowerShell은 한 cmdlet이 출력하는 개체를 가져 와서 파이프 라인의 다음 cmdlet에 대한 입력으로 전달할 수있게하여이를 다음 단계로 가져옵니다. 트릭은 cmdlet에서 반환하는 개체 유형을 알기 때문에 Get-Member cmdlet을 사용하면 매우 쉽습니다..

    Get-Service | Get-Member

    이 기사의 범위를 벗어나는 이유로 인해 속성 및 메서드를 공동으로 클래스 멤버라고하며 Get-Member cmdlet을 사용하여 개체의 모든 메서드 및 속성 목록을 가져 오는 이유를 설명합니다. 그러나 Get-Member cmdlet은 또 다른 중요한 정보 인 기본 개체 유형을 반환합니다. 위의 스크린 샷에서 Get-Service가 다음 유형의 객체를 반환한다는 것을 알 수 있습니다.

    System.ServiceProcess.ServiceController

    PowerShell은 텍스트가 아닌 개체를 다루기 때문에 파이프 라인을 사용하여 모든 cmdlet을 연결할 수있는 것은 아닙니다 [1]. 즉, 파이프 라인에서 System.ServiceProcess.ServiceController 개체를 받아들이려는 cmdlet을 찾아야합니다..

    Get-Command -ParameterType System.ServiceProcess.ServiceController

    Stop-Service라는 cmdlet가 있습니다. 그것을위한 도움을 보자..

    Get-Help -Name Stop-Service

    InputObject 매개 변수가 ServiceController 객체 배열을 입력으로받는 것처럼 보입니다. 일반적으로 InputObject라는 매개 변수를 보면 파이프 라인에서 입력을 받아들이지 만 해당 매개 변수에 대한 전체 도움말을 살펴 보도록하겠습니다..

    Get-Help -Name Stop-Service -Full

    우리의 의심은 옳았다. 그래서이 시점에서 우리는 다음을 압니다.

    • Get-Service는 ServiceController 개체를 반환합니다.
    • Stop-Service에는 입력으로 하나 이상의 ServiceController를 허용하는 InputObject라는 매개 변수가 있습니다..
    • InputObject 매개 변수는 파이프 라인 입력을 허용합니다..

    이 정보를 사용하여 다음 작업을 수행 할 수 있습니다.

    Get-Service -Name 'Apple Mobile Device'| 중지 서비스

    그것은이 시간의 모든 사람들을위한 것입니다. 다음 번에는 파이프 라인에서 개체를 포맷하고 필터링하고 비교하는 방법을 살펴 봅니다..

    숙제

    • 객체 파이프 라인에서 읽기

    질문이 있으시면 @taybgibb에 트위터를 올리거나 댓글을 남길 수 있습니다..