我编写了以下脚本来删除位于网络共享上的用户配置文件中的所有临时文件和缓存数据。
当我在我的计算机上本地运行它时它运行良好,但是当我尝试在网络共享上运行它时它总是失败。
我的脚本是这样工作的,
- 指定需要清理的文件夹列表 names.text
- 指定目录的路径
使用 remove-item 命令删除所需文件
$userlist = Get-Content -Path "C:\Profiles\names.txt" $home_folders = "C:\Profiles\" $UserList | ForEach-Object { $User_Home = $Home_Folders + "\" + $_ Remove-Item "$User_Home\UPM_Profile\AppData\Local\Temp\*" -Force -Recurse }
我至今做了什么?
- 我尝试将路径放置为 \UNC 路径但没有任何效果。
- 我试图删除 -erroraction silentlycontinue 以查看出现什么样的错误,但它什么也没做。就像我执行脚本但它只是挂起。
- 我也尝试从同一个网络共享执行该脚本,但没有成功。
答案1
您目前正在向目录添加两个反斜杠:
$home_folders = "C:\Profiles\"
#...
$User_Home = $Home_Folders + "\" + $_
您可以通过从 home_folders () 中删除斜线$home_folders = "C:\Profiles
或从 join ( $User_Home = $Home_Folders + $_
) 中删除斜线来解决此问题。
但是更好的方法是使用 cmdlet Join-Path
,它会检查斜杠并根据需要添加一个:
$User_Home = Join-Path $Home_Folders $_