我试图在powershell中模仿bash的source命令。目的是对我的microsoft.powershell_profile.psl
进行任何更改,并将其提供给现有的powershell实例。
以下命令在命令行中运行
$profile_content = [string]::join([environment]::newline,(get-content $profile))
invoke-expression $profile_content
一切都很好;我把它放到microsoft.powershell_profile.psl
中,它不起作用。
function source{
$profile_content = [string]::join([environment]::newline,(get-content $args[0]))
invoke-expression $profile_content
}
我忽略了什么吗?
答案 0 :(得分:6)
您想要的内容已经内置到PowerShell中:
. C:\path\to\some.ps1
请参阅about_Operators
:
.
点源运营商
在当前范围内运行脚本以便执行任何功能, 别名和脚本创建的变量将添加到当前 范围。. c:\scripts.sample.ps1
答案 1 :(得分:0)
尝试将Microsoft.PowerShell_profile.ps1
更改为如下所示:
function source{
$profile_content = [string]::join([environment]::newline,(get-content $args[0]))
invoke-expression $profile_content
}
source $profile
基本上,你不能只定义函数,你也需要在文件中调用它。 HOWEVER ,您的功能设置方式,将导致无限循环。将function source()
替换为其他内容。
答案 2 :(得分:0)
以下应该足够了:
function source { . $args }