Get-Service -ComputerName使用何种远程机制?与Invoke-Command远程的区别
Get-Service -ComputerName 远程机制及与Invoke-Command的区别
一、Get-Service -ComputerName 的远程机制
Get-Service 的 -ComputerName 参数底层依赖WMI(Windows Management Instrumentation),默认通过DCOM(分布式组件对象模型) 进行通信,完全不依赖PowerShell Remoting。
如果目标系统配置了WMI over HTTP/HTTPS(基于WinRM的WMI传输),也会走WinRM通道,但这和PowerShell Remoting是两码事——它只是用WinRM承载WMI请求,无需提前执行Enable-PSRemoting来启用PowerShell远程配置。
二、端口与协议
- 默认DCOM模式:依赖RPC(远程过程调用),固定使用135端口作为RPC端点映射器,后续会协商分配动态端口(通常在49152-65535范围)。
- WMI over HTTP/HTTPS模式:复用WinRM的默认端口,HTTP为5985,HTTPS为5986,协议对应HTTP/HTTPS。
三、与Invoke-Command 远程机制的核心区别
- 依赖基础不同:
- Invoke-Command 必须依赖PowerShell Remoting,而PowerShell Remoting基于WinRM(WS-Man协议)实现,要求目标机器提前执行
Enable-PSRemoting完成配置。 - Get-Service -ComputerName 不需要启用PowerShell Remoting,只要目标机器的WMI服务正常运行、网络允许对应端口通信即可。
- Invoke-Command 必须依赖PowerShell Remoting,而PowerShell Remoting基于WinRM(WS-Man协议)实现,要求目标机器提前执行
- 功能范围不同:
- Invoke-Command 支持在远程机器上执行任意PowerShell命令、脚本块,还能建立持久会话(
New-PSSession),实现复杂操作和数据传输。 - Get-Service -ComputerName 仅能查询远程机器的服务信息,无法执行其他自定义命令。
- Invoke-Command 支持在远程机器上执行任意PowerShell命令、脚本块,还能建立持久会话(
- 通信方式不同:
- Invoke-Command 通过WinRM建立标准化的PowerShell会话,所有操作在会话上下文内执行,有严格的身份验证和会话管理机制。
- Get-Service -ComputerName 是单次WMI查询,没有持久会话,查询完成后连接直接断开。
内容的提问来源于stack exchange,提问作者SPtr
相关产品推荐
相关产品推荐

