如何用PowerShell多路径检索文件并仅返回文件名与服务器名
修改后的PowerShell脚本方案
先修正原脚本的逻辑问题,同时实现仅输出文件名和服务器名的需求:
$filename = Read-Host "请输入文件名或部分名称" # 将所有目标路径整合为数组,简化统一处理 $targetPaths = @( "\\SERVER-1\test\Desktop\test", "\\SERVER-2\test\Desktop\test", "\\SERVER-3\test\Desktop\test" ) # 查找匹配文件并提取所需信息 Get-ChildItem -Path $targetPaths -Recurse:$false | Where-Object {$_.Name -like "*$filename*"} | Select-Object Name, @{ Name = "服务器名" Expression = { $_.FullName.Split('\')[2] } } | Format-Table -AutoSize
关键改动说明:
- 把分散的路径变量合并为数组
$targetPaths,修正了原脚本中无效的foreach循环逻辑,同时减少重复代码。 - 将路径修正为
\\开头的UNC格式(原脚本少一个反斜杠,会被识别为本地路径)。 - 通过计算属性从文件完整路径中提取服务器名:用
Split('\')按反斜杠分割路径,索引为2的元素就是服务器名称(例如\\SERVER-1\test\...分割后,数组第3个元素为SERVER-1)。 - 用
Select-Object指定输出Name(文件名)和自定义的服务器名字段,最后用Format-Table让输出排版更整齐。
如果需要递归查找子目录中的文件,只需将Get-ChildItem的-Recurse:$false改为-Recurse即可。
内容的提问来源于stack exchange,提问作者Uriel Cohen
相关产品推荐
相关产品推荐

