2015-08-27 112 views
0

如何從另一個腳本內調用powershell腳本? 這不是工作:從另一個腳本調用powershell腳本

$param1 = "C:/Users/My Folder/file1" 
$param2 = "C:/Users/My Folder/file2" 
$command = "C:/Users/My Folder/second.ps1" 

Invoke-expression $command -File1 $param1 -File2 $param2 

... Second.ps1:

param(
[string]File1, [string]File2)... 
+1

'&$命令-File1 $參數1 -File2 $ param2' – PetSerAl

+0

謝謝!它的工作 – user3108001

+0

作爲一個普通的Powershell提示:使用函數而不是單獨的腳本文件進行這些操作:http://blogs.technet.com/b/heyscriptingguy/archive/2011/06/26/don-t-write-scripts- write-powershell-functions.aspx – bluuf

回答

0

如果沒有空格:

Invoke-expression "$command $param1 $param2" 

如果您知道哪裏有空間是:

Invoke-expression "$command `$param1HasSpaces` $param2"  

注意:如果您的執行政策受到限制(請與get-executionpolicy使用:

Invoke-Expression "powershell -executionpolicy bypass -command `"$command $param1 $param2`"" 
+0

這給了我:「Invoke-Expression:找不到接受的位置參數:'C:/ Users/My Folder/second.ps1 ... – user3108001

0

你能做到這樣,如果你稍微改變你的方法。基本上創建要執行的命令字符串,然後從中創建一個scriptblock對象,然後使用Invoke-Command而不是Invoke-Expression。

$param1 = "C:/Users/My Folder/file1" 
$param2 = "C:/Users/My Folder/file2" 
$command = "C:/Users/My Folder/second.ps1" 

$str = '{0} -File1 "{1}" -File2 "{2}"' -f ($command, $param1, $param2) 
$sb = [scriptblock]::Create($str) 

Invoke-Command -ScriptBlock $sb 
相關問題