귀하의 작업 공간에서 원격 컴퓨터에서 PowerShell 명령을 실행해 보고 싶은 적이 있으신가요? PowerShell Remoting을 사용하면 가능합니다. 원격 PowerShell을 사용하면 여러 원격 시스템에서 지속 가능한 방식으로 명령 및 스크립트를 실행할 수 있습니다.
흥미로우신가요? PowerShell 방식으로 원격 컴퓨터를 다루는 방법에 대해 계속 읽어보세요.
전제 조건
이 튜토리얼은 실습을 위한 데모로 진행됩니다. 따라하려면 PowerShell 7이 설치된 적어도 세 대의 컴퓨터가 필요합니다. 하나는 관리 컴퓨터이고 나머지 두 대는 원격 컴퓨터입니다.
이 튜토리얼에서는 다음 컴퓨터를 사용합니다.
- A Windows 10 PC with PowerShell 7 installed as the management computer. You will launch remote commands from this machine.
- A Windows 10 PC with PowerShell 7 installed. This machine will be the endpoint for remote PowerShell over WinRM.
- A user account on the remote Windows machine with local administrator rights. This tutorial uses a user account called ma.
- 리눅스 머신에 SSHD를 활성화하여 원격 PowerShell 엔드포인트로 사용합니다. 이 튜토리얼에서는 Fedora 35를 사용합니다.
- 리눅스 머신에서 원격 명령을 실행할 사용자 계정이 필요합니다. 해당 계정은 sudo 및 SSH 액세스 권한이 있어야 합니다. 이 튜토리얼에서는 test라는 계정을 사용합니다. 리눅스 머신에 계정이 없는 경우, 이 단계에서 사용자 계정을 만드세요.
Windows에서 원격 PowerShell 활성화
PowerShell 7을 설치할 때, PowerShell 원격 기능을 활성화할 수 있는 옵션이 있을 수 있습니다. 그러나 확인하기 위해 아래 단계를 따라 원격 PowerShell을 활성화하세요.
1. 원격 Windows 10 PC에 로그인하세요.
2. 관리자 권한으로 PowerShell을 엽니다.
3. 아래 명령을 실행하여 원격 PowerShell을 활성화하세요.
명령은 콘솔에서 확인할 수 있는 여러 구성 변경을 실행합니다.

SSH를 통해 Linux에서 원격 PowerShell 사용 가능하게 하기
WinRM은 Windows 전용이므로 Linux에서 원격 PowerShell을 사용할 수 없습니다. 대신 Linux에서 SSH를 통해 원격 PowerShell을 사용할 수 있습니다. PowerShell을 이미 설치했다고 가정하고 아래 단계를 따르세요.
1. 원격 Linux 시스템에 로그인하고 터미널 세션을 엽니다.
2. SSH 서버 구성 파일을 텍스트 편집기로 엽니다. Gedit, Sublime, Nano 등 텍스트 편집기를 선택하여 사용할 수 있습니다. 이 예제에서는 Gedit을 사용합니다.
3. 다음 줄을 파일에 추가합니다. 이 줄은 PowerShell 프로세스를 호스팅하는 SSH 하위 시스템을 생성합니다.

4. 편집기를 닫습니다.
5. 마지막으로 다음 명령을 실행하여 SSH 서버를 다시 시작합니다.
로컬 컴퓨터에서 원격 PowerShell 신뢰할 수 있는 호스트 추가하기
이 시점에서 원격 컴퓨터는 명령을 수신할 준비가 되었습니다. 그러나 관리 컴퓨터는 신뢰할 수 있는 호스트 목록에 없는 경우 원격 PowerShell 호스트에 연결을 거부할 수 있습니다. 장애 발생 가능성을 피하기 위해 원격 호스트를 신뢰할 수 있는 호스트 목록에 추가해야 합니다.
관리 컴퓨터에서 관리자 권한으로 PowerShell을 엽니다.
다음 winrm
명령을 실행하세요. 이 명령은 원격 Windows(192.168.8.107
) 및 Linux(192.168.8.171
) 컴퓨터를 컴퓨터의 신뢰할 수 있는 호스트 목록에 추가합니다.

원격 컴퓨터에서 명령 실행
모든 구성 요소가 준비되었으므로이 섹션에서 원격 컴퓨터에서 명령을 실행합니다.
1. 관리 컴퓨터에서 새 PowerShell 세션을 엽니다.
2. 이제 아래의 Invoke-Command
명령을 실행하여 사용자 ma
로 원격 컴퓨터의 첫 다섯 개 서비스를 나열합니다. 다음과 같이 ScriptBlock
스위치의 중괄호 안에 실행할 명령이 나타납니다.

3. 원격 Linux 호스트에서 동일한 작업을 수행하려면 대신 아래 명령을 실행하세요. -HostName
이 -ComputerName
을 대체하고, -UserName
이 -ComputerName
을 대체했음을 알 수 있습니다. 이러한 매개변수는 Invoke-Command
cmdlet이 대상이 SSH 호스트임을 나타냅니다.

원격 컴퓨터에서 스크립트 실행
Invoke-Command
cmdlet을 사용하여 원격 컴퓨터에서 PowerShell 스크립트 파일을 실행할 수도 있습니다. 그러나 -ScriptBlock
매개변수를 지정하는 대신 스크립트 로컬 경로 뒤에 -FilePath
매개변수를 지정해야 합니다.
1. 먼저 로컬 컴퓨터에 nametime.ps1
라는 PowerShell 스크립트 파일을 생성하세요.
2. 선호하는 스크립트 편집기에서 스크립트를 열고 다음 코드를 추가하세요. 그런 다음 파일을 저장하세요.

3. -FilePath
매개변수와 함께 Invoke-command
cmdlet을 실행하세요. -FilePath
는 스크립트 파일을 가리켜야 합니다. 이 예시에서는 스크립트 파일이 동일한 작업 디렉터리에 있습니다.

원격 컴퓨터의 대화식 관리
이전 섹션에서 원격 컴퓨터에서 개별 명령을 실행하는 방법을 확인했습니다. 이번 섹션에서는 대화식 세션을 열어 로컬인 것처럼 원격 컴퓨터에서 여러 명령을 실행하는 방법을 배웁니다.
1. Enter-PSSession
명령을 실행하여 192.168.8.107
에 위치한 ma
사용자로 원격 세션을 시작하세요.
아래의 예시와 같이 프롬프트에서 원격 사용자 계정 암호인 ma를 입력하세요.

아래의 예시와 같이 새로운 프롬프트가 나타납니다. 대괄호 안의 IP 주소는 원격 PowerShell 호스트를 나타냅니다.

3. dir
명령을 사용하여 현재 작업 디렉터리의 파일을 나열하세요. 세션 내에서 원하는만큼 PowerShell 명령을 실행할 수 있습니다. dir
화면에 디렉터리의 내용이 나타날 것입니다. 아래 스크린샷과 같습니다.

4. 원격 컴퓨터를 관리한 후 세션을 종료하려면 아래의 Exit-PSSession
cmdlet을 실행하세요.
종료 후에는 아래 스크린샷과 같이 로컬 프롬프트로 돌아갑니다.

원격 PowerShell 세션 연결 해제 및 재연결
인터랙티브 세션 또는 일회성 명령 대신 세션을 영구적으로 저장할 수 있습니다. 세션을 저장하면 컨텍스트를 유지하면서 세션 간에 전환할 수 있습니다. 이 섹션에서는 영구적인 세션을 생성하고 관리하는 방법을 배우게 됩니다.
1. 원격 컴퓨터인 192.168.8.107
에 대한 세션을 사용자 ma
로 생성하기 위해 New-PSSession
cmdlet을 실행하십시오(-Credential
). 다음과 같이 세션을 $var
변수에 저장하십시오.
2. 다음과 같이 변수 $var
를 실행하여 해당 내용을 확인하십시오.
아래에 표시된 대로, RemoteMachine ComputerType 및 State가 Opened로 설정된 세션 개체가 표시되어야 합니다.

3. Enter-PSSession
명령을 실행하여 $var
에 저장된 세션에 들어가십시오.
정상적으로 실행되면 아래와 같이 추가 출력 없이 원격 프롬프트로 변경됩니다.

4. 세션 내에서 변수 $rem1
을 생성하십시오. 원하는 변수 이름과 식별자 문자열을 사용하십시오. 나중에 동일한 세션에 연결되었는지 확인하는 데 이 변수를 사용하게 됩니다.
5. 아래 명령을 실행하여 원격 PowerShell 세션을 종료하십시오.

6. 원격 PowerShell 세션을 다시 설정하십시오.
7. 원격 세션 프롬프트에서 $rem1
변수를 실행하여 해당 값을 확인하십시오.
원격 PowerShell 세션을 종료하기 전에 이전에 설정한 동일한 값이 표시되어야합니다. 이렇게하면 동일한 세션에 다시 연결되었음을 확인할 수 있습니다.

8. 다음과 같이 다시 세션을 종료하기 위해 Exit-PSSession
명령을 실행하십시오.
9. 마지막으로, session
스위치를 $var
로 설정하여 동일한 원격 세션에서 원격 컴퓨터의 호스트 이름을 표시하기 위해 Invoke-Command
를 실행하십시오. 이 방법은 수동으로 연결, 연결 해제 및 단일 세션에 다시 연결하지 않고 동일한 세션에서 명령을 실행하는 대체 방법입니다.

10. $var
에 저장된 세션을 완전히 제거하기 위해 Remove-PSSession
을 실행하십시오.
결론
축하합니다! 이 튜토리얼의 끝에 도달하여 원격 PowerShell으로 Windows 또는 Linux 시스템을 관리하는 방법을 배웠습니다. 이 가이드는 여러분이 시작을 하기 위한 목적으로 제작되었습니다. 어떨 때는 원격 세션을 통해 Linux에서 PowerShell을 사용하는 것을 통해 더 깊이 파고들어보는 것은 어떨까요?