PowerShell脚本用作文件资源管理器扩展

时间:2017-03-26 00:15:34

标签: powershell registry

我在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()技术了。

1 个答案:

答案 0 :(得分:0)

问题的核心是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