Powershell 如何编写一些代码,以便在导入pscx模块时运行?

Powershell 如何编写一些代码,以便在导入pscx模块时运行?,powershell,pscx,Powershell,Pscx,Powershell Community Extensions(pscx)在导入模块时会覆盖标准的“help”函数,以使用提供的“less”函数,该函数反过来调用pscx提供的less.exe命令。不幸的是,less.exe使我广泛使用的“Console2”命令外壳包装程序崩溃,因此我想覆盖pscx的功能 我知道PSCX有一个首选选项,可以让帮助使用标准的“更多”功能,而不是“更少”。我还知道我可以手动覆盖“less”功能。但我只是偶尔使用pscx,所以我不会将其加载到我的配置文件中,如果我忘记

Powershell Community Extensions(pscx)在导入模块时会覆盖标准的“help”函数,以使用提供的“less”函数,该函数反过来调用pscx提供的less.exe命令。不幸的是,less.exe使我广泛使用的“Console2”命令外壳包装程序崩溃,因此我想覆盖pscx的功能

我知道PSCX有一个首选选项,可以让帮助使用标准的“更多”功能,而不是“更少”。我还知道我可以手动覆盖“less”功能。但我只是偶尔使用pscx,所以我不会将其加载到我的配置文件中,如果我忘记了其中任何一个覆盖,我可以通过键入“help”这样简单的命令使powershell会话崩溃

我想要的是能够在我的配置文件中放置一些东西,以检测何时导入pscx,并在此时覆盖less函数并适当设置帮助首选项


是否可以在powershell中定义类似这样的“导入后”事件类型?

在您的
$profile
添加
设置alias less more.com
加载模块后,您可以对其进行更改:

$Pscx:Preferences.PageHelpUsingLess=$false

正如我所说,我知道这一点。我想要一种方法来确保每次加载pscx时都会发生这种情况,而不必记住键入它。您可以编写导入模块代理(包装器),并在其中检测是否要加载pscx。我不知道有任何事件导入模块公开。这是一个有趣的想法。当然,如果我这样做,巧妙地破坏了导入模块,我就犯了PSCX所犯的错误,我正试图解决这个错误…@C.B.就这么简单!是的,很好用。这里的要点大概是别名覆盖函数,因此别名优先于PSCX less函数。嗯,我看不出如何将注释标记为正确答案,因此,我将把答案作为一个整体标记为正确。我真的不想更改与Pscx 3.0一起安装的
Pscx.UserPreferences.ps1
,因为它在程序文件中,所以我需要管理员权限,感觉这样做是错误的。我不知道你的个人资料文件夹中可以有一个单独的副本。那就行了。谢谢。嗯,我必须把整个文件复制到我的个人资料文件夹吗?我能不能不重写我想要的位?这有点痛苦:-(是的,您需要复制Pscx.UserPreferences.ps1并将Pscx模块导入为:
import module Pscx-arg'C:\your\path\to\Pscx.UserPreferences.ps1'
Ah。这是我在帮助中看到的。这不是我想要的,好像我忘记了一样,我又得到了坏的行为。关键是当我键入
import module Pscx时,用仔细想想,我的整个会话没有崩溃:-(为什么不在$profile中创建一个函数,用您的文件首选项导入PSCX模块?