홈페이지 » 어떻게 » Geek School PowerShell에서 Remoting 사용법 배우기

    Geek School PowerShell에서 Remoting 사용법 배우기

    PowerShell이 ​​제공하는 가장 좋은 기능 중 하나는 서버를 원격으로 관리 할 수있는 기능입니다. 심지어 한 번에 여러 무리를 관리 할 수도 있습니다..

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

    • PowerShell을 사용하여 Windows를 자동화하는 방법 배우기
    • PowerShell에서 Cmdlet을 사용하는 방법 학습
    • PowerShell에서 개체를 사용하는 방법 학습
    • PowerShell에서 형식 지정, 필터링 및 비교 학습

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

    Remoting이란 무엇인가??

    서버를 대량으로 관리하는 것은 지루할 수 있습니다. 이전에 50 대의 웹 서버에서 IIS 구성을 변경해야한다면, 무슨 뜻인지 알게 될 것입니다. PowerShell Remoting과 언어 스크립팅 기능이 구제를받을 수있는 상황입니다. PowerShell Remoting을 사용하면 HTTP 또는보다 안전한 HTTPS를 사용하여 네트워크의 원격 컴퓨터에 명령을 보낼 수 있습니다. 그런 다음 컴퓨터가 명령을 실행하고 사용자에게 출력을 보냅니다. 화면에 표시됩니다.

    기술 보자

    PowerShell Remoting의 핵심에는 단일 Windows 서비스, Windows 원격 관리 또는 WinRM 서비스가 있습니다. WinRM을 사용하여 하나 이상의 세션 구성 (끝점이라고도 함)을 설정할 수 있습니다.이 구성은 기본적으로 원격 PowerShell 인스턴스에 연결하는 사람에게 제공하려는 환경에 대한 정보가 들어있는 파일입니다. 보다 구체적으로 세션 구성 파일을 사용하여 인스턴스에 연결할 수있는 사용자와 연결할 수없는 사용자, 실행할 수있는 cmdlet 및 스크립트, 세션을 실행해야하는 보안 컨텍스트를 정의 할 수 있습니다. WinRM 서비스를 사용하여 들어오는 PowerShell 요청을 수신하는 "수신자"도 설정합니다. 이러한 "리스너"는 HTTP 또는 HTTPS 일 수 있으며 시스템의 단일 IP 주소에 바인딩 될 수 있습니다. 다른 컴퓨터에 PowerShell 연결을 열면 (기술적으로 이것은 HTTP를 기반으로하는 WS-MAN 프로토콜을 사용하여 수행됩니다) 연결은 이러한 "수신기"중 하나에 바인딩됩니다. 그런 다음 "청취자"는 해당 세션 구성 파일과 연관된 응용 프로그램에 트래픽을 전송합니다. 응용 프로그램 (일반적으로 PowerShell은 원한다면 다른 호스팅 응용 프로그램을 가질 수 있습니다)을 실행 한 다음 명령을 실행하고 네트워크를 통해 "수신기"를 통해 결과를 다시 제공하고 컴퓨터로 다시 보냅니다..

    어떻게하는지 보여줘

    가장 먼저해야 할 일은 연결하려는 시스템에서 Remoting을 활성화하는 것입니다. 이 작업은 다음을 실행하여 수행 할 수 있습니다.

    Enable-PSRemoting

    모든 프롬프트에 대해 예라고 대답해야합니다. Enable-PSRemoting을 실행하면 PC가 다음과 같이 약간 변경됩니다.

    • WinRM 서비스가 시작됩니다..
    • WinRM 서비스가 수동 시작 모드에서 자동 모드로 변경됩니다..
    • 모든 네트워크 카드에 바인딩 된 HTTP Listener를 만듭니다..
    • 또한 WS-MAN 프로토콜에 대한 인바운드 방화벽 예외를 생성합니다..
    • 일부 기본 세션 구성이 생성됩니다.

    Windows 7을 실행 중이고 네트워크 카드의 위치가 공용으로 설정된 경우 PowerShell Remoting을 사용하면 실패합니다. 이를 수정하려면 집 또는 직장 네트워크 위치로 전환하기 만하면됩니다. 또는 다음을 사용하여 네트워크 확인을 건너 뛸 수 있습니다.

    Enable-PSRemoting -SkipNetworkProfileCheck

    그러나 네트워크 위치를 변경하는 것이 좋습니다..

    PowerShell을 사용하여 다른 컴퓨터에 연결하는 두 가지 방법이 있습니다. SSH를 사용하는 것과 매우 유사한 일대일 방식이 있습니다. 그런 다음 일대 다 방식이 있습니다..

    PowerShell 세션 사용

    PowerShell을 사용하여 원격 컴퓨터에 연결하는 첫 번째 방법은 PowerShell 세션이라는 것을 사용하는 것입니다. 간단하게 세션을 설정하면 원격 시스템에서 명령을 자신의 시스템에서와 거의 같은 방식으로 대화식으로 실행할 수 있습니다. 세션을 열려면 다음을 입력하십시오.

    Enter-PSSession -ComputerName "Darlah"

    프롬프트에는 cmdlet을 실행중인 컴퓨터를 나타내는 접두사가 생깁니다..

    여기에서 원격 시스템에 앉아있는 것처럼 프롬프트를 실제로 처리 할 수 ​​있습니다. 예를 들어, C : \ 드라이브에있는 모든 파일을 보려면 간단하게 할 수 있습니다.

    Get-ChildItem - 경로 C : \

    Linux 배경에서 온 사람이라면이 일대일 방법을 SSH 대신 PowerShell로 사용하는 방법을 생각해 볼 수 있습니다.

    Invoke-Command 사용

    원격 컴퓨터에서 PowerShell을 사용할 수있는 두 번째 방법은 Invoke-Command를 사용하는 것입니다. Invoke-Command를 사용하면 동일한 명령을 여러 시스템에서 동시에 실행할 수 있다는 이점이 있습니다. 상상할 수있는 것처럼 이것은 서버에서 이벤트 로그를 수집하는 것과 같은 작업을 수행하려는 경우에 특히 유용합니다. Invoke-Command는 다음 구문을 따릅니다.

    Invoke-Command -ComputerName Darlah, localhost -ScriptBlock Get-EventLog 응용 프로그램 -Newest 2

    명령은 모든 시스템에서 병렬로 실행되므로 주어진 결과가 어느 PC에서 왔는지 확인할 수있는 방법이 필요합니다. PSComputerName 속성을 보면이 작업을 수행 할 수 있습니다..

    Invoke-Command를 사용하면 더 이상 파이프 라인에 기대할 수있는 개체가 없습니다. PowerShell에서 원격 컴퓨터의 정보를 컴퓨터로 다시 가져 오려면 원격 컴퓨터에서 실행 한 명령이 나타내는 개체를 나타내는 방법이 필요합니다. 요즘은 계층 적 데이터 구조를 표현하는 방법으로 XML을 사용하는 것 같습니다. Invoke-Command를 사용하여 명령을 실행하면 결과가 먼저 XML로 직렬화되어 시스템으로 다시 전송됩니다. 일단 그들이 당신의 머신으로 돌아 오면, 그것들은 객체로 deserialize됩니다. 여기에있는 문제는 비 직렬화 될 때 ToString () 메서드를 제외한 모든 메서드가 개체가 제거되었다는 것입니다.

    참고 :이 규칙에는 몇 가지 예외가 있습니다. 예를 들어 정수와 같은 대부분의 기본 유형은 포함 된 메서드로 직렬화 해제 될 수 있습니다. Rehydration이라는 프로세스가 있는데, 일부 메소드를 직렬화 복원 된 오브젝트에 다시 추가 할 수 있습니다. 조심해서 Get-Member가 친구임을 기억하십시오..

    숙제

    • Don Jones의 PowerShell Remoting 전자 책의 비밀 읽기.