我正在尝试获取远程计算机上运行的进程已加载的模块

问题描述 投票:2回答:1

如何获取使用PowerShell加载在远程计算机上运行的进程的模块。

我有些错误的处理模块,例如权限被拒绝并且无法枚举。我该如何解决这些错误。

无法枚举“服务”进程的模块。+CategoryInfo:PermissionDenied:(System.Diagnostics.Process(服务):进程)[Get-Process],ProcessCommandException +FullyQualifiedErrorId:无法枚举模块,Microsoft.PowerShell.Comands.GetProcessCommand+ PSComputerName

使用命令:

$Module = Invoke-Command -Session $session -ScriptBlock { Get-Process -Module }
powershell process remote-access
1个回答
0
投票

问题不仅仅在于远程处理:有些进程由于缺乏权限而无法从根本上枚举模块[[[1],即使使用高程运行(以管理员身份运行)

由于错误报告是

非终止错误,因此您可以使用源代码-ErrorAction Ignore 完全忽略(所有)错误:

Invoke-Command -Session $session -ScriptBlock { Get-Process -Module -ErrorAction Ignore }

如果要捕获错误消息,因此可以确定枚举失败的进程,请使用-ErrorVariable errs -ErrorAction SilentlyContinue,该命令将使错误静音,但将其收集在变量$errs中以供以后检查:

Invoke-Command -Session $session -ScriptBlock { Get-Process -Module } -ErrorVariable errs -ErrorAction SilentlyContinue

具体地说,$errs.TargetObject将列出其模块无法枚举的过程对象。


[1]至少默认情况下,仅高程是不够的;如果有人知道是否仍然可以枚举,请告诉我们。

© www.soinside.com 2019 - 2024. All rights reserved.