簡體   English   中英

強制安裝模塊始終安裝到用戶文件夾

[英]Force Install-Module to always install to user folders

我想強制 PowerShell 始終將模塊安裝到用戶空間。 奇怪的是,Microsoft 有一種工具可以強制安裝到需要 Admin 和Install-Module <Name> -Scope AllUser系統文件夾,但沒有辦法強制安裝到用戶文件夾。

$ModulePath = "$(Split-Path $Profile)\Modules"   # Want all modules here.
$ModulePathTest = foreach ($i in ($env:PSModulePath).split(";")) { if ($i -like $ModulePath) { $True } }   # $ModulePathTest will be $true if $ModulePath is on the $env:PSModulePath
if ($ModulePathTest -eq $null) { <do stuff> }

所以我走了這么遠,現在卡住了。 如果我登錄 Admin,我認為它默認安裝到C:\\Program Files ,如果作為普通用戶,它將轉到$ModulePath

• 是否有一種快速的方法可以將 $ModulePath 添加到 $env:PSModulePath(並且是永久的,所以我認為這意味着它必須被推送到注冊表中,對嗎?我沒有看到可以永久更新環境變量的 PowerShell 命令 - 如果我錯了,很高興知道)?

• 有沒有辦法讓Install-Module總是安裝到上面的$ModulePath中(即C:\\Users\\<Username>\\Documents\\WindowsPowerShell\\Modules )?

為什么不簡單地全局設置首選項。

關於參數默認值

簡短說明 描述如何為 cmdlet 參數和高級功能設置自定義默認值。

詳細說明 $PSDefaultParameterValues 首選項變量允許您為任何 cmdlet 或高級函數指定自定義默認值。 除非您在命令中指定另一個值,否則 Cmdlet 和高級函數使用自定義默認值。

語法 $PSDefaultParameterValues 變量是一個哈希表,用於將鍵的格式驗證為 System.Management.Automation.DefaultParameterDictionary 的對象類型。 哈希表包含鍵/值對。 密鑰的格式為 CmdletName:ParameterName。 Value 是分配給鍵的 DefaultValue 或 ScriptBlock。

$PSDefaultParameterValues 首選項變量的語法如下:

$PSDefaultParameterValues=@{"CmdletName:ParameterName"="DefaultValue"}
$PSDefaultParameterValues=@{ "CmdletName:ParameterName"={{ScriptBlock}} }
$PSDefaultParameterValues["Disabled"]=$True | $False

在 PowerShell 中使用 $PSDefaultParameterValues

假設我們想確保我們不會使用 Stop-Process 意外停止任何進程。 我們可以強制 WhatIf 始終與 Stop-Process 一起使用以更好地保護自己:

$PSDefaultParameterValues.Add("Stop-Process:WhatIf",$True)

所以,對於你所追求的,...

PowerShell $PSDefaultParameterValues 首選項變量中有什么?

$PSDefaultParameterValues = @{
    'Out-Default:OutVariable' = 'LastResult'
    'Out-File:Encoding' = 'utf8'
    'Export-Csv:NoTypeInformation' = $true
    'ConvertTo-Csv:NoTypeInformation' = $true
    'Receive-Job:Keep' = $true
    'Install-Module:Scope' = 'CurrentUser'
    'Install-Module:AllowClobber' = $true
    'Install-Module:Force' = $true
    'Install-Module:SkipPublisherCheck' = $true
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM