2017-03-26 47 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 
相關問題