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

Cod*_*olf 4 powershell explorer windows-7 windows-8

我想获得所有打开资源管理器窗口标题和当前路径的报告.这样做的电流通路的部分是问题回答这里用C#,但我想这对PowerShell和我不知道如何去适应它.我不知道如何将窗口标题带出来.

有人可以请你帮忙.

Ans*_*ers 7

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

$app = New-Object -COM 'Shell.Application'
$app.Windows() | Select-Object LocationURL
Run Code Online (Sandbox Code Playgroud)

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

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}}
Run Code Online (Sandbox Code Playgroud)


mkl*_*nt0 6

Ansgar Wiechers 的回答很有帮助,但文件资源管理器窗口的标题不一定包含所显示的位置(文件夹)的完整路径。

有点晦涩的是,它是包含完整路径、本地路径或 UNC 路径的 COM 对象的方法.Document.Folder.Self.Path返回的窗口对象的属性.Windows()Shell.Application

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

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

注意:特殊位置(例如文件资源管理器的“快速访问”)由 - 前缀的 GUID 表示::;例如,::{679F85CB-0220-4080-B29B-5540CC05AAB6}