【问题标题】:Search networked drive or UNC path搜索网络驱动器或 UNC 路径
【发布时间】:2017-11-03 02:08:16
【问题描述】:

我正在使用 Powershell 5 在文件夹中搜索最新的 .bak 文件。

Get-ChildItem -Path $SourceBackupPath -Filter *.bak

如果我传入"C:\temp\",这可以正常工作,但如果我传入"E:\temp\",我会收到错误:

Get-ChildItem:找不到驱动器。名为“E”的驱动器不存在。

如果我传入一个 UNC 路径 "\\MyServer\e$\Temp\" 我会收到错误:

Get-ChildItem:无法调用方法。提供者不支持使用过滤器。

【问题讨论】:

  • 在您的第二个测试中,带有 UNC 引用的那个应该是“\\”,而不是“\”——这只是一个错字吗?
  • 谢谢。看起来 stackoverflow 将 2 个反斜杠转换为 1。
  • Get-ChildItem -Path $SourceBackupPath | Where-Object { $_.Extension -eq '.bak' } 然后按日期排序,然后取最近的,是最直接的方法。但是根据要搜索的文件和文件夹的数量,Get-ChildItem 也可能会很慢,您需要挖掘到命令提示符“dir”、Robocopy、Windows 搜索索引器、“一切”api 等来列出文件更快。
  • Get-ChildItem -Path $SourceBackupPath | ? { $_.Name -like "*sometext*.bak" } - 在这种情况下,星号是通配符,或者如果您擅长使用正则表达式:Get-ChildItem -Path $SourceBackupPath | ? { $_.Name -match 'somestring\.bak$' }
  • 奇怪的是我无法重新创建问题,我可以在任何带有过滤器的 unc 路径上获取子项,没有问题。 Get-ChildItem -Path "\\server01\Shared$\test" -Filter *.pdf

标签: powershell


【解决方案1】:

您是否正在使用 SQLPS?如果是这样,请通过查看命令提示符检查您的工作目录。如果它看起来像这样:

PS SQLSERVER:\>

这意味着您正在从 SQLPS 提供程序的目录结构发出命令,默认情况下它不识别 UNC 路径。更多信息here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-21
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    • 2012-03-03
    • 1970-01-01
    相关资源
    最近更新 更多