Windows PowerShell搜索特定文件并将其删除
我正在学习PS,无法理解这一点:Windows PowerShell搜索特定文件并将其删除,windows,powershell,search,scripting,delete-file,Windows,Powershell,Search,Scripting,Delete File,我正在学习PS,无法理解这一点: $fileName = @("file1.url","file2.url","file3.url") foreach ($a in $fileName) { Get-ChildItem -Path \\mySharePath\* -include $fileName -Recurse } | Remove-Item -Force 目的是为每个文件名搜索$filename,一旦找到,就删除该文件。从注释中总结。我看到你从本地的机器上得到了它,但试图分享它。如果该
$fileName = @("file1.url","file2.url","file3.url")
foreach ($a in $fileName) {
Get-ChildItem -Path \\mySharePath\* -include $fileName -Recurse
} | Remove-Item -Force
目的是为每个文件名搜索$filename,一旦找到,就删除该文件。从注释中总结。我看到你从本地的机器上得到了它,但试图分享它。如果该共享路径是没有共享文件夹实际路径的服务器,则它将无法工作。您不能浏览这样的服务器以获取其共享。您可以使用WMI或新的服务器模块commandlets从服务器获取共享名,但您必须直接以共享为目标来浏览它,并与之交互 例如,尝试只对“\mysharepath*”服务器进行gci,而不使用include with recurse,则不会得到任何回报。共享路径应为: \文件服务器\sharedfolder
使用正确的服务器名称和共享文件夹递归,如果文件在共享文件夹中,您将获得正在查找的结果。运行
获取帮助获取ChildItem-参数Include
告诉我它接受字符串数组,因此,您可以跳过整个ForEach
循环,只需执行Get ChildItem\\mySharePath\*-include$filename-recurse | remove item-force
。另外,您使用的ForEach
错误。要在尝试使用它时使用它,您可以执行-在循环中包含$a
。您是正确的,但是测试获取ChildItem\\mySharePath\*-包含$filename-recurse
只会返回我的第一个文件名,即file1.url$filename=@(“file1.url”、“file2.url”、“file3.url”);Get ChildItem\\mySharePath\*-include$fileName-Recurse | Remove Item-Force
工作正常当我测试它时,它删除了所有3个文件。可能是因为我的实际文件名吗?这些是他们的空间。所以它们就像“file number one.url”,当我创建数组时,我使用双引号来指定文件名;类似这样的内容:$fileName=@(“文件号1.url”,“文件号2.url”)
仍然不适合我…:|真的不应该。诚然,我在我的C:drive上对文件运行了它,但是我能够递归地搜索一个文件夹,并使用-Include
参数找到名称中有空格的3个文件。我不认为网络共享会阻碍这一点。