2015-12-10 44 views
1

背景: 我通過MSI安裝了Azure-PowerShell 1.x,隨後通過命令提示符添加了一些Azure資源管理模塊。 一切工作正常;那麼昨天下午ISE莫名其妙地消失了。爲了彌補這一點,我計劃卸載MSI &,然後重新安裝。 (我不知道有必要首先取消手動添加的模塊。) 卸載似乎運行良好,但它並未刪除手動安裝的模塊,也沒有警告我有關它們的信息。如何清理不良的Azure PowerShell卸載?

結果:機器不再安裝Azure-PowerShell。我不能安裝,卸載或修復安裝,因爲一些模塊仍然存在:

從PowerShell的畫廊

Azure的模塊安裝在此 機器上。安裝此MSI之前,請刪除這些模塊。

有沒有辦法「修復」這個安裝?要麼手動刪除文件/清理註冊表,要麼強制MSI安裝在那裏?

這些都在Azure上的虛擬機上運行。如果需要,我可以從頭開始刪除整個虛擬機,但如果有相對簡單的修復方法,則寧願避免這種情況。

謝謝!

回答

1

這只是一個開發虛擬機。我加入了它並重新開始。獲得的經驗:在卸載MSI之前卸載PowerShell Gallery組件。

+0

如果PS cmdline已經死了 - 請撥打 –

+0

請您詳細說明完成此操作的步驟? – blissweb

1

嘗試經由MSI(第一),然後CMDLINE卸載模塊:

# Uninstall the AzureRM component modules 
Uninstall-AzureRM 

# Uninstall AzureRM module 
Uninstall-Module AzureRM 

# Uninstall the Azure module 
Uninstall-Module Azure 

# Or, you can nuke all Azure* modules 
# Uninstall-Module Azure* -Force 

重新啓動機器之後,然後通過WebPI/MSI再次安裝。 https://azure.microsoft.com/en-us/blog/azps-1-0/

+0

我無法從cmdline運行任何Azure PowerShell命令,因爲Azure PowerShell不再具有功能。所以不需要cmdline和沒有ISE! –

+0

說不存在Uninstall-AzureRM這樣的命令 – blissweb

+1

Uninstall-Module(不是uninstall-AzureRM)cmdlet不是Azure cmdlet的一部分,它是一個通用的PS cmdlet。嘗試使用這些命令 - 注意這些命令只有在您通過畫廊安裝時才能使用 - 如果您是通過MSI安裝的,則需要通過MSI卸載。 –

3

好吧,所以我嘗試了上述項目來刪除Windows PowerShell,發現它實際上並沒有完全刪除PowerShell。

這至少在Windows 7上看起來不太合適。

如果您運行uninstall-module Azure或Uninstall-Module AzureRM,它會卸載一些東西,看起來像我認爲的基本模塊。

然後,如果你這樣做:

獲取-模塊AzureRM -ListAvailable它會無功而返。 所以它做對了嗎?

不,不是真的。

如果你這樣做: Get-Module -ListAvailable AzureRM *你會發現任何數量的子模塊仍然坐在那裏。 (由於某些原因,通配符與Get-Module一起使用,但不與Uninstall-Module一起使用)

好吧,但是之後只需要執行Uninstall-Module AzureRm *對吧? 不,不是真的

取決於你的powershell版本(或者可能不是,我不確定) 安裝模塊只是抱怨你不能在Uninstall-Module命令中使用通配符。(天知道爲什麼通配符不是這個意思?),但是這是窗口,所以我只好把它吸了起來。

如果你看一下%System-root%\ Program Files \ windowspowershell \ modules,你仍然會看到模塊。

這是爲什麼?我不知道,但這是我必須做的,以清理所有舊版本和更新版本的Azure PowerShell,我必須恢復到乾淨的狀態。 所以要解決缺乏支持通配符的問題,我只是用一個foreach循環者:(。在(GET-模塊-ListAvailable AzureRM *)$模塊名稱|獲取唯一的)

的foreach {

寫 - 主機「刪除模塊$模塊」

卸載模塊$模塊

}

被警告不要試圖運行此作爲Visual Studio代碼或與此有關的Visual Studio,如視你的鎖可能會犯錯因爲它傾向於預加載模塊並鎖定事物。把它放在一個名爲Removeold-AzureRM.ps1文件,並從這樣的PowerShell控制檯窗口中運行它: \刪除,AzureRM.ps1

另外,還要確保在嘗試它之前關閉Visual Studio代碼和Visual Studio或您仍然可能會收到類似的錯誤消息。

如果您在已經卸載AzureRM後運行此操作,則會發現事情停止工作,並且只有最後一招。 刪除%系統根%\ Program Files文件中的所有AzureRM模塊\ windowspowershell \模塊

編輯我已經重新測試這一及以上仍然代碼似乎工作,如果你有安裝azurerm 5.0.1和你已經刪除azurerm所以我可能是錯的其他版本,以及

現在你會在這一點上肯定有這樣的排序,你現在可以重新安裝與安裝,模塊AzureRM Azure中的PowerShell。

如果您犯了像我這樣的意外損壞powershellget的錯誤,請勿嘗試使用WMF 5.1或5.0重新安裝它,因爲這樣會安裝正常,但您仍然不會擁有powershellget,爲什麼我不確定再次,這是窗戶,所以讓我們把它吸了起來。

好吧,那該如何解決呢?

你唯一的辦法就是從https://github.com/PowerShell/PowerShellGet/releases

下載powershellget的釋放,並複製PowerShellGet-1.5.0.0 \ PowerShellGet到你的模塊文件夾。 然後Install-Module將再次工作。

是的我知道我們都在說重新安裝不是更安全嗎?

是的,但對於那些你喜歡我的人,如果這不是一個理由或其他選擇上述是你最好的選擇。我希望這可以幫助某人,因爲這至少需要3天的時間才能理清爲什麼當我確信我已經刪除了所有內容時,我仍然繼續執行舊的模塊。