在PS中调用表达式,逐字字符串和从其他脚本调用脚本

时间:2014-02-04 20:57:53

标签: c# powershell

我试图从另一个ps1脚本调用ps1脚本。这些脚本都存在于同一目录中。我能够使用以下代码获取表示当前目录的字符串:

$ScriptDir = Split-Path $MyInvocation.MyCommand.Path -Parent

这个有效,没问题。要调用辅助脚本,我使用Invoke-Expression命令,使用上面的 $ ScriptDir 路径并硬编码脚本名称(这可以在本文的底部看到)。但是,每次我这样做都会产生类似于:

的路径投诉
C:\Users\Administrator\Documents\Visual : The term 'C:\Users\Administrator\Documents\Visual' is not recognized as the name of a cmdlet, function, script file, or 
operable program.

通常情况下,在C#中这对我来说没问题,这是一个逐字字符串问题。但是,我没有看到在PowerShell中使用这种方法的方法。作为参考,这里是我用来测试的完整代码的精简版:

ScriptDir = Split-Path $MyInvocation.MyCommand.Path -Parent
Write-Host "InvocationName:" $MyInvocation.InvocationName
Write-Host "Path:" $MyInvocation.MyCommand.Path
write-host "Starting Test..."
Invoke-Expression "$ScriptDir + \Foo.ps1"

我知道我错过了一些小事。

1 个答案:

答案 0 :(得分:1)

而不是

Invoke-Expression "$ScriptDir + \Foo.ps1"

应该是:

& "$ScriptDir\Foo.ps1"