在scriptblock中指定非硬编码路径和文件名?

时间:2016-08-08 02:40:57

标签: powershell

好的,我觉得即使是询问,但是我已经尝试了几次这样的迭代,除了在Scriptblock语句中对脚本名进行硬编码之外什么都没有用,这是不可接受的。

以下代码有效,硬编码,不可接受......

$Scriptblock = { C:\Scripts\Path1\ScriptName.ps1 -arguement0 $args[0] -arguement1 $args[1] }
Start-Job -ScriptBlock $Scriptblock -ArgumentList $argue0, $argue1 | Out-Null

我试过这个,它不起作用......

$loc = (Get-Location).Path
Set-Location -Path  $loc

这......

$rootpath = $MyInvocation.MyCommand.Path.Substring(0, ($MyInvocation.MyCommand.Path).LastIndexOf("\"))
Set-Location -Path  $rootpath

这......

$rootpath = $MyInvocation.MyCommand.Path.Substring(0, ($MyInvocation.MyCommand.Path).LastIndexOf("\"))
$scriptFilename = $([string]::Format("{0}\ScriptName.ps1", $rootpath))
$sb = $([string]::Format("{0} -arguement0 $args[0] -arguement1 $args[1]", $scriptFilename))
$Scriptblock = { $sb }
Start-Job -ScriptBlock $Scriptblock -ArgumentList $argue0, $argue1 | Out-Null   

除了第一个带有硬编码路径和脚本名称的代码之外没有其他功能 - 我知道它必须是我想念的傻事 - 请帮我修复stoopid! ; - )

1 个答案:

答案 0 :(得分:2)

在上一个例子中,这一行:

$ScriptBlock = [scriptblock]::Create($sb)

只需创建一个包含字符串的scriptblock。将其更改为:

{{1}}