2012-04-25 57 views
2

我有一個模塊清單文件[文件的.psd1]通過我導入嵌套模塊 [名爲.psm1文件]中定義的全局[常數]的變量。其中一個模塊[名爲.psm1]文件定義在全球範圍不變變量這樣的 -Powershell的:刪除模塊不卸載嵌套模塊

set-variable -name DataDirectory -option Constant -value "DataSources" -scope global -description "Data Directory" 

當我做PSD1文件&的取下模塊然後再嘗試做一個導入 - 模塊在PowerShell ISE中的同一會議上,我碰到下面的錯誤 -

+ set-variable <<<< -name DataDirectory -option Constant -value "DataSources" -scope global -description "Data Directory" 
    + CategoryInfo   : WriteError: (DataDirectory:String) [Set-Variable], SessionStateUnauthorizedAccessException 
    + FullyQualifiedErrorId : VariableNotWritable,Microsoft.PowerShell.Commands.SetVariableCommand 

這意味着在嵌套一個模塊定義的變量沒有被卸載。

我必須明確地做一個移除變量嗎?我認爲刪除模塊將卸載所有內容

回答

3

Remove-Module將卸載模塊範圍中定義的所有內容。只有定義該變量的模塊才能將其刪除。卸載模塊時全局變量不會被刪除。另外,在模塊範圍之外,您不能使用Remove-Variable刪除常量變量。你可以嘗試的一件事是在你創建它之前測試變量是否已經存在。

+0

你說過 - 只有定義變量的模塊才能刪除它。我怎樣才能做到這一點? – 2012-04-25 20:59:01

+0

不要將其範圍限定爲全局範圍,必須在模塊範圍內定義它,只需刪除全局修飾符即可。如果你這樣做,你必須找到另一個解決方案,以便其他模塊可以訪問它 – 2012-04-25 21:25:02