PowerShell模块(特别是PSReadline)如何在V5中自动加载?

时间:2016-11-29 09:31:20

标签: powershell windows-10 powershell-v5.0 psreadline

我最近安装了Windows 10,其中包括PowerShell的V5或准确的5.1.14393.206$PSVersionTable.PSVersion)。

在新计算机上,我安装了PSReadline。但是,Windows 10已经安装了它。

我的问题是,当没有配置文件导入时,PSReadline如何自动加载(或从中调用命令)?

作为证据,我运行了这段代码:

$PROFILE | Get-Member -MemberType NoteProperty | % {
    $path = $PROFILE.$($_.Name);
    $exists = Test-Path $path;
    [pscustomobject]@{ Path = $path; Exists = $exists }
}

要得到这个:

Path                                                                        Exists
----                                                                        ------
C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1                       False
C:\Windows\System32\WindowsPowerShell\v1.0\Microsoft.PowerShell_profile.ps1  False
C:\Users\tahir\Documents\WindowsPowerShell\profile.ps1                       False
C:\Users\tahir\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1  False

我已经完成了所有https://stackoverflow.com/a/23942543/288393

  • 没有为PSReadline拨打Import-Module,因为没有要调用的个人资料。
  • PSReadline模块中没有命令,因为和以前一样,没有配置文件可以调用它。

有人可以解释这种行为吗?

2 个答案:

答案 0 :(得分:3)

如果进程是交互式的,控制台主机中有特殊代码可以加载PSReadline。您可以看到代码here

答案 1 :(得分:0)

PSReadline位于预定义的模块文件夹C:\Program Files\WindowsPowerShell\Modules中,因为它在这里PowerShell的自动cmdlet发现和模块加载过程将选择模块并在其中的任何函数被调用时加载它。这个过程added in PS v3