使用 Powershell 为多个用户删除多个目录

Removing multiple directories for multiple users using Powershell

祝你周四下午过得愉快。不知道你能不能帮帮我。

我正在尝试编写一个 ForEach-Object 语句来循环访问用户名列表并删除一些目录。

假设远程桌面终端服务器有 50 多个用户,并且 C: 驱动器 space 中有 运行 个,因为每个人在 c:\users\%username%\appdata\local\temp 中都有很多文件.我想编写一个脚本来为所有用户删除该目录。

所以我的手指引导我输入以下内容(我创建了一个 csv,其中列标题为 SamAccountName,下面的行中有一些用户名,称为 users.csv 并放置在 c: 的根目录中)-除此之外,脚本最终将包含多个目录:

Import-Csv -path c:\users.csv | ForEach-Object { Remove-Item -Path c:\users$_.SamAccountName\Appdata\Local\Temp -Recurse -Force }

错误信息是:

Cannot find path 'C:\users\@{SamAccountName=user1}.SamAccountName\Appdata\Local\Temp'

User1 确实存在,但 powershell 似乎没有像我预期的那样调用变量。当然,我需要 return C:\users\user1\Appdata\Local\Temp

的路径

你能在这里推荐正确的方法吗?

路径是一个字符串。要在可扩展字符串中使用对象 属性,请使用 $() 子表达式语法。

Import-Csv -path c:\users.csv | ForEach-Object { Remove-Item -Path "c:\users$($_.SamAccountName)\Appdata\Local\Temp" -Recurse -Force }

希望你也玩得开心!

您的问题是在您尝试访问字符串中对象的 属性 时引起的,为了做到这一点,您必须像这样封装它:

$($_.SamAccountName)

整行内容为:

Import-Csv -path c:\users.csv | ForEach-Object { Remove-Item -Path c:\users$($_.SamAccountName)\Appdata\Local\Temp -Recurse -Force }

试一试,如果可行请告诉我!