기술 잡지

Windows PowerShell 버전 2.0의 원격 관리 기능 살펴보기

엘도라도29 2008. 8. 27. 01:48

시작하기 전에go.microsoft.com/fwlink/?LinkID=119707에서 최신 버전을 다운로드해야 합니다.

우선 중요한 가지 사항을 밝혀 두겠습니다. CTP Microsoft 다음 버전의 응용 프로그램에서 지향해야 방향에 대해 적극적인 사용자들로부터 의견을 듣기 위해 제공하는 사전 베타 코드입니다. CTP 버전 또는 드롭(업계 용어) 이전 드롭과 완전히 다를 있습니다. 개발 팀에서 피드백을 수집하여 철저하게 검토한 이러한 사용자 피드백을 기준으로 응용 프로그램을 변경하기 때문입니다. 이러한 방식에서는 CTP 사용과 관련하여 유리한 혜택을 받을 있고 주의해야 경고도 있습니다.

 

유리한 혜택이란 CTP 사용할 connect.microsoft.com 사이트를 통해 제품에 대한 피드백을 제공할 있다는 것입니다. 그러면 개발 팀에서 개발 해당 피드백에 대해 조치를 취할 있습니다! 베타 또는 RC(Release Candidate) 단계까지 기다릴 경우 피드백을 적용하기가 더욱 어려워집니다. CTP 중에는 모든 것이 가능하고, 개발 팀에서는 필요한 경우 대대적이고 완전한 변경 작업을 수행할 있습니다.

반면 경고도 따릅니다. CTP 생산 준비가 되지 않은 버전입니다. 물론, Windows PowerShell™ 2.0 CTP2 지금까지 발표된 사전 릴리스 코드 가장 안정적인 버전일 있지만, 다음 CTP 드롭은 완전히 다른 응용 프로그램이 수도 있습니다. 따라서 다음 버전에서 처음부터 다시 시작해야 있으므로 CTP2 너무 의존하지는 마십시오.

CTP Windows PowerShell 1.0 함께 설치할 없습니다. 최상의 설치를 위해 시스템에 Microsoft® .NET Framework 3.5 설치되어 있어야 모든 기능을 사용할 있습니다. 그렇지 않으면 일부 기능이 제한됩니다.

또한, CTP 매우 초기의 코드이므로 Microsoft 지금까지 Windows Vista® Windows Server® 2008 비롯한 최신 운영 체제에서 작동하는 응용 프로그램에 중점을 두고 있습니다. 현재의 OS 호환성은 최종 발표될 코드의 OS 호환성을 나타내지는 않습니다. 이전 버전과의 호환성은 개발 주기의 후반에 적용됩니다.

 

가지 유형의 원격

원격 관리에는 대개 (fan-in) 아웃(fan-out) 가지 유형의 원격 기능이 있습니다. (Fan-in) 원격 기능은 단일 서버에 여러 관리자가 보안 연결을 합니다. Windows PowerShell 보안 분할 방식으로 기능을 사용할 있도록 설계되었습니다. 따라서, Exchange Server 회사를 호스팅할 경우 고객에게 서버의 일부에 대한 관리 액세스를 제공할 있습니다. 원격 기능을 사용하면 원격 서버에 설치된 Windows PowerShell(버전 2.0 해당) 원격으로 보안이 유지되는 대화형 액세스가 가능합니다.

아웃(Fan-out) 원격 기능을 사용하면 전체 원격 서버 그룹에 대해 일련의 명령을 번에 실행할 있습니다. 실행된 명령은 워크스테이션에서 서버 그룹에 동시에 전파됩니다. 명령은 서버에서 실행되고, 결과는 Windows PowerShell 개체의 형태로 워크스테이션에 반환되므로 결과를 검토하고 작업을 수행할 있습니다. Windows PowerShell 아웃 원격 기능을 위한 가지 핵심 기술인 Windows® Management Instrumentation(WMI) Windows Server 2008에서 처음 도입된 Windows PowerShell 2.0 CTP에서 업데이트된 Windows Remote Management(WinRM) 지원합니다.

 

동기와 비동기

실제로 Windows PowerShell 1.0에도 WMI 연결된 기본적인 아웃 기능이 있었습니다. 예를 들어, 컴퓨터 이름 배열을 만든 다음 각각에서 WMI 클래스를 쉽게 검색할 있었습니다.

$names = @("server1","server2","server2")

Get-WmiObject Win32_OperatingSystem

–computer $names

버전 1.0에서는 WMI 메서드를 번에 실행할 있는 방법을 제공하지 않았기 때문에 컴퓨터 재부팅과 같은 메서드 실행에는 많은 작업이 필요했습니다. 하지만 버전 2.0 CTP에서 Invoke-WmiMethod cmdlet 도입하면서 바뀌었습니다.

$names = @("server1","server2","server2")

Get-WmiObject Win32_OperatingSystem –computer $names | `

Invoke-WmiMethod Reboot

기술에도 문제는 있습니다. 작업이 동기로 수행되므로 컴퓨터가 번에 하나씩 연결되고 다른 명령을 실행할 있으려면 명령이 완료될 때까지 기다려야 합니다. 그러나 CTP에서는 이와 같은 명령을 백그라운드에서 실행할 있도록 백그라운드 작업이라는 새로운 개념을 도입했습니다. 간단히 –AsJob 매개 변수만 추가하면 백그라운드에서 WMI 명령을 실행할 있습니다.

$names = @("server1","server2","server2")

Get-WmiObject Win32_OperatingSystem –computer $names -asjob

결과 작업의 상태는 Get-PSJob 실행하여 검토할 있으며, 작업의 최종 결과는 Receive-PSJob 실행하여 있습니다. 다음 칼럼에서 작업 관리에 대해 자세히 살펴보도록 하겠습니다. 하지만 Invoke-Command cmdlet 다음과 같이 백그라운드에서 명령을 실행할 있는 좋은 방법을 제공합니다.

$command = { Get-WmiObject Win32_OperatingSystem }

$names = @("server1","server2","server2")

Invoke-Command –command $command –computer $names –asjob

명령은 지정된 컴퓨터에 Get-WmiObject 명령을 보낸 다음 로컬에서 실행합니다. 일반적으로 실행 속도가 빠르며 WMI 원격 프로시저 호출(RPC) 연결에 의존할 필요도 없습니다. 대신 Invoke-Command 기본적으로 포트 80 또는 443 사용하는 WinRM 활용합니다. 이러한 포트는 방화벽을 손쉽게 탐색할 있게 해주며 전체적으로 구성이 가능합니다. 또한 Invoke-Command 대체 자격 증명 제한을 위한 추가 매개 변수를 지원하여 수백 대의 컴퓨터를 대상으로 하지만 일부만 병렬로 실행할 있습니다. 따라서 정체 과도한 오버헤드를 피할 있습니다.

 

재사용 가능한 실행 영역

특정 컴퓨터 그룹을 이상 원격으로 관리할 계획이라면 단순한 컴퓨터 이름 목록이 아닌 실행 영역을 사용해 보도록 합니다. Windows PowerShell에서 실행 영역은 컴퓨터의 콘솔 창에서 로컬로 실행되거나 원격 컴퓨터에서 백그라운드로 실행되거나 상관없이 단순히 엔진의 인스턴스입니다. 원격 실행 영역을 시작하는 방법은 간단합니다.

$names = @("server1","server2","server2")

New-RunSpace –computer $names

실행 영역에서도 WinRM 사용하므로 기본적으로 포트 80(또는 –UseSSL 매개 변수를 지정할 경우 443) 사용합니다. 또한 대체 인증서 등도 허용할 있습니다. 결과 실행 영역 개체를 검색할 경우 Invoke-Command 전달할 있으며, Windows PowerShell 이러한 실행 영역이 존재하는 컴퓨터로 명령을 보냅니다.

$command = { Get-WmiObject Win32_OperatingSystem }

$rs = Get-Runspace

Invoke-Command –command $command –runspace $rs –asjob

여기서 이점은 셸이 열려 있는 동안에는 실행 영역이 활성 상태로 유지되어 추가 명령에 대해 간단히 재사용할 있다는 것입니다.

 

(Fan-In) 원격

실행 영역은 원격 기능에서도 중요합니다. 예를 들어, 그림 1에서는 원격 컴퓨터에서 실행 영역을 만들고 해당 실행 영역에 대한 참조를 검색한 Push-Runspace cmdlet 사용하여 실행 영역을 활성화했습니다. 여기서 SSH 또는 기타 원격 유틸리티와 유사하게 원격 컴퓨터에서 명령을 실행합니다. Pop-Runspace 실행하면 원래의 "로컬" 실행 영역으로 돌아오고, 프롬프트를 통해 현재 어느 위치에 있는지 있습니다.

그림 1 실행 영역을 사용하여 원격 컴퓨터에서 명령 실행

실행한 정확한 명령 시퀀스는 다음과 같습니다.

PS C:\>new-runspace -computer "WIN-YFZXQMHXAWM"

PS C:\>$server2 = get-runspace -sessionid 2

PS C:\>push-runspace $server2

[win-yfzxqmhxawm]: PS C:\Windows\System32> pop-runspace

PS C:\>

기술은 여러 관리자가 동시에 동일한 서버에서 대화형 원격 실행 영역을 있고 개별 워크스테이션에서 서버로 들어올 있으므로 인이라고 합니다. Windows PowerShell 2.0 새로운 보안 모델을 통해 제한적인 셸과 cmdlet 만들어 관리자가 전역 수정을 하지 못하게 있습니다. 관리자는 자신의 고유 셸로만 제한됩니다. 이러한 새로운 보안 기술에는 .NET Framework 대상 언어로 가지 사용자 지정 소프트웨어를 개발해야 합니다. 내용은 Windows PowerShell 칼럼의 범위를 벗어나지만 이러한 기능이 있다는 사실을 알아두는 것이 좋습니다.

 

2.0 핵심 응용 프로그램

Windows PowerShell 2.0 CTP에는 여러 가지 놀라운 새로운 기능이 포함되어 있으나 생각으로는 원격 기능이 핵심 응용 프로그램입니다. 거의 모든 환경의 모든 관리자는 원격 기능을 통해 이점을 누릴 있습니다.