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

PowerShell脚本在ISE正常运行,双击执行报错的解决求助

问题:PowerShell脚本双击无法执行,ISE/终端运行正常

问题详情

脚本用于依次打开指定文件夹内的所有文件,最后最小化所有窗口,在PowerShell ISE和普通终端中运行正常,但资源管理器双击时直接闪退。已执行Set-ExecutionPolicy RemoteSigned,尝试添加Add-Type -AssemblyName System.Windows.Forms未解决问题。

原脚本代码

$folderPath = "C:\Users\Vlad\Dropbox\Demos"

# 获取文件夹内所有文件列表
$files = Get-ChildItem $folderPath

# 遍历文件并打开
foreach ($file in $files) {
    Invoke-Item $file.FullName
    Start-Sleep -Seconds 25
}

# 最小化所有窗口
(New-Object -ComObject Shell.Application).MinimizeAll()

双击时的错误信息

C:\Users\Vlad\Dropbox\Demos : The term 'C:\Users\Vlad\Dropbox\Demos' is not recognized as the name of a cmdlet, function, script file, or operable program.

错误原因

核心问题是脚本编码不兼容PowerShell.exe的默认解析规则:
当脚本采用UTF-8无BOM编码时,双击运行(默认调用powershell.exe执行)会出现首行解析异常,导致$folderPath的赋值语句失效,PowerShell直接把路径字符串当成命令执行,从而抛出“未识别命令”的错误。

解决方案

方案1:修改脚本编码为UTF-8带BOM

  1. 用记事本打开脚本文件
  2. 点击「文件」→「另存为」
  3. 在「编码」下拉菜单中选择「UTF-8」(记事本的UTF-8默认带BOM)
  4. 覆盖原文件保存,之后双击即可正常执行

方案2:添加编码声明(兼容无BOM脚本)

在脚本最顶部添加PowerShell编码声明,强制指定编码:

#Requires -Version 5.1
# -*- coding: utf-8 -*-

$folderPath = "C:\Users\Vlad\Dropbox\Demos"

# 获取文件夹内所有文件列表
$files = Get-ChildItem $folderPath

# 遍历文件并打开
foreach ($file in $files) {
    Invoke-Item $file.FullName
    Start-Sleep -Seconds 25
}

# 最小化所有窗口
(New-Object -ComObject Shell.Application).MinimizeAll()

验证

修改后双击脚本,PowerShell窗口不会闪退,会按预期依次打开文件夹内的文件,每打开一个等待25秒,最后自动最小化所有窗口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 18:52:38