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 $PSVersionTable
bij 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.