【问题标题】:Using Powershell to drive advanced search in Windows Explorer - How to pipe Out-GridView to Windows Explorer?使用 Powershell 在 Windows 资源管理器中驱动高级搜索 - 如何通过管道将 Out-GridView 传输到 Windows 资源管理器?
【发布时间】:2021-05-14 15:35:51
【问题描述】:

我在远程计算机上有一个文件夹,其中包含安全摄像头视频片段。我只想在 *.mp4 文件中搜索那些在 2300 和 0600 之间创建的文件。代码:

$root = "F:\ispy\video\SWVL"  
(Get-ChildItem -Path $root) | Where-Object {$_.lastWriteTime.TimeOfDay.Hours -gt 23 -or $_.LastWriteTime.TimeOfDay.Hours -lt 06} | ls | Out-GridView -PassThru 

完美地做到了这一点,并将输出(文件列表)传递给 PowerShell gridview....但是,我需要输出以在 Windows 资源管理器中显示文件。

我实际上是在尝试使用 PowerShell 脚本作为高级搜索过滤器。

希望有人有一些想法。最终,我计划将其用作电源自动化和电源应用程序中的流程......但需要破解第一部分。

谢谢, 格雷格 AZ

【问题讨论】:

  • 我需要 out 在 Windows 资源管理器中显示文件。,你能在 Windows 资源管理器中这样做吗?我不这样做,powsershell 不这样做
  • 如果目标是最终将此列表提供给 Power Apps 库,那么您肯定会陷入困境 - Windows 资源管理器在此数据流中没有位置

标签: windows powershell


【解决方案1】:

您的用例无效。 Windows 资源管理器

您可以在您的脚本中执行类似的操作..(放弃对 Out-GridView 的调用,因为您的最终结果不需要它)

# find those files
Get-ChildItem -Path  'F:\ispy\video\SWVL'   |  
Where-Object {
$PSItem.lastWriteTime.TimeOfDay.Hours -gt 23 -or 
$PSItem.LastWriteTime.TimeOfDay.Hours -lt 06} | 
# copy them to a temp location
Copy-Item -Destination 'SomeTempPath' -Verbose

# open explorer in that location
Invoke-Item -Path 'SomeTempPath'

...完成后删除该位置。

Windows 资源管理器特定的搜索/过滤只能在 Windows 资源管理器中进行。因此,这意味着您只能搜索以获取特定属性,然后使用 GUI 自动化将其发送到 Windows 资源管理器搜索框。

否则,只需跳过脚本并了解这一点,以免使您所追求的过于复杂。

在 Windows 资源管理器中,您可以使用 date: 关键字在文件资源管理器中按日期过滤文件。您可以使用此关键字查找在某个日期之前、当天或之后创建的文件。您可以使用“>”和“=”和“

在脚本中,您必须复制上述内容。因此在搜索中捕获日期,打开 Windows 资源管理器并使用 SendKeys 或 AutoIT 选择搜索框并粘贴信息,然后发送回车。

根据我对弹出式日历的评论进行更新。您可以这样做,在 Windows 资源管理器中按日期/日期范围进行过滤

手动手动输入,当然您可以通过 SendKeys 或 AutoIT 进行 GUI 自动化。

单击任意日期列上的向下箭头。

在最新 WinOS 版本的内置 Windows 沙盒中,弹出窗口仍然可以在 Windows 资源管理器搜索框中工作。

...但不在其他主机系统上。

根据我们上次的 cmets 更新... 然而,如果你真的想发送到 Explore serachbox,那么这个 kludge 可以做到,...

Start-Process -FilePath 'Explorer' 'd:\temp'
Add-Type -AssemblyName System.Windows.Forms
Start-Sleep -Seconds 2
[System.Windows.Forms.SendKeys]::SendWait('+{TAB}'*2)
[System.Windows.Forms.SendKeys]::SendWait('date: 04-Apr-20..11-Jan-21')
Start-Sleep -Seconds 1
[System.Windows.Forms.SendKeys]::SendWait('{Enter}')

...但是警告 SendKeys 是古怪的,时间方面的,等等。有时有效,有时无效。

【讨论】:

  • 感谢您的反馈和回答。在我注意到 Windows 10 文件资源管理器中的搜索功能无法像过去那样工作或按预期工作后,我又整整下了一只兔子。当我在搜索栏中输入 date: 时,日历没有出现,在阅读了许多论坛之后,很明显,最近对 Windows 的更新破坏了文件资源管理器的搜索功能。关于我的问题 - 我正在研究如何使用 Microsoft 电源自动化和电源应用程序来做到这一点。
  • 不用担心。至于弹出日历,您仍然可以通过单击日期列之一的向下箭头来获得它。和 Yeppers 在日历上的弹出窗口中通过 serachbox。例如,它不能在我的主工作站上工作,但在使用 Windows 沙盒 VM 时,它可以在同一工作站上工作。
  • 再次感谢。关于“单击日期列之一的向下箭头”的提示............从来不知道该功能。
  • 不用担心。那些日期列 cal 弹出窗口已经存在了很长时间,我在需要时展示给人们的人总是感到惊讶。然而,当您坐在那里浏览 WINdows UI 时,您会遇到一些有趣的事情,而且他们为什么要这样做,事情。 ;-}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多