我对powershell不太了解,所以感谢任何帮助。
我有一个包含用户个人资料的驱动器。我需要从每个用户的个人资料中删除特定文件。它的结构是这样的。 (名称改为保护无辜者。)
- E:\概况
- 用户名
- 文档
- OtherFolders
- DirectoryToDeleteFrom
- FileToDelete.txt
- UserID2
- ...
- ...
我可以使用以下命令删除我需要访问的所有文件,但由于它在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 char: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'}
那我在这里做错了什么?
答案 0 :(得分:3)
如果你动态构造一个字符串,用另一个命令进行内联,那么在路径周围加上括号:
..{Remove-item -path ('E:\Profiles\' + $_.Name + '\Path\To\File\FileToDelete.txt')}