我想在 Powershell ISE 中的第二个 myScript2.ps1 脚本中调用 myScript1.ps1 脚本。
MyScript2.ps1 中的以下代码在 Powershell 管理中运行良好,但在 PowerShell ISE 中无法运行:
#Call myScript1 from myScript2 invoke-expression -Command .\myScript1.ps1
从 PowerShell ISE 执行 MyScript2.ps1 时出现以下错误:
术语“.\myScript1.ps1”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。
为了找到脚本的位置,Split-Path $MyInvocation.MyCommand.Path请使用(确保在脚本上下文中使用它)。
Split-Path $MyInvocation.MyCommand.Path
这个示例脚本可以说明您应该使用它而不是其他任何东西的原因。
## ScriptTest.ps1 Write-Host "InvocationName:" $MyInvocation.InvocationName Write-Host "Path:" $MyInvocation.MyCommand.Path
以下是一些结果。
PS C:\Users\JasonAr> .\ScriptTest.ps1 调用名称:.\ScriptTest.ps1 路径:C:\Users\JasonAr\ScriptTest.ps1 PS C:\Users\JasonAr> 。.\ScriptTest.ps1 调用名称:。 路径:C:\Users\JasonAr\ScriptTest.ps1 PS C:\Users\JasonAr> & ".\ScriptTest.ps1" 调用名称:& 路径:C:\Users\JasonAr\ScriptTest.ps1
在 PowerShell 3.0 及更高版本中,您可以使用自动变量$PSScriptRoot:
$PSScriptRoot
## ScriptTest.ps1 Write-Host "Script:" $PSCommandPath Write-Host "Path:" $PSScriptRoot PS C:\Users\jarcher> .\ScriptTest.ps1 脚本:C:\Users\jarcher\ScriptTest.ps1 路径:C:\Users\jarcher