Powershell、WMI 和压缩文件/文件夹

发布于 2024-08-05 20:04:55 字数 206 浏览 2 评论 0原文

我需要生成一个脚本来帮助我获取一系列 Windows 2003 服务器上的压缩文件/文件夹(不是 zip 文件,而是 Windows 压缩文件)列表。我有一台连接到目标服务器的客户端电脑,并且可以以管理员角色为基础进行访问。我的想法是创建一个 Powershell 脚本来使用 WMI 或其他东西来处理这个问题?但我对 WMI 世界的可能性有点迷失了。任何提示/技巧表示赞赏。

干杯

I need to generate a script that will help me in getting a list of compressed files/folders (not zip files, but Windows compressed files) on a range of Windows 2003 servers. I have a client pc connected to the target servers and have access on a administrator role basis. My thoughts was to create a Powershell script to handle this problem using WMI or something else? But I'm kind of lost on the possibilities in the WMI world. Any hints/tips are appreciated.

Cheers

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

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

发布评论

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

评论(1

扛起拖把扫天下 2024-08-12 20:04:55

我不确定是否可以使用 WMI 做到这一点,但我也不是 WMI 专家。如果您可以使用 PowerShell 2.0,那么使用新的远程处理功能就非常简单,例如

$computers = 'server1', 'server2', 'server3'
$compressed = Invoke-Command $computers {Get-ChildItem C:\ -r -force -ea 0 | 
                 Where {$_.Attributes -band [IO.FileAttributes]::Compressed}}

请注意,存储在 $compressed 中的每个文件和目录对象都将具有一个附加属性 PSComputerName,用于标识反序列化对象来自哪台计算机。

或者,如果您没有 PowerShell 2.0,您可以通过共享访问服务器,例如:

$sharePaths = '\\server1\C

这种方法可能会很慢。

, '\\server2\C

这种方法可能会很慢。

, '\\server3\C

这种方法可能会很慢。

Get-ChildItem $sharePaths -r -force -ea 0 | Where {$_.Attributes -band [IO.FileAttributes]::Compressed}

这种方法可能会很慢。

I'm not sure if you can do that with WMI, then again I'm no WMI guru. If you can use PowerShell 2.0 this is pretty simple using the new remoting feature e.g.

$computers = 'server1', 'server2', 'server3'
$compressed = Invoke-Command $computers {Get-ChildItem C:\ -r -force -ea 0 | 
                 Where {$_.Attributes -band [IO.FileAttributes]::Compressed}}

Note that each file and dir object stored in $compressed will have an additional property PSComputerName that identifies which computer the deserialized object came from.

Alternatively, if you don't have PowerShell 2.0 you could access the servers via a share e.g.:

$sharePaths = '\\server1\C

This approach is likely to be slow.

, '\\server2\C

This approach is likely to be slow.

, '\\server3\C

This approach is likely to be slow.

Get-ChildItem $sharePaths -r -force -ea 0 | Where {$_.Attributes -band [IO.FileAttributes]::Compressed}

This approach is likely to be slow.

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