Introduction
Both Windows PowerShell Remoting (PSsession) and CIM (Common Information Model) sessions are used in PowerShell
to manage and interact with remote computers. However, they serve different purposes and have some differences in their capabilities and implementation.
Windows PowerShell Remoting (PSsession):
PowerShell Remoting allows you to run PowerShell commands and scripts on remote computers over a network connection. PSsession
uses the WSMan (Windows Remote Management)
protocol to establish a secure and authenticated connection between the local and remote machines.
Key points about PSsession:
-
Interactive Session:
PSsession
provides an interactive session where you can run multiple commands on the remote computer just as if you were running them locally. -
Full PowerShell Support:
PSsession
gives you access to the full PowerShell environment on the remote computer, includingcmdlets
,functions
,modules
, andscripts
. -
Stateful Connection:
PSsession
maintains a stateful connection, which means variables and session-specific data persist across multiple commands executed within the same session. -
Powerful Remoting Features:
PSsession
supports features like background jobs, interactive prompts and secure data transmission. -
Usage Example:
# Create a PSsession to connect another computer.
$session = New-PSSession -ComputerName "RemoteComputer"
# Run commands on the remote computer
Invoke-Command -Session $session -ScriptBlock { Get-Process }
# Close the PSsession
Remove-PSSession $session
CIM (Common Information Model) Session:
CIM is an industry standard for describing system and application management information, and PowerShell
provides a CIM session
to interact with CIM-based resources on remote computers. CIM sessions use the WSMan
protocol similar to PSsession
but are optimized for management tasks involving WMI (Windows Management Instrumentation) classes.
Keypoints about CIM sessions:
-
Stateless Connection: CIM sessions are stateless, meaning that each command executed within a session starts a new instance, and variables or session data do not persist between commands.
-
CIM Cmdlets:
PowerShell
provides specific cmdlets likeGet-CimInstance
,Invoke-CimMethod
, andRegister-CimIndicationEvent
for working with **CIM sessions **and WMI classes. -
WMI-Based Interaction: CIM sessions are particularly useful when working with WMI-based management tasks, such as retrieving system information, modifying settings, or executing methods.
Usage Example:
# Create a CIM session
$session = New-CimSession -ComputerName "RemoteComputer"
# Get information from the remote computer using WMI class
Get-CimInstance -CimSession $session -ClassName Win32_Processor
# Close the CIM session
Remove-CimSession $session
Conclusion
In summary, PowerShell Remoting (PSsession) is more suitable for interactive management and running PowerShell
scripts on remote computers, while, CIM sessions are designed for querying and managing WMI-based resources on remote machines. The choice between PSsession and CIM session depends on the specific tasks you want to accomplish on the remote computer.