PowerShell远程清理临时文件脚本异常:误访问本地D盘问题求助
问题原因
Enter-PSSession是交互式远程会话命令,在脚本中直接调用后,后续代码并不会自动切换到远程会话执行,而是依旧在本地主机运行,所以你的脚本会尝试访问本地D盘。
解决方法
推荐使用Invoke-Command替代Enter-PSSession,它可以直接将指定脚本块发送到远程机器执行,是脚本化远程操作的标准方式。
修正后的脚本
$computer = Read-Host -Prompt "Input the machine name" # 定义要在远程机器执行的清理逻辑 $remoteCleanup = { $tempfolders = @( "D:\Users\*\AppData\Local\Temp\*", "D:\Users\*\Downloads\*", "D:\Users\*\AppData\Local\Webex\wbxcache\*", "D:\Users\*\AppData\Local\CrashDumps\*" ) # 添加ErrorAction避免因无权限/文件占用导致脚本中断 Remove-Item $tempfolders -Force -Recurse -ErrorAction SilentlyContinue } # 触发远程执行 Invoke-Command -ComputerName $computer -ScriptBlock $remoteCleanup
注意事项
- 目标远程机器需提前开启WinRM服务(可在远程机器上执行
Enable-PSRemoting -Force启用,需管理员权限) - 执行脚本的用户必须拥有远程机器的管理员权限,才能操作用户目录下的文件
- 如果需要排查执行情况,可以去掉
-ErrorAction SilentlyContinue,查看具体报错信息
内容的提问来源于stack exchange,提问作者Vka
相关产品推荐
相关产品推荐

