【问题标题】:PowerShell script working as File Explorer extensionPowerShell 脚本用作文件资源管理器扩展
【发布时间】:2017-08-18 19:24:08
【问题描述】:

我在 PowerShell 中编写了一个 GUI 应用程序。它只有一个参数。

在脚本的开头我有:

param (
    [string]$Path
)

在表单出现之前,我用$Path填写了一个控件:

$Form.Add_Load({
    $txtSourceFile.Text = $Path
})

当我在 PowerShell 中以交互方式运行脚本时,它似乎按预期工作。 txtSourceFile 控件由命令行中的参数填充。

.\ghead.ps1 -Path C:\src\data\ghead.ps1

但是,当我将它作为文件资源管理器扩展运行时,它似乎没有从命令行接收参数。该命令的注册表设置为:

C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.EXE C:\\Users\\lit\\bin\\ghead.ps1 -Path %1

没有错误信息。它根本不填写$txtSourceFile.Text 字段。我错过了什么明显的东西吗?我怎样才能让它工作?

建议作为重复的问题不涉及作为 Windows 文件资源管理器扩展运行。我已经在使用 param() 技术了。

【问题讨论】:

  • 您不必将其包装在一个函数中并调用该函数以那样传递参数吗?我可能错了,但我就是这样做的。
  • @nkasco - 您建议使用什么注册表项来在 .ps1 文件中运行函数?
  • 这里的路径值是多少,你可以在注册表中硬编码路径并尝试吗?

标签: powershell registry


【解决方案1】:

问题的核心是Users 目录名称中的一个无关字符,该字符未在问题中显示。 OP 可能需要将新眼镜粘在他的脸上,这样他才能看得更清楚,而且不用戴眼镜。

C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.EXE -Command C:\Users\pwatson\bin\ghead.ps1 -Path

最后的注册表项原来是:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.EXE -WindowStyle Hidden -Command \\ASERVER\D$\Install\Utilities\ghead.ps1 -Path %1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    • 2011-12-24
    • 2019-04-17
    • 2015-03-02
    • 1970-01-01
    • 2016-02-22
    • 1970-01-01
    相关资源
    最近更新 更多