You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地与远程Invoke-Command执行Get-Service获取Tanium Client结果不一致

问题原因及解决方案

可能的原因

  • 服务名称与显示名称不匹配:你本地使用的是服务的显示名称Tanium Client,但远程会话中Get-Service可能无法通过显示名称正确匹配(存在环境差异),实际服务的内部名称可能是无空格的TaniumClient。
  • PowerShell会话位数差异:若Tanium Client是32位服务,而默认远程PowerShell会话为64位,64位会话枚举32位服务需要特殊处理。
  • Tanium安全防护机制:作为端点安全工具,Tanium可能默认阻止非本地交互式会话(如WinRM发起的远程会话)访问自身服务信息,防止被远程枚举或篡改。
  • WinRM会话权限限制:即便使用管理员凭据,WinRM会话可能因Tanium服务的严格权限配置,无法读取其元数据。

解决方案

1. 确认服务真实名称

在目标服务器本地执行以下命令,获取Tanium Client的内部服务名称:

Get-Service | Where-Object DisplayName -eq "Tanium Client" | Select-Object Name, DisplayName

将远程脚本中的服务名称替换为真实名称,例如:

$scriptblock = {Get-Service "TaniumClient"} # 替换为实际获取到的Name值

2. 强制使用32位远程PowerShell会话

如果Tanium Client是32位服务,远程执行时调用32位PowerShell:

$scriptblock = {& "$env:windir\syswow64\WindowsPowerShell\v1.0\powershell.exe" -Command "Get-Service 'Tanium Client'"}
$service = Invoke-Command -ComputerName $computer -Credential $c -ScriptBlock $scriptblock

3. 调整Tanium防护策略

联系Tanium管理员,检查是否存在阻止WinRM会话访问Tanium服务的规则,必要时在Tanium控制台中修改端点防护策略,允许指定远程管理账户访问服务信息。

4. 使用CIM命令替代Get-Service

CIM的权限模型与Get-Service不同,尝试通过WMI/CIM枚举服务:

$scriptblock = {Get-CimInstance Win32_Service | Where-Object DisplayName -eq "Tanium Client"}
$service = Invoke-Command -ComputerName $computer -Credential $c -ScriptBlock $scriptblock

if ($service) {
    Write-Host "Tanium service status" $service.State
} else {
    Write-Host "Tanium service is not found"
}

5. 验证WinRM会话权限

在目标服务器本地执行以下命令,检查WinRM会话的权限配置:

Get-PSSessionConfiguration | Select-Object Name, Permission

若权限不足,使用Set-PSSessionConfiguration调整会话权限,确保你的账户拥有足够权限枚举服务。

内容的提问来源于stack exchange,提问作者Inderpal Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 12:52:36