有誰知道爲什麼Powershell 2.0安裝在Windows 7盒子的C:\ Windows \ System32 \ WindowsPowerShell \ v1.0上?爲什麼Powershell 2.0與Powershell 1.0安裝在同一位置?
回答
它實際上是在副作用一個有趣的故事。
Visual Studio在其「添加引用」對話框中有一個固定的程序集列表。
還有其他東西需要瀏覽。 開發人員傾向於在Windows目錄中瀏覽此位置,其中System.Management.Automation.dll(運行大部分PowerShell的程序集所在的組件) 這對此位置進行了絕對引用。 由於PowerShell不會有並行安裝選項(與.NET框架一樣),所以可用的最佳選擇是允許人們通過路徑和引用同一程序集來引用相同的程序集StrongName,就像以前一樣。
如果這個故事沒有以這種方式保留下來,所有寫在PowerShell V1之上的應用程序將不得不重新發布V2。
我認爲,因爲PowerShell 2.0與1.0非常兼容,所以不需要在同一臺機器上安裝兩個不同的版本。所以他們把2.0放在XP和Vista系統上1.0以上,並且很可能決定保留Windows 7的同一個目錄。這也是擴展仍然是.ps1(和.psm1,.psd1)的原因。
您可以在Windows 7 x64上提問。爲什麼64位系統在dir中稱爲System32,爲什麼這些相同的64位dll的名稱以「32」結尾,例如user32.dll,kernel32.dll等:-)
與「極端兼容性」無關,但向後兼容。 – manojlds 2011-09-22 16:06:01
我只是認爲,在剛開始的時候,Microsoft團隊計劃並排部署PowerShell版本,就像它爲Framework .NET版本完成一樣。但是隨着時間的推移,他們決定只支持一個PowerShell。
當使用命令行的-version參數選擇版本1.0時,有更奇怪的東西var $PSVersionTable
與PSVersion值2.0。 $ PSVersionTable是不存在的PowerShell 1.0
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>powershell -version 1.0
Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. Tous droits réservés.
PS C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC> cd \
PS C:\> $PSVersionTable
Name Value
---- -----
CLRVersion 2.0.50727.4952
BuildVersion 6.1.7600.16385
PSVersion 2.0
WSManStackVersion 2.0
PSCompatibleVersions {1.0, 2.0}
SerializationVersion 1.1.0.1
PSRemotingProtocolVersion 2.1
如果您對VAR $host
看看它存在兩個版本
的PowerShell V2.0(聖維特1.0或2.0版)
PS > $host
Name : ConsoleHost
Version : 2.0
InstanceId : b6ae2582-c1f4-422a-b057-16458b387f7d
UI : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture : fr-FR
CurrentUICulture : fr-FR
PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
IsRunspacePushed : False
Runspace : System.Management.Automation.Runspaces.LocalRunspace
PowerShell V1.0
PS > $Host
Name : ConsoleHost
Version : 1.0.0.0
InstanceId : b55940f2-b3b2-4f99-b895-98aac4752369
UI : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture : fr-FR
CurrentUICulture : fr-FR
PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
我認爲PowerShell V2.0能夠運行幾乎所有的PowerShell V1.0腳本。微軟添加了一些變數,如果你的腳本中有這些變量,但它是花生,你可能會遇到麻煩。
JP
在Windows 8中,它仍然位於C:\ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe中,而$ PSVersionTable顯示的是PSVersion爲3.0。 – benjguin 2012-08-01 09:45:37
- 1. 如何安裝Azure PowerShell 1.0?
- 2. 不能在XP SP3上安裝Powershell 2.0
- 3. osql在PowerShell 1.0?
- 4. Windows Forms在Powershell和Powershell ISE中看起來不同。爲什麼?
- 5. 從PowerShell的2.0
- 6. 在安裝Sharepoint 2010之前卸載PowerShell 1.0
- 7. 運行PowerShell腳本而不安裝PowerShell?
- 8. 使用powershell安裝Windows Server 2012 Gui核心安裝使用powershell
- 9. 爲什麼Powershell不清除?
- 10. 如何安裝和配置PowerShell?
- 11. 使用PowerShell 2.0在遠程計算機上安裝Windows服務
- 12. 什麼安全設置可以阻止遠程PowerShell 2.0訪問UNC路徑
- 13. Powershell:遠程exe安裝
- 14. Powershell - 安裝Windows更新?
- 15. 安裝PowerShell搜索軟件
- 16. Powershell - 安裝應用程序
- 17. 腳本安裝字體powershell
- 18. PowerShell不要運行安裝
- 19. 安裝SharePoint的PowerShell模塊
- 20. PowerShell腳本安裝nuget包
- 21. 新PC安裝powershell腳本
- 22. 如何安裝Selenium PowerShell eXtensions?
- 23. 什麼是PowerShell NoteProperty?
- 24. 如何使用PowerShell 2.0遠程安裝應用程序?
- 25. 確定是否使用CN安裝證書(通過PowerShell 2.0)?
- 26. 爲什麼在這個PowerShell命令
- 27. 什麼是Azure Powershell?
- 28. $$,$ ?, $ ^在PowerShell中代表什麼?
- 29. 捕獲錯誤安裝在PowerShell中
- 30. Powershell安裝MSI安靜功能(ADDLOCAL)
Windows 8(預覽版)中的Powershell v3在同一個位置...... – manojlds 2011-09-22 16:04:55