3

从一个 PowerShell 程序,我可以“点源”另一个 PowerShell 程序。即我可以执行它,就好像它写在第一个里面一样。
例子:

Write-Host 'before'
. MyOtherProgram.ps1
Write-Host 'after'

MyOtherProgram 在主程序中的“包含”中,就像它的内容已被复制/粘贴一样。

问题是:我只能点源一个文件名以.ps1
我不能MyOtherProgram.libMyOtherProgram.whatever

任何人都有一种方法来点源不以结尾的 PowerShell 脚本.ps1

4

2 回答 2

5

另一种方法是使用Invoke-Expression

$code = Get-Content ./MyOtherProgram.lib | Out-String
Invoke-Expression $code
于 2012-05-11T07:52:00.667 回答
1

我不知道这是否被编译到 PowerShell 中,或者它是否是可配置的,但一种方法是让你的脚本暂时重命名它,导入它然后重命名它。

Rename-Item C:\Path\MyScript.whatever C:\Path\MyScript.ps1
. C:\Path\MyScript.ps1
Rename-Item C:\Path\MyScript.ps1 C:\Path\MyScript.whatever
于 2012-05-10T23:43:15.723 回答