【问题标题】:Find specific .exe files on a computer with PowerShell使用 PowerShell 在计算机上查找特定的 .exe 文件
【发布时间】:2018-08-13 02:45:20
【问题描述】:

所以在我目前实习的公司,他们有大约 20 台装有公司指定软件的“技术笔记本电脑”。它们位于 C:\ 目录中。

例如:

aaa.exe 位于C:\aaa\aaa.exe

bbb.exe 位于C:\bbb\bbb.exe

我真正需要的是一个 .ps1 脚本来在列表中显示这些特定的可执行文件。

到目前为止,我所拥有的是: Get-ChildItem C:\ -recurse | where {$_.extension -eq ".exe"}

现在,我相信它只是编辑搜索查询,因为这为我提供了 C:\ 驱动器上的所有 .exe 文件,而我只需要 aaabbb

仅供参考:我需要脚本,以便我可以使用它来监控 zabbix 代理并查看计算机上是否有特定软件,以便我可以在 Zabbix 服务器上运行此脚本。

【问题讨论】:

  • 您还需要这些可执行文件的路径吗?
  • 路径已经用我用来过滤和查找 .exe 文件的命令显示 输出例如:目录:C:\aaa 模式 LastWriteTime 长度名称 -a---- 21/05 /2012 9:54 99999 aaa.exe 我只希望输出只显示 aaa 和 bbb 而不是 C:\ 驱动器上的所有内容
  • 您可以改进过滤器以添加您要查找的特定文件,也可以使用-include 参数。前者很长,后者很短。像这样的东西-gci C:\ -recurse -include 'aaa.exe', 'bbb.exe'。这就是你想要的吗?
  • 绝对是大帮手,谢谢!我只是注意到,当归结为将软件放在同一目录中时,这些技术笔记本电脑的结构并不好。我将如何将其应用于不仅在 C:\ 驱动器上而且在 D:\ 驱动器上进行搜索?对不起。我对查询不太熟悉

标签: windows shell powershell monitoring


【解决方案1】:

您正在寻找-include 参数:

Get-ChildItem C:\ -recurse -include "aaa.exe", "bbb.exe"

【讨论】:

  • 这绝对是我一直在寻找的东西!你就是男人!
【解决方案2】:

@Martin Brandl 已经回答了您的第一个问题。对于你问题的第二部分,你可以做这样的事情 -

$AllDrives = Get-PSDrive -PSProvider 'FileSystem'
foreach ($drive in $AllDrives)
{
    Get-ChildItem -path $drive.Root -recurse -include "aaa.exe", "bbb.exe"
}

或者你可以在一行中完成 -

Get-PSDrive -PSProvider 'FileSystem' | % {Get-ChildItem -path $_.Root -recurse -include "aaa.exe", "bbb.exe"}

如果您的可执行文件位于FileSystem 驱动器以外的其他驱动器上,您可以更改-PSProvider 参数。

【讨论】:

  • 还有办法找到可执行文件的版本吗?
  • [System.Diagnostics.FileVersionInfo]::GetVersionInfo("somefilepath").FileVersion 检查thisthis
  • 非常感谢!
猜你喜欢
  • 2017-05-21
  • 1970-01-01
  • 2015-11-28
  • 2021-10-04
  • 1970-01-01
  • 2013-03-27
  • 2015-07-05
  • 1970-01-01
  • 2022-11-22
相关资源
最近更新 更多