항목
    about_Windows_PowerShell_2.0

간단한 설명
    Windows PowerShell 2.0에 포함된 새로운 기능에 대해 설명합니다.
 

자세한 설명
    Windows PowerShell 2.0에는 용도를 확장하고, 사용 편의성을 높이고, Windows 기반 환경을 더욱 쉽고 
    종합적으로 제어하고 관리하는 데 사용할 수 있는 몇 가지 중요한 기능이 포함되어 있습니다.


    Windows PowerShell 2.0은 이전 버전과 호환됩니다. Windows PowerShell 1.0용으로 설계된 cmdlet, 
    공급자, 스냅인, 스크립트, 함수 및 프로필은 변경 없이 Windows PowerShell 2.0에서 작동합니다.


새로운 기능
    Windows PowerShell 2.0에 포함된 새로운 기능은 다음과 같습니다.


  원격 기능
    
      Windows PowerShell 2.0에서는 단일 Windows PowerShell 명령을 사용하여 하나 이상의 원격 컴퓨터에서 
      명령을 실행할 수 있습니다. 개별 명령을 실행하거나 영구 연결(세션)을 만들어 일련의 관련 명령을 
      실행할 수 있습니다. 또한 사용자가 입력하는 명령이 직접 원격 컴퓨터에서 실행되도록 원격 컴퓨터와 
      세션을 시작할 수도 있습니다.


      Windows PowerShell의 원격 기능은 WinRM(Windows 원격 관리)을 기반으로 개발되었습니다. 
      WinRM은 방화벽과 호환되는 표준 SOAP 기반의 통신 프로토콜인 WS-Management 프로토콜의 Microsoft 
      구현입니다.


      원격 컴퓨터에는 Windows PowerShell 2.0, Microsoft .NET Framework 2.0 및 WinRM 서비스가 있어야 
      합니다. 원격 명령은 Windows PowerShell을 실행할 수 있는 모든 운영 체제에서 지원됩니다. 현재 
      사용자는 원격 컴퓨터에서 명령을 실행할 수 있는 권한을 갖고 있어야 합니다. 자세한 내용은 
      about_Remote_Requirements를 참조하십시오.


      원격 기능을 지원하기 위해 Invoke-Command, Enter-PSSession 및 Exit-PSSession cmdlet이 
      PSSession 명사가 포함된 다른 cmdlet과 함께 추가되었습니다. 이러한 cmdlet을 사용하여 영구 
      연결을 만들고 관리할 수 있습니다.


      ComputerName 매개 변수도 Get-Process, Get-Service 및 Get-Eventlog cmdlet과 같은 몇 가지 
      cmdlet에 추가되었습니다. 이 매개 변수를 통해 원격 컴퓨터에 대한 정보를 가져올 수 있습니다.
      이러한 cmdlet은 .NET Framework 메서드를 사용하여 데이터를 가져오므로 Windows PowerShell 
      원격을 사용하지 않으며 새로운 프로그램이나 구성을 필요로 하지 않습니다. 자세한 내용은 각 
      cmdlet에 대한 도움말을 참조하십시오.


      원격 명령에 대한 자세한 내용은 about_Remote 및 about_Remote_FAQ를 참조하십시오. 세션에 대한 
      자세한 내용은 about_PSSessions를 참조하십시오. 


  Windows PowerShell ISE
    
      Windows PowerShell 2.0에는 색으로 구분된 유니코드 기반의 그래픽 환경에서 명령을 실행하고 스크립트를 
      설계, 작성, 테스트 및 디버깅할 수 있는 호스트 응용 프로그램인 Windows PowerShell ISE(통합 스크립팅 
      환경)가 포함되어 있습니다.
 

      Windows PowerShell ISE를 사용하려면 Microsoft .NET Framework 3.0 이상이 필요합니다.


      Windows PowerShell ISE에 포함되어 있는 항목은 다음과 같습니다.

      -  Windows PowerShell 콘솔에서 실행하는 것처럼 대화형 명령을 실행할 수 있는 명령 창. 명령을 입력한 
         다음 Enter 키를 누르기만 하면 됩니다. 출력은 출력 창에 나타납니다.

      -  함수와 스크립트를 작성, 편집, 디버깅 및 실행할 수 있는 스크립트 창 

      -  하나 이상의 작업을 독립적으로 수행할 수 있는 자체적인 명령 및 스크립트 창을 각각 포함하는 여러 탭


      Windows PowerShell ISE는 초급 사용자와 고급 사용자 모두 사용할 수 있도록 설계되었습니다. 


  백그라운드 작업
    
      백그라운드 작업은 비동기적으로 실행되는 명령입니다. 백그라운드 작업을 실행하면 명령이 여전히 
      실행되는 경우에도 명령 프롬프트가 즉시 반환됩니다. 백그라운드 작업 기능을 사용하여 복잡한 명령을 
      백그라운드에서 실행할 수 있으므로 명령이 실행되는 동안 다른 작업에 세션을 사용할 수 있습니다.


      로컬 또는 원격 컴퓨터에서 백그라운드 작업을 실행한 다음 로컬 또는 원격 컴퓨터에 결과를 저장할 수 
      있습니다. 작업을 원격으로 실행하려면 Invoke-Command cmdlet을 사용합니다.
    

      Windows PowerShell에는 Job 명사(Job cmdlet)가 포함된 일련의 cmdlet이 포함되어 있습니다. 
      이러한 cmdlet을 사용하여 백그라운드 작업을 생성, 시작, 관리 및 삭제하고 백그라운드 작업의 
      결과를 가져올 수 있습니다. Job cmdlet의 목록을 가져오려면 다음 명령을 입력하십시오.

          get-command *-job

      
      백그라운드 작업에 대한 자세한 내용은 about_Jobs를 참조하십시오.


  스크립트 디버거
    
      Windows PowerShell 2.0에는 스크립트와 함수에 사용할 수 있는 cmdlet 기반 디버거가 포함되어 
      있습니다. 이 디버거는 자체적으로 디버거를 개발하거나 디버거를 사용자 지정 또는 확장하는 데 사용할 
      수 있는 완전히 문서화된 공용 API를 통해 지원됩니다.


      디버거 cmdlet을 사용하면 줄, 열, 변수 및 명령에 중단점을 설정할 수 있습니다. 이러한 cmdlet을 통해 
      중단점을 관리하고 호출 스택을 표시할 수 있습니다. 조건 중단점을 만들고 중단점에서 진단 실행, 
      스크립트 기록 등의 사용자 지정 작업을 지정할 수 있습니다.


      중단점에 도달하면 Windows PowerShell은 실행을 일시 중단하고 디버거를 시작합니다. 디버거에는 코드를 
      단계별로 실행할 수 있는 일련의 사용자 지정 명령이 포함되어 있습니다. 또한 표준 Windows PowerShell 
      명령을 실행하여 변수의 값을 표시할 수 있으며 cmdlet을 사용하여 결과를 조사할 수 있습니다.

      
      디버깅에 대한 자세한 내용은 about_Debuggers를 참조하십시오.


  Data 섹션
    
      Windows PowerShell 2.0용으로 설계된 스크립트에는 스크립트 논리에서 데이터를 분리하는 DATA 섹션이 
      하나 이상 포함될 수 있습니다. 새로운 DATA 섹션의 데이터는 Windows PowerShell 스크립팅 언어의 
      지정된 하위 집합으로 제한됩니다.


      Windows PowerShell 2.0에서 DATA 섹션은 스크립트 국제화를 지원하는 데 사용됩니다. DATA 섹션을 
      사용하여 여러 사용자 인터페이스 언어로 번역되는 사용자 메시지 문자열을 분리하고 식별할 수 있습니다. 


      자세한 내용은 about_Data_Sections를 참조하십시오.


  스크립트 국제화
    
      Windows PowerShell 2.0 스크립트 국제화 기능을 사용하면 전 세계 사용자에게 더 나은 서비스를 제공할 수 
      있습니다. 스크립트 국제화는 스크립트와 함수에서 사용자에게 메시지와 도움말 텍스트를 여러 언어로 
      표시할 수 있도록 합니다.
 

      스크립트 국제화 기능은 실행 중에 운영 체제 사용자 인터페이스 culture($PsUICulture)를 쿼리한 다음 적절한 
      번역된 텍스트 문자열을 사용자에게 표시할 수 있도록 가져옵니다. 텍스트 문자열을 쉽게 식별할 수 있도록 Data 
      섹션에 코드와 별도로 텍스트 문자열을 저장할 수 있습니다. 새로운 ConvertFrom-StringData cmdlet은 텍스트 
      문자열을 사전과 유사한 해시 테이블로 변환하여 번역을 용이하게 합니다.
 

      자세한 내용은 about_Script_Internationalization을 참조하십시오.



  WMI cmdlet
    
      Windows PowerShell 2.0의 WMI(Windows Management Instrumentation) 
      기능은 다음 cmdlet이 추가되면서 향상되었습니다.

          - Remove-WmiObject
          - Set-WmiInstance
          - Invoke-WmiMethod


      새로운 매개 변수가 Get-WmiObject cmdlet에 추가되었습니다. 모든 WMI cmdlet은 이제 다음 매개 
      변수를 지원합니다.

          - EnableAllPrivileges
          - Impersonation
          - Authentication
          - Authority


      이러한 새로운 매개 변수를 사용하면 .NET Framework 클래스 라이브러리의 유형을 직접 사용할 필요 
      없이 WMI 작업의 보안 구성을 더욱 세부적으로 제어할 수 있습니다.

 
      WMI cmdlet의 목록을 보려면 다음 명령을 입력하십시오.

          get-help *wmi*

      각 cmdlet에 대한 도움말을 보려면 get-help를 입력하고 그 뒤에 cmdlet 이름을 입력하십시오.

	
  Get-WinEvent cmdlet
    
      Get-WinEvent cmdlet은 로컬 및 원격 컴퓨터의 이벤트 뷰어 로그와 ETW(Windows용 이벤트 추적) 
      이벤트 로그 파일에서 이벤트를 가져옵니다. 이 cmdlet은 일반 이벤트 로그와 Windows Vista에서 
      도입된 Windows 이벤트 로그에서 이벤트를 가져올 수 있습니다.
 

      Get-WinEvent를 사용하여 이벤트 로그, 이벤트 로그 공급자 및 로그의 이벤트를 나타내는 개체를 가져올 
      수 있습니다. Get-WinEvent를 통해 한 명령으로 여러 곳에서 제공된 이벤트를 결합할 수 있습니다. 이 
      cmdlet은 XPath(XML 경로 언어), XML 및 해시 테이블 형식의 고급 쿼리를 지원합니다.


      Get-WinEvent를 실행하려면 Windows Vista 또는 Windows Server 2008과 Microsoft .NET Framework 3.5가 
      필요합니다. 


  Out-Gridview cmdlet
    
      Out-GridView cmdlet은 결과를 검색, 정렬, 그룹화 및 필터링할 수 있는 대화형 표로 다른 명령의 결과를 
      표시합니다. 예를 들어 Get-Process, Get-WmiObject, Get-WinEvent 또는 Get-Eventlog 명령의 결과를 
      Out-GridView로 보낸 다음 표 기능을 사용하여 데이터를 검토할 수 있습니다.

        help out-gridview -full


  Add-Type cmdlet
    
      Add-Type cmdlet을 사용하여 .NET Framework 유형을 다른 .NET Framework 언어의 
      소스 코드에서 Windows PowerShell에 추가할 수 있습니다.
 

      Add-Type은 새로운 .NET Framework 유형을 만드는 소스 코드를 컴파일하고 해당 유형이 포함된 
      어셈블리를 생성합니다. 이 경우 사용자가 .NET Framework에서 제공하는 표준 개체 유형과 함께 Windows 
      PowerShell 명령에서 새로운 .NET Framework 유형을 사용할 수 있습니다.


      또한 Windows PowerShell에서 어셈블리에 있는 새로운 유형을 사용할 수 있도록 Add-Type을 사용하여 
      어셈블리를 세션에 로드할 수도 있습니다.


      Add-Type을 사용하여 새로운 .NET Framework 유형을 개발하고, C# 라이브러리에서 .NET Framework 
      유형을 사용하고, Win32 API에 액세스할 수 있습니다.

    
      자세한 내용은 Add-Type을 참조하십시오.


  이벤트 알림
    
      Windows PowerShell 2.0에는 이벤트 알림이 도입되었습니다. 사용자는 Windows PowerShell 이벤트, 
      WMI 이벤트, .NET Framework 이벤트 등의 이벤트를 등록하고 가입할 수 있을 뿐만 아니라 동기적 및 
      비동기적으로 관리 및 시스템 이벤트를 수신 및 전달하고 해당하는 작업을 수행할 수 있습니다.


      개발자는 이벤트 아키텍처를 사용하여 상태 변경에 대한 알림을 받는 응용 프로그램을 작성할 수 있습니다. 
      사용자는 다양한 이벤트에 가입하고 해당 내용에 대응하는 스크립트를 작성할 수 있습니다.
   

      Windows PowerShell은 새 이벤트를 만들고, 이벤트 및 이벤트 가입을 가져오고, 이벤트를 등록 및 등록 
      취소하고, 이벤트를 기다리고, 이벤트를 삭제하는 cmdlet을 제공합니다. 이러한 cmdlet에 대한 자세한 
      내용을 보려면 다음 명령을 입력하십시오.

          get-command *-event

   
  모듈
    
      Windows PowerShell 모듈을 사용하면 Windows PowerShell 스크립트를 독립적이고 다시 
      사용할 수 있는 자체 포함 단위로 나누고 구성할 수 있습니다. 모듈의 코드는 자체 컨텍스트에서 
      실행되므로 세션에 있는 변수, 함수, 별칭 및 기타 리소스에 추가되거나, 충돌 또는 덮어쓰지 않습니다.

    
      모듈을 작성, 배포, 결합, 공유 및 다시 사용하여 간단한 스크립트와 복잡한 응용 프로그램을 작성할 수 
      있습니다. 


      Windows PowerShell 2.0에는 모듈을 추가하고, 가져오고, 제거하는 cmdlet과 모듈 멤버를 내보내는 
      cmdlet이 포함되어 있습니다. 모듈과 관련된 cmdlet에 대한 자세한 내용을 보려면 다음 명령을 
      입력하십시오.

          get-command *-module* 

 
  트랜잭션
    
      Windows PowerShell 2.0에는 트랜잭션 지원 기능이 포함되어 있습니다. 트랜잭션을 사용하면 일련의 작업 
      전체를 취소할 수 있습니다. 트랜잭션은 트랜잭션을 지원하는 작업에만 사용할 수 있습니다. 트랜잭션은 
      데이터베이스와 메시지 큐처럼 원자성, 일관성, 격리 및 복구성이 필요한 응용 프로그램에 사용하도록 
      설계되었습니다.


      트랜잭션을 지원하는 cmdlet과 공급자에는 새로운 UseTransaction 매개 변수가 있습니다. 트랜잭션 내에서 
      작업을 시작하려면 Start-Transaction cmdlet을 사용합니다. 이 경우 작업을 수행하는 cmdlet을 
      사용할 때 각 cmdlet의 UseTransaction 매개 변수를 사용하여 해당 명령이 트랜잭션의 일부가 되도록 
      설정할 수 있습니다. 


      언제든지 트랜잭션의 명령 중 하나라도 실패하는 경우 Rollback-Transaction cmdlet을 사용하여 
      트랜잭션의 명령을 모두 취소합니다. 모든 명령이 성공하면 Commit-Transaction cmdlet을 사용하여 
      명령 작업을 영구적으로 만듭니다.


      Windows PowerShell 2.0에는 트랜잭션을 시작, 사용, 커밋 및 롤백하는 cmdlet이 포함되어 있습니다. 
      이러한 cmdlet에 대한 자세한 내용을 보려면 다음 명령을 입력하십시오.

          get-command *transaction*



 Windows PowerShell 1.0의 주요 변경 사항

     -- HKLM\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine의 
        PowerShellVersion 레지스트리 항목 값이 2.0으로 변경되었습니다.

     -- 새로운 cmdlet과 변수가 추가되었습니다. 이러한 추가는 프로필과 스크립트의 변수 및 함수와 충돌할 수 
        있습니다.

     -- -IEQ 연산자는 문자에 대해 대/소문자를 구분하지 않는 비교를 수행합니다.

     -- Get-Command cmdlet은 cmdlet 외에도 함수를 기본적으로 가져옵니다.

     -- 사용자 인터페이스를 생성하는 기본 명령은 Out-Host cmdlet으로 파이프될 수 없습니다.

     -- 새로운 Begin, Process, End 및 Dynamic Param 언어 키워드는 스크립트와 함수에서 사용되는 유사한 
        단어와 충돌할 수 있습니다. 이러한 단어를 언어 키워드로 해석하면 구분 분석 오류가 발생할 수 있습니다. 

     -- cmdlet 이름 확인이 변경되었습니다. Windows PowerShell 1.0에서는 두 Windows PowerShell 스냅인에서 
        동일한 이름의 cmdlet을 내보내는 경우 런타임 오류가 생성됩니다. Windows PowerShell 2.0에서는 세션에 
        추가된 마지막 cmdlet이 명령 이름을 입력할 때 실행됩니다. 기본적으로 실행되지 않는 명령을 실행하려면 
        cmdlet 이름을 해당 cmdlet이 제공된 스냅인이나 모듈의 이름으로 한정하십시오.

     -- 함수 이름 뒤에 '-?'를 사용하면 함수에 대한 도움말 항목이 포함되어 있는 경우 도움말 항목을 가져옵니다. 

     -- Microsoft .Net Frameword 메서드에 대한 매개 변수 확인이 변경되었습니다.
        Windows PowerShell 1.0에서는 두 개 이상의 최적 구문이 있는 오버로드된 .NET 메서드를 
        호출하는 경우 오류가 보고되지 않지만, Windows PowerShell 2.0에서는 모호성 오류가 보고됩니다. 

        또한 Windows PowerShell 2.0에서는 최적 메서드를 선택하는 알고리즘이 모호성을 최소화하기 위해 크게 
        변경되었습니다.

     -- 파이프라인에서 컬렉션을 열거하고 파이프라인에서 컬렉션을 수정하려는 경우 Windows PowerShell은 
        예외를 throw합니다.
    
        예를 들어 다음 명령은 Windows PowerShell 1.0에서 작동하지만 Windows PowerShell 2.0에서 첫 번째 
        파이프라인 반복 후 실패합니다.

            $h = @{Name="Hello"; Value="Test"}
            $h.keys | foreach-object {$h.remove($_)}

        이 오류를 방지하려면 $() 문자를 사용하여 열거자에 대한 하위 식을 만듭니다. 예를 들면 다음과 같습니다.

	    $($h.keys) | foreach-object {$h.remove($_)}



    Windows PowerShell 2.0에 대한 자세한 내용은 다음 웹 사이트를 참조하십시오.
 
    -- Windows PowerShell 웹 사이트 
       https://go.microsoft.com/fwlink/?LinkID=106031

    -- Windows PowerShell 팀 블로그:
       https://go.microsoft.com/fwlink/?LinkId=143696


참고 항목
    about_Data_Sections
    about_Debuggers
    about_Functions_Advanced
    about_Jobs
    about_Join
    about_PSSessions
    about_Remote
    about_Script_Internationalization
    about_Split




목차