获取所有打开资源管理器窗口的报告

时间:2015-07-10 18:32:19

标签: powershell windows-8 windows-7 explorer

我想获得所有开放资源管理器窗口标题和当前路径的报告。当前路径的一部分问题是使用C#回答https://msdn.microsoft.com/en-us/library/windows/apps/jj676791.aspx,但是我想将它用于powershell并且不确定如何调整它。 我不知道如何将窗口标题带出来。

有人可以帮忙吗。

2 个答案:

答案 0 :(得分:5)

听起来像你正在寻找这样的东西:

$app = New-Object -COM 'Shell.Application'
$app.Windows() | Select-Object LocationURL

AFAICS窗口对象没有title属性,但您可以通过窗口句柄ID从Get-Process获取该信息:

function Get-WindowTitle($handle) {
  Get-Process |
    Where-Object { $_.MainWindowHandle -eq $handle } |
    Select-Object -Expand MainWindowTitle
}

$app = New-Object -COM 'Shell.Application'
$app.Windows() |
  Select-Object LocationURL, @{n='Title';e={Get-WindowTitle $_.HWND}}

答案 1 :(得分:0)

Ansgar Wiechers' answer很有帮助,但是“文件资源管理器”窗口的 title 不一定包含所显示位置(文件夹)的完整路径。

有些晦涩难懂,这是.Document.Folder.Self.Path COM对象的.Windows()方法返回的窗口对象的Shell.Application属性,其中包含完整,本地或UNC路径< / strong>。

因此,以下列出了所有打开的资源管理器窗口的完整路径:

(New-Object -ComObject 'Shell.Application').Windows() | ForEach-Object { 
  $_.Document.Folder.Self.Path 
}

注意:特殊位置(例如文件浏览器的“快速访问”)由带有::的GUID表示;例如::{679F85CB-0220-4080-B29B-5540CC05AAB6}