在PowerShell中模拟'source'命令

时间:2013-08-30 17:22:27

标签: powershell

我试图在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
}

我忽略了什么吗?

3 个答案:

答案 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 }