PowerShell脚本执行报错‘找不到驱动器’,控制台运行正常求排查(Windows Server 2016)
问题排查与解决方案
核心原因:参数符号错误
你复制的命令里,–Path的破折号是全角字符(「–」),而PowerShell只识别半角短横线(「-」)。控制台里可能因自动修正或输入差异能正常解析,但脚本里会把这个全角破折号当成路径的一部分,导致PowerShell找不到对应驱动器(相当于把「–Path D:...」当成了不存在的路径)。
修复后的命令
把所有全角破折号替换成半角短横线,修改后的脚本内容如下:
Get-ChildItem -Path "D:\Software\logs\log" -Recurse | Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-30))} | Remove-Item -Force Get-ChildItem -Path "D:\Software\logs\services\service" -Recurse | Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-30))} | Remove-Item -Force
额外添加的-Force参数,可处理只读文件的删除,避免不必要的报错。
其他排查方向(若上述修复无效)
- 确认脚本以管理员权限运行:右键脚本文件选择「用PowerShell运行」,或在管理员PowerShell窗口中执行脚本
- 验证路径正确性:在脚本开头加入测试命令,确认路径存在
若返回Test-Path "D:\Software\logs\log" Test-Path "D:\Software\logs\services\service"False,说明路径拼写错误,需仔细核对目录名 - 检查脚本编码:将脚本保存为UTF-8 BOM格式(PowerShell对无BOM的UTF-8支持可能存在问题,尤其是包含特殊字符时)
内容的提问来源于stack exchange,提问作者tecj9
相关产品推荐
相关产品推荐

