繁体   English   中英

在资源管理器中使用 PowerShell 脚本打开文件

[英]Open a file with a PowerShell script in explorer

我想使用 Windows 内置表格查看器打开 CSV 文件,就像这个 SO 答案所示。

所以我希望当我在资源管理器中双击 CSV 文件时,运行以下命令:

Import-Csv [CSV-FILE] |Out-GridView

我最终创建了两个脚本文件。 一个文件名“read_csv.bat”,其中包含:

powershell.exe -ExecutionPolicy ByPass -noexit -File %~dp0read_csv.ps1 -csvfile %1
pause

另一个包含实际脚本的文件名“read_csv.ps1”

param (
    [Parameter(Mandatory=$true)][string]$csvfile
 )

Import-Csv $csvfile |Out-GridView

现在有没有办法更有效地做到这一点,所以只有一个脚本文件? 如果我设置资源管理器直接使用 POwerShell 脚本打开 CSV 文件,会出现蓝色消息

此应用无法在您的 PC 上运行若要查找适用于您 PC 的版本,请检查您发布的

笔记:

  • Since powershell.exe is ultimately called, a console window will invariably (also) open when a CSV file is opened, because powershell.exe is a console-subsystem application.

  • 提供替代的 GUI 子系统可执行文件以避免创建控制台 window 是 GitHub 上此功能请求的主题 与此同时,有一些解决方法

    • 此答案中显示了基于 VBScript 的解决方案。

    • 此答案中使用了一种无脚本但复杂且可能触发 AV 软件的替代方案。


您需要使用批处理文件中的powershell.exe命令的改编版本,因为*.ps1文件在设计上不能直接执行

也就是说,在 CSV 文件类型的注册表定义中,使用以下命令定义Open动词的操作(见下文):

powershell.exe -ExecutionPolicy ByPass -NoExit -File c:\path\to\read_csv.ps1 -csvfile "%1"

请务必将*.ps1脚本的真实路径替换为c:\path\to\read_csv.ps1 (如有必要,请双引号); 您可以使用文字路径,也可以使用基于cmd.exe样式的环境变量引用(例如"%USERPROFILE%\read_csv.ps1" )的路径。

或者,您可以完全不用脚本文件使用 PowerShell CLI
-Command参数

powershell.exe -ExecutionPolicy ByPass -NoExit -Command Import-Csv \"%1\" | Out-GridView

自动配置此命令以通过文件资源管理器/桌面打开 CSV 文件的过程

下面的代码修改注册表如下:

  • 定义了一个新的文件类型PsCsvViewer ,带有一个调用上面定义的 PowerShell 命令的Open动词(操作)。

  • .csv文件扩展名与该新文件类型相关联。

    • 注意:重新定义后第一次打开 CSV 文件时,可能会提示您确认从现在开始使用 PowerShell 命令的意图。
  • 仅为当前用户创建上述定义,这意味着您不需要管理员权限来运行代码(写入HKEY_CLASSES_ROOT\的子项需要)。

# Note the need for *3* "\", because an extra layer of escaping is
# needed for reg.exe.
$cmd = 'powershell.exe -ExecutionPolicy ByPass -NoExit -Command Import-Csv \\\"%1\\\" | Out-GridView'

# Create a new file type for the PowerShell command.
reg.exe add HKCU\Software\Classes\PsCsvViewer\Shell\Open\command /ve /d $cmd  /f

# Associate .csv files with the new file type.
reg.exe add HKCU\Software\Classes\.csv /ve /d PsCsvViewer /f

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM