【发布时间】:2014-08-07 14:00:03
【问题描述】:
我对 powershell 不是很精通,因此感谢您提供任何帮助。
我有一个保存用户个人资料的驱动器。我需要从每个用户的个人资料中删除特定文件。它的结构是这样的。 (更改名称以保护无辜者。)
- E:\配置文件
- 用户 ID
- 文档
- 其他文件夹
- DirectoryToDeleteFrom
- FileToDelete.txt
- 用户 ID2
- ...
- ...
我可以使用以下命令来删除我需要访问的所有文件,但是它会在 UserID 下的所有其他文件夹中递归,所以速度慢得让人难以忍受。
#this one would work perfectly, but is terribly slow
Get-ChildItem -Path E:\Profiles -Include FileToDelete.txt -Recurse
我确切地知道每个文件所在的位置,所以我认为我可以这样做。
(Get-ChildItem -Path 'E:\Profiles' -Exclude *.lnk)|ForEach-Object{Remove-item -path 'E:\Profiles\' + $_.Name + '\Path\To\File\FileToDelete.txt'}
但我收到以下错误消息:
Remove-Item : 找不到接受的位置参数 参数“+”。在行:1 字符:70 + (Get-ChildItem -Path 'E:\Profiles' -Exclude *.lnk)|ForEach-Object{Remove-item ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [Remove-Item], ParameterBindingException + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.RemoveItemCommand
我以为是因为我传递了一个错误的文件路径Remove-Item,但下面的命令生成了正确的路径。
(Get-ChildItem -Path 'E:\Profiles' -Exclude *.lnk)|ForEach-Object{'E:\Profiles\' + $_.Name + '\Path\To\File\FileToDelete.txt'}
那么我在这里做错了什么?
【问题讨论】:
标签: powershell piping