You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows任务计划程序调度PowerShell脚本远程收集磁盘信息无输出问题

任务计划程序运行PowerShell脚本无输出的解决方法

以下是针对你的问题的具体排查和解决步骤:

1. 检查路径与权限

  • 确认任务运行账户对D:\目录有写入权限:任务计划程序默认使用的系统账户(SYSTEM)可能没有D盘的写入权限,需在任务属性的「安全选项」中切换为有D盘写入权限的本地/域账户。
  • 脚本和报告路径务必用完整绝对路径,任务操作中的命令需给路径加引号(防止空格问题):
    powershell.exe -NoProfile -ExecutionPolicy Bypass -File "D:\ResourceReport.ps1"
    

2. 解决远程访问权限问题

手动运行脚本时用的是当前用户权限,但任务计划程序的运行账户可能没有远程计算机的WMI/CIM访问权限:

  • 在任务属性的「安全选项」中,选择拥有远程计算机管理员权限的账户(比如远程机器的本地管理员或域管理员),而非默认的SYSTEM账户。

3. 调整PowerShell执行参数

改用-Command参数替代-File,可解决部分执行上下文问题:

powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "& 'D:\ResourceReport.ps1'"

4. 替换弃用的WMI命令

Get-WmiObject已被弃用,改用Get-CimInstance兼容性更好,修改脚本如下:

$reportPath = "D:\Report.txt"
Get-CimInstance -ClassName Win32_LogicalDisk -ComputerName 172.31.x.x | 
    Format-Table DeviceId, MediaType, 
        @{n="Size";e={[math]::Round($_.Size/1GB,2)}},
        @{n="FreeSpace";e={[math]::Round($_.FreeSpace/1GB,2)}} | 
    Out-String | 
    Add-Content -Path $reportPath -Encoding UTF8

5. 添加错误日志排查

给脚本加入错误捕获,方便定位问题根源:

$reportPath = "D:\Report.txt"
$errorLogPath = "D:\ScriptError.log"
try {
    Get-CimInstance -ClassName Win32_LogicalDisk -ComputerName 172.31.x.x -ErrorAction Stop | 
        Format-Table DeviceId, MediaType, 
            @{n="Size";e={[math]::Round($_.Size/1GB,2)}},
            @{n="FreeSpace";e={[math]::Round($_.FreeSpace/1GB,2)}} | 
        Out-String | 
        Add-Content -Path $reportPath -Encoding UTF8
    "脚本执行成功,时间:$(Get-Date)" | Add-Content -Path $errorLogPath -Encoding UTF8
} catch {
    "脚本执行失败,时间:$(Get-Date)`n错误信息:$_" | Add-Content -Path $errorLogPath -Encoding UTF8
}

运行任务后查看D:\ScriptError.log,即可明确是远程访问失败还是写入权限等问题。

内容的提问来源于stack exchange,提问作者Bubai Sadhukhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 08:58:16