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