繁体   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