从另一个调用powershell脚本

时间:2015-08-27 18:49:09

标签: 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)...

2 个答案:

答案 0 :(得分:0)

如果没有空格:

Invoke-expression "$command $param1 $param2"

如果你知道空格在哪里:

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

注意:如果您的执行政策受到限制(请使用get-executionpolicy检查:

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

答案 1 :(得分: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