Windows PowerShell을 사용하여 영구 PSSession 만들기 및 관리

완료됨

New-PSSession 명령을 사용하여 영구 연결을 만듭니다. 이 명령에는 -Credential, –Port, –UseSSL을 포함하여 Invoke-Command와 동일한 매개 변수가 많이 포함됩니다. 이는 Invoke-Command에서 만든 것과 동일한 연결을 만들기 때문입니다. 그러나 이 연결을 즉시 닫는 대신 실행 중인 상태로 두게 됩니다.

PowerShell 세션에는 유휴 시간 제한이 있으며, 그 후에는 원격 컴퓨터가 자동으로 닫힙니다. 닫힌 PowerShell 세션은 다시 연결할 수 없으므로 닫힌 PowerShell 세션은 연결이 끊긴 PowerShell 세션과 다릅니다. 이 경우 PowerShell 세션을 제거한 다음, 다시 만들 수 있습니다.

New-PSSession은 여러 컴퓨터 이름을 허용하여 여러 PowerShell 세션 개체를 만들 수 있습니다. New-PSSession 명령을 실행하면 새로 만든 PowerShell 세션을 나타내는 개체가 출력됩니다. 이러한 PowerShell 세션을 변수에 할당하여 더 쉽게 참조하고 나중에 사용할 수 있도록 할 수 있습니다.

PowerShell 세션을 만드는 즉시 사용할 수 있습니다. Invoke-CommandEnter-PSSession 명령은 모두 컴퓨터 이름 대신 PowerShell 세션 개체를 수락할 수 있습니다. Invoke-Command는 여러 PowerShell 세션 개체를 수락할 수 있습니다. 이 목적을 위해 명령의 –Session 매개 변수를 사용합니다. 이 매개 변수를 사용하는 경우 명령은 새 연결을 만드는 대신 기존 PowerShell 세션을 사용합니다. 명령 실행이 완료되거나 PowerShell 세션을 종료하면 PowerShell 세션이 계속 실행되고 연결되며 나중에 사용할 준비가 됩니다.

예를 들어 다음 명령을 사용하여 LON-CL1에서 PowerShell 세션을 입력한 다음, 닫을 수 있습니다.

$client = New-PSSession –ComputerName LON-CL1
Enter-PSSession –Session $client
Exit-PSSession

또는 다음 명령을 사용하여 동일한 결과를 달성할 수 있습니다.

$computers = New-PSSession –ComputerName LON-CL1,LON-DC1
Invoke-Command –Session $computers –ScriptBlock { Get-Process }

예를 들어 다음 명령은 $dc 변수를 사용하여 스크립트 또는 코드 블록 내에서 LON-DC1에 대한 PowerShell 세션을 열 수 있습니다.

$dc = New-PSSession –ComputerName LON-DC1

다음 명령은 Server01Server02에 원격 세션을 만들고 세션 개체는 $s 변수에 저장됩니다.

$s = New-PSSession -ComputerName Server01, Server02

세션을 설정했으므로 이제 해당 세션에서 명령을 실행할 수 있습니다. 세션이 영구 세션이므로 명령을 실행하여 데이터를 수집하고 다른 명령에서 해당 데이터를 사용할 수 있습니다.

예를 들어 다음 명령은 변수의 세션에서 $s 명령을 실행하고 결과를 $h 변수에 저장합니다.

Invoke-Command -Session $s {$h = Get-HotFix}

$h 변수는 $s의 각 세션에서 생성되지만 로컬 세션에는 없습니다. 이제 $h 변수의 데이터를 동일한 세션의 다른 명령과 함께 사용할 수 있으며 결과는 로컬 컴퓨터에 표시됩니다. 예를 들면 다음과 같습니다.

Invoke-Command -Session $s {$h | where {$_.InstalledBy -ne "NTAUTHORITY\SYSTEM"}}