CIMSession 개체를 사용하여 원격 컴퓨터에서 리포지토리 클래스 쿼리
CIM(일반 정보 모델) 세션은 원격 컴퓨터에 대한 연결을 만들 때 사용되는 영구 구성 개체입니다. 연결은 기본적으로 WS-MAN을 사용하지만 DCOM 프로토콜을 지정할 수 있습니다. 세션을 만든 후 이 세션을 사용하여 해당 컴퓨터에 대한 여러 쿼리를 처리할 수 있습니다. 이렇게 하면 모든 구성 옵션이 세션에 포함되어 있으므로 연결이 간소화됩니다. CIM 세션을 사용하면 임시 연결에 사용할 수 없는 연결 옵션을 지정할 수도 있습니다.
세션 개체 만들기
세션을 만들 때 나중에 참조할 수 있도록 변수에 저장해야 합니다. 세션을 만들고 변수에 저장하는 기본 구문은 다음과 같습니다.
$s = New-CimSession -ComputerName LON-DC1
동시에 여러 세션을 만들 수 있습니다.
$sessions = New-CimSession -ComputerName LON-CL1,LON-DC1
세션을 만들 때 PowerShell은 즉시 연결을 설정하지 않습니다. cmdlet이 CIM 세션을 사용하는 경우 PowerShell은 지정된 컴퓨터에 연결한 다음, cmdlet이 완료되면 PowerShell에서 연결을 종료합니다.
참고
경우에 따라 원격 연결을 위해 CIM 세션 대신 PowerShell 원격을 사용하는 것이 도움이 될 수 있습니다. PowerShell 원격은 원격 컴퓨터에 대한 연결을 열고 명시적으로 닫을 때까지 계속 엽니다. 컴퓨터에 대해 여러 쿼리를 실행하는 경우 성능이 향상될 수 있습니다.
세션 사용
세션을 변수에 저장한 후에는 -CimSession 매개 변수를 사용하여 CIM cmdlet으로 참조합니다. 다음 예제에서는 여러 세션이 포함된 변수를 사용합니다.
Get-CimInstance -CimSession $sessions -ClassName Win32_OperatingSystem
세션은 도메인 환경, 동일한 도메인의 컴퓨터 간 또는 트러스트 도메인에서 가장 잘 작동하도록 설계되었습니다. 비도메인 컴퓨터 또는 신뢰할 수 없는 도메인의 컴퓨터에 대한 세션을 만들어야 하는 경우 추가 구성을 수행해야 합니다. 모듈 8 “Windows PowerShell을 사용하여 원격 컴퓨터 관리”에서 해당 구성에 대해 자세히 알아봅니다.
참고
Get-SmbShare와 같은 일부 cmdlet에 대한 도움말 정보에는 -CimSession 매개 변수를 지원한다고 명시되어 있습니다. 이러한 명령은 내부적으로 CIM을 사용합니다. 이러한 명령을 사용하여 원격 컴퓨터를 쿼리하는 경우 기존 세션을 사용하여 연결할 CIM 세션 개체를 -CimSession 매개 변수에 제공할 수 있습니다.
세션 옵션 구성
세션 옵션 개체를 사용하면 세션에 대한 많은 설정을 지정할 수 있습니다. 새 세션을 만들 때 세션을 구성할 세션 옵션 개체를 지정합니다. 다음 예제에서는 WS-MAN 대신 DCOM을 사용하여 세션을 만듭니다.
$opt = New-CimSessionOption -Protocol Dcom
$DcomSession = New-CimSession -ComputerName LON-DC1 -SessionOption $opt
Get-CimInstance -ClassName Win32_BIOS -CimSession $DcomSession
이전 코드의 첫 번째 줄은 DCOM 프로토콜을 연결에 사용되도록 지정하는 세션 옵션 개체를 만듭니다. 두 번째 줄은 해당 세션 옵션 개체를 사용하여 새 세션을 만들고 변수에 저장합니다. 마지막 줄은 세션을 사용하여 세션에 정의된 원격 컴퓨터를 쿼리하고 요청된 정보를 반환합니다.
세션 제거
세션을 만든 후에는 메모리에 유지되며 PowerShell 인스턴스가 닫힐 때까지 사용할 수 있습니다. Remove-CimSession cmdlet을 사용하여 세션을 수동으로 제거할 수 있습니다. 다음 예제에서는 변수에 포함된 하나 이상의 세션을 제거합니다.
$sessions | Remove-CimSession
특정 원격 컴퓨터에 대한 세션을 제거하려면 다음 예제와 같이 해당 컴퓨터에 대한 세션을 쿼리한 다음, 제거할 수 있습니다.
Get-CimSession -ComputerName LON-DC1 | Remove-CimSession
모든 세션을 제거하려면 다음 명령을 실행합니다.
Get-CimSession | Remove-CimSession