2016-11-29 6 views
1

저는 V5 PowerShell이 ​​포함 된 Windows 10 또는 정확히 5.1.14393.206 ($PSVersionTable.PSVersion)을 설치했습니다.V5에 PowerShell 모듈 (특히 PSReadline)이 자동으로로드되는 방식은 무엇입니까?

새 컴퓨터에서는 PSReadline을 설치합니다. 그러나 Windows 10은 이미 설치되어 있습니다.

내 질문에, PSReadline을 가져올 프로필이 없거나 (또는 ​​명령을 호출 할 때) 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 모듈에는 이전과 같이 호출 할 프로필이 없기 때문에 명령이 작성되지 않습니다.

누군가가이 동작을 설명 할 수 있습니까?

+1

https://github.com/PowerShell/PowerShell/blob/[email protected]%7B2016-11-29%7D/src/Microsoft.PowerShell.ConsoleHost/host/msh/ConsoleHost.cs#L1598 – PetSerAl

+0

@PetSerAl - am PSReadline의로드가 PowerShell의 소스 코드에 하드 코딩되어 있다고 생각합니까? –

+1

예, PowerShell 기본 콘솔 호스트에 대해 하드 코드되어 있습니다. – PetSerAl

답변

3

프로세스가 대화식 인 경우 PSReadline을로드하는 특수 코드가 콘솔 호스트에 있습니다. 코드 here을 볼 수 있습니다.

+0

(PetSerAl과 동일한 답변임을 인정합니다.) –

0

PSReadline은 미리 정의 된 모듈 폴더 C:\Program Files\WindowsPowerShell\Modules에 있습니다. PowerShell의 자동 cmdlet 검색 및 모듈로드 프로세스는 모듈을 선택하고 그 안에있는 함수가 호출 될 때로드합니다. 그 과정은 added in PS v3입니다.

+0

자동 cmdlet 검색에 대한 내용은 사실이지만 PSReadline이 자동으로로드되는 방식이 아닙니다. –