Pad naar Powershell.exe (v 2.0)

Waar bevindt zich de Powershell (versie 2.0)? Wat is het pad naar Powershell.exe? Ik heb Windows Server 2008 en Powershell geïnstalleerd. Als ik naar deze map kijk:

PS C:\Windows\System32\WindowsPowerShell> dir
    Directory: C:\Windows\System32\WindowsPowerShell
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----         20.4.2010     17:09            v1.0

Ik heb alleen Powershell v1.0. Maar als ik typ

PS C:\> $Host.version
Major  Minor  Build  Revision
-----  -----  -----  --------
2      0      -1     -1
PS C:\>

Het laat zien dat ik v2.0 heb geïnstalleerd.


Antwoord 1, autoriteit 100%

Ik geloof dat het in C:\Windows\System32\WindowsPowershell\v1.0\staat. Om de onschuldigen in verwarring te brengen, bewaarde MS het in een map met het label “v1.0”. Dit uitvoeren op Windows 7 en het versienummer controleren via $Host.Version(Bepaal de geïnstalleerde PowerShell-versie) geeft aan dat het 2.0 is.

Een andere optie is typ $PSVersionTablebij de opdrachtprompt. Als u v2.0 gebruikt, is de uitvoer:

Name                           Value
----                           -----
CLRVersion                     2.0.50727.4927
BuildVersion                   6.1.7600.16385
PSVersion                      2.0
WSManStackVersion              2.0
PSCompatibleVersions           {1.0, 2.0}
SerializationVersion           1.1.0.1
PSRemotingProtocolVersion      2.1

Als je versie 1.0 gebruikt, bestaat de variabele niet en is er geen uitvoer.

Lokalisatie PowerShell versie 1.0, 2.0, 3.0, 4.0:

  • 64-bits versie: C:\Windows\System32\WindowsPowerShell\v1.0\
  • 32-bits versie: C:\Windows\SysWOW64\WindowsPowerShell\v1.0\

Antwoord 2, autoriteit 27%

Ik denk dat $PsHome de informatie heeft die je zoekt?

PS .> $PsThuis
C:\Windows\System32\WindowsPowerShell\v1.0
PS .> Hulp krijgen over_automatische_variabelen
ONDERWERP
  about_Automatic_Variabelen ...

Antwoord 3, autoriteit 19%

Hier is een manier…

(Get-Process powershell | select -First 1).Path

Dit is mogelijk een betere manier, omdat het de eerste treffer op het pad retourneert, net alsof je Powershell vanaf een opdrachtprompt had uitgevoerd…

(Get-Command powershell.exe).Definition

Antwoord 4, autoriteit 6%

Het is altijd C:\Windows\System32\WindowsPowershell\v1.0. Het werd zo gelaten voor achterwaartse compatibiliteit is wat ik ergens heb gehoord of gelezen.


Antwoord 5

Om het volledige pad naar de momenteel actieve PowerShell te krijgen, kunt u dit gebruiken:

[System.Diagnostics.Process]::GetCurrentProcess().MainModule.FileName

Het resulterende pad bevat de uitvoerbare bestandsnaam van PowerShell, waarmee u onderscheid kunt maken tussen PowerShell en PowerShell ISE (in tegenstelling tot $PsHome, waarin u alleen de PowerShell-map ziet). Ook wordt het, in tegenstelling tot Get-Process, niet beïnvloed door:
andere processen die op het systeem draaien, zodat u altijd het juiste pad krijgt voor de huidige architectuur (32-bits of 64-bits).

De GetCurrentProcess-methode is beschikbaar vanaf .NET Framework 1.1 en .NET Core 1.0, dus dit zou moeten werken op elke versie van .NET/PowerShell.

Other episodes