Windows Powershell目录特定的功能

时间:2013-10-09 20:27:09

标签: powershell

如何在我的$profile文件中创建只在我尝试执行某些特定路径时才会执行的函数?

2 个答案:

答案 0 :(得分:1)

PowerShell中没有任何内置功能可以根据任何类型的上下文(例如您当前的目录)有效地隐藏命令。

在PowerShell V3或更高版本中,您可以使用一些围绕命令查找的事件处理程序。一个解决方案看起来像这样:

$ExecutionContext.InvokeCommand.PreCommandLookupAction = {
    param([string]$commandName,
          [System.Management.Automation.CommandLookupEventArgs]$eventArgs)

    if ($commandName -eq 'MyCommand' -and $pwd -eq 'some directory')
    {
        $eventArgs.StopSearch = $true
    }
}

答案 1 :(得分:0)

您的个人资料在PowerShell启动时进行评估,因此当前目录并未真正发挥作用。只要您能够使用PowerShell控制台,配置文件中的任何功能都将可用。您可以重新实现tabexpansion2函数,以便不根据当前目录选项卡完成某些功能,但这似乎有点过分。另一种选择是覆盖提示函数,并根据当前目录,将函数的可见性设置为public或private。如果它们是私有的,它们将不会显示在标签扩展中,例如:

$func = Get-Command MyFunc
$func.Visibility = 'private' # or 'public'