我试图从另一个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"
我知道我错过了一些小事。
答案 0 :(得分:1)
而不是
Invoke-Expression "$ScriptDir + \Foo.ps1"
应该是:
& "$ScriptDir\Foo.ps1"