我可以使用 PowerShell 1.0 列出进程及其 PID 和命令行吗?

发布于 2024-07-25 04:36:35 字数 1272 浏览 12 评论 0原文

OP 编辑​​: 我的问题预设 PowerShell 是完成这项工作的最佳工具。 有一种更简单的方法可以实现我的目标。 一位朋友刚刚告诉我: iisapp.vbs。 它准确地显示了我需要的信息,而不需要 PowerShell。


我正在处理本地运行的数十个 ASP.NET 网站,当我想要调试名为 foo.site.com 的特定网站时,我会执行以下步骤:

  1. 运行 Process Explorer(来自 SysInternals)并查找哪个 w3wp.exe 在其命令行上通过 foo.site.com 启动。

  2. 记下该 w3wp.exe 进程的进程 ID (PID)。

  3. 在 Visual Studio 中附加到该进程 ID。

有没有办法编写一个 PowerShell 脚本来打印我的计算机上运行的每个 w3wp.exe 进程的 PID 和命令行参数?

当我运行 get-process w3wp 时,我得到:

> get-process w3wp

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    688      28    44060      64576   226     2.75    196 w3wp
    750      26    48328      68936   225     3.38   1640 w3wp
    989      36    54596      83844   246     4.92   1660 w3wp
    921      33    54344      80576   270     4.24   5624 w3wp
    773      27    48808      72448   244     2.75   5992 w3wp

无命令行信息 :(

谢谢!

编辑:我正在寻找传递给 w3wp 的命令行参数。

EDIT by OP: My question presupposed that PowerShell was the best tool for this job. There is a simpler way of achieving my goal. A friend just told me about: iisapp.vbs. It displays exactly the info I need without requiring PowerShell.


I'm working with dozens of ASP.NET websites running locally and when I want to debug a particular website named, for example, foo.site.com I go through the following steps:

  1. Run Process Explorer (from SysInternals) and find which w3wp.exe was started with foo.site.com on its command line.

  2. Note the Process ID (PID) of that w3wp.exe process.

  3. In Visual Studio attach to that process ID.

Is there a way to write a PowerShell script that will print the PID and Command Line Arguments of every w3wp.exe process running on my computer?

When I run get-process w3wp I get:

> get-process w3wp

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    688      28    44060      64576   226     2.75    196 w3wp
    750      26    48328      68936   225     3.38   1640 w3wp
    989      36    54596      83844   246     4.92   1660 w3wp
    921      33    54344      80576   270     4.24   5624 w3wp
    773      27    48808      72448   244     2.75   5992 w3wp

No Command Line information :(

Thanks!

EDIT: I am looking for the command line arguments that were passed to w3wp.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

生寂 2024-08-01 04:36:35

gwmi win32_process -filter "name='w3wp.exe'" | gwmi win32_process -filter "name='w3wp.exe'" | select name,processId,commandLine

它应该可以解决问题。 我觉得很奇怪,powershell 默认不提供命令行信息。 注意:我只在 powershell 2.0 中测试过它,但由于它使用 wmi,它应该可以在 1.0 中工作。

编辑:蒂姆·斯图尔特使用的最终版本(为了避免显示问题,请参阅评论):
gwmi win32_process -filter "name='powershell.exe'" | gwmi win32_process -filter "name='powershell.exe'" | 格式表-自动调整名称、进程ID、命令行

gwmi win32_process -filter "name='w3wp.exe'" | select name,processId,commandLine

It should do the trick. I find it weird that powershell doesn't provide command line information by default. Note : I've only tested it in powershell 2.0, but as it use wmi, it should work in 1.0.

EDIT : the final version used by Tim Stewart (to avoid display problem, see comment) :
gwmi win32_process -filter "name='powershell.exe'" | format-table -autosize name,processId,commandLine

ζ澈沫 2024-08-01 04:36:35

我的第一反应是使用 get-process 并查看 startinfo 属性:

get-process w3wp | select-object id, path, @{Name="Args";Expression = {$_.StartInfo.Arguments}}

不幸的是,这不起作用,因为 $_.StartInfo.Argments 始终为 null。 不过,WMI 可以工作。

get-wmiobject win32_process -filter "name='w3wp.exe'" | select-object processid, commandline

My first instinct was to use get-process and look at the startinfo property:

get-process w3wp | select-object id, path, @{Name="Args";Expression = {$_.StartInfo.Arguments}}

Unfortunately, this doesn't work because $_.StartInfo.Argments is always null. WMI works, though.

get-wmiobject win32_process -filter "name='w3wp.exe'" | select-object processid, commandline
萌面超妹 2024-08-01 04:36:35

这应该有效:

get-process | 格式表 ID、路径

This should work:

get-process | format-table Id,Path

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文