2017-03-26 45 views
1

我在PowerShell中编写了一个GUI应用程序。它有一个参数。作为文件资源管理器扩展工作的PowerShell脚本

在脚本的开始,我有:将出现表单

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

[从批处理文件传递参数给PowerShell脚本](可能的重复http://stackoverflow.com/questions/6359618/pass -parameter-from-batch-file-to-the-powershell-script) – Clijsters

+0

你不需要将它包装在函数中并调用函数来传递参数吗?我可能是错的,但那就是我会怎么做。 – nkasco

+0

@nkasco - 你会建议如何在.ps1文件中运行一个函数的注册表项? – lit

回答

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 
相关问题