2010-07-20 76 views
3

現在,我試圖使用Powershell腳本來讀取文本文件並執行其中提到的所有Powershell腳本,但我無法獲得任何結果。我已經試過指定這樣說:從文本中讀取並運行Powershell文件

Start-Job -ScriptBlock{powershell.exe -noexit $val} -name $jobnum 

和這樣:

Start-Job -ScriptBlock{$val} 

$val是文本行的值) 但它不運行是寫的腳本那條線。

我已經試過這樣:

Start-Job -FilePath($val) -name $jobnum 

但我得到這個錯誤:

Start-Job : Only PowerShell script files are allowed for FilePath parameter. Specify a file with .ps1 extension.

即使的$val值是一個合法的文件路徑與ps1擴展!

我的文字線條看起來像這樣:C:\Users\me\Desktop\notepad.ps1

如何讓我的PowerShell腳本讀取文本和運行ps1腳本,在文中給出的路徑?

回答

2

關於

Start-Job -ScriptBlock {powershell.exe -noexit $val} -name $jobnum 

你需要指定-ArgumentList參數是這樣的:

Start-Job -ScriptBlock {param($v) .. your command using $v} -name $jobnum -argumentlist $val 

否則$value是不知道的工作。

+0

謝謝!今天早上我回到了程序中,需要修改它,以便它可以運行任何類型的腳本,並且您的答案是一個巨大的節省時間。 – John 2010-07-21 14:28:07

+0

另一個問題:爲什麼這不適用於使用變量的文本行,比如$ val的這個值: $ env:the = 50 不應該創建環境變量並將其設置爲等於50 ? – John 2010-07-21 18:36:58

+1

如果您設置了'$ env:the = 50',它會正確設置您的PowerShell會話中的變量。然而,'Start-Job'用它自己的一組變量創建一個*新進程*。使用例如ProcessExplorer(來自前SysInternals)。 – stej 2010-07-22 05:46:55

0

沒關係,問題是因爲我在做-FilePath($ val)而不是-FilePath $ val。