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

Windows下Python调用PowerShell脚本弹出SD卡失败求助

解决Windows下Python调用PowerShell弹出SD卡的问题

问题1:subprocess调用.ps1脚本报错WinError193

直接调用.ps1文件会报错,因为系统不知道要用PowerShell来执行它。正确写法是让subprocess调用powershell.exe去运行脚本:

import subprocess

# 调用PowerShell执行脚本,-ExecutionPolicy Bypass用来绕过脚本执行限制
subprocess.run(["powershell.exe", "-ExecutionPolicy", "Bypass", "-File", "ejectusb.ps1"], check=True)

关键说明:

  • 必须指定powershell.exe作为运行程序,不能直接传.ps1文件路径
  • -ExecutionPolicy Bypass:临时绕过PowerShell的脚本签名限制,避免脚本被阻止运行

问题2:os.system执行命令无效果

你的命令存在换行解析和引号冲突问题,加上执行策略参数就能正常运行:

import os

# 把命令写成一行,转义内部单引号,加上执行策略参数
os.system('powershell -ExecutionPolicy Bypass -Command "$driveEject = New-Object -comObject Shell.Application; $driveEject.Namespace(17).ParseName(\'J:\').InvokeVerb(\'Eject\')"')

注意事项:

  • 命令要写成一行,避免换行导致PowerShell解析失败
  • 内部的单引号用\'转义,防止和外层单引号冲突
  • -ExecutionPolicy Bypass确保脚本能顺利执行

额外排查点

如果调用InvokeVerb("Eject")还是没反应,可能是系统里弹出功能的动词名称是中文的,改成以下命令试试:

$driveEject.Namespace(17).ParseName("J:").InvokeVerb("弹出(&E)")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 16:05:26