当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] Powershell 模块路径 |了解 PSModulePath 环境变量

作者:精品下载站 日期:2024-12-14 04:55:08 浏览:16 分类:玩电脑

Powershell 模块路径 |了解 PSModulePath 环境变量


[玩转系统] Powershell 模块路径 |了解 PSModulePath 环境变量

Powershell模块路径简介

当前安装在系统上的模块的位置存储在 PSModulePath 环境变量中。扩展 PowerShell cmdlet 有两种重要方法;它们是模块和管理单元。两者都是 cmdlet 和函数的包。管理单元是最先开发的,它们是在 PowerShell 版本 1 中引入的,而模块是在 PowerShell 版本 2 中引入的。管理单元已被弃用。管理单元在程序集中定义,而模块在程序集或 PowerShell 脚本中定义。管理单元和模块都只不过是 cmdlet、函数、变量和工作流的包。可以使用“Get-PSSnapin-registered”cmdlet 查找已注册的管理单元。可以使用“Get-Module -ListAvailable”cmdlet 找到已安装的可用模块列表。本文将详细介绍 Powershell 模块路径。

目录中可用的模块列表:C:\Program Files\WindowsPowerShell\Modules

ModuleType Version Name Script 1.0.1 Microsoft.PowerShell.Operation.Validation Binary 1.0.0.1 PackageManagement Script 3.4.0 Pester Script 1.0.0.1 PowerShellGet Script 1.2 PSReadline

目录目录中可用的模块列表:C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules

ModuleType Version Name Manifest 1.0.0.0 AppBackgroundTask Manifest 2.0.0.0 AppLocker Manifest 1.0.0.0 AppvClient Manifest 2.0.0.0 Appx Script 1.0.0.0 AssignedAccess Manifest 1.0.0.0 BitLocker Manifest 2.0.0.0 BitsTransfer Manifest 1.0.0.0 BranchCache Manifest 1.0.0.0 CimCmdlets Manifest 1 ConfigCI Manifest 1 Defender Manifest 1.0.0.0 DeliveryOptimization Manifest 1.0.0.0 DirectAccessClientComponents Script 3 Dism Manifest 1.0.0.0 DnsClient Manifest 1.0.0.0 EventTracingManagement Manifest 2.0.0.0 International Manifest 1.0.0.0 iSCSI Script 1.0.0.0 ISE

要仅获取当前会话中可用的模块,请使用 cmdlet“Get-Module -All”。借助 Import-Module cmdlet,可以将任何模块导入到会话中。

当前会话中的模块:

ModuleType Version Name Script 1.0.0.0 ISE Binary 3.0.0.0 Microsoft.PowerShell.Commands.Management.dll Binary 3.0.0.0 Microsoft.PowerShell.Commands.Utility.dll Manifest 3.1.0.0 Microsoft.PowerShell.Management Script 0 Microsoft.PowerShell.Utility Manifest 3.1.0.0 Microsoft.PowerShell.Utility

示例:

导入模块-名称 PSDiagnostics

详细参数可用于在导入模块时了解模块中可用的 cmdlet 和函数。

要从会话中删除模块,可以使用以下 cmdlet

删除模块名称 PSDiagnostics。此处也可以使用 verbose 参数。

PSModulePath:

PSModulePath 是一个环境变量,存储系统上安装的模块的地址。当用户不知道模块的路径或未指定时,PowerShell 使用此变量来定位它们。要查看存储的模块,请执行以下 cmdlet。

语法:

$env:PSModulePath

输出:

[玩转系统] Powershell 模块路径 |了解 PSModulePath 环境变量

$env:PSModulePath 的默认值为以下值之一

  • $HOME\Documents\PowerShell\Modules;
  • $PSHOME\Modules 或 $HOME\Documents\WindowsPowerShell\Modules;
  • $PSHOME\模块

使用 PSModulePath

可以将临时的新路径或位置添加到 PSModulePath,如下所示。

$env:PSModulePath = $env:PSModulePath + ";c:\windows\test"

可以使用环境变量编辑器向注册表添加新变量。

要使用脚本添加新变量,必须使用Environment 类的SetEnvironmentVariable 方法。

$CurrentValue = [Environment]::GetEnvironmentVariable("PSModulePath", "Machine")
[Environment]::SetEnvironmentVariable("PSModulePath", $CurrentValue + ";C:\vignesh\test", "Machine")

要从 PSModulePath 中删除路径或位置,可以使用替换参数。

$env:PSModulePath -replace ";c:\windows\test".

上述 cmdlet 将从模块路径中删除 c:\windows\test。

启用模块自动导入:

默认情况下,PSModulePath 中可用的模块仅在会话中导入。要从其他位置导入模块,必须使用 Import-Module cmdlet。 $PSModuleAutoloadingPreference 是决定是否自动导入模块的参数。其可接受的值为 All、ModuleQualified 和 None。

全部:这是默认值。首次使用时导入模块。

ModuleQualified:仅当用户指定模块时,才会导入该模块。

:模块不会自动导入。例如。 $PSModuleAutoloadingPreference=‘无’

示例:

将模块的新位置添加到 PSModulePath。

输入:

Function Add-ToPSModulePathEg {
[CmdletBinding()]
Param(
[Parameter(Mandatory=$true)][String]$ModulePath
)
Write-Host "Add a path tutorial"
if (!($env:PSModulePath.split(";") -contains $ModulePath)){
$Current = $env:PSModulePath
[Environment]::SetEnvironmentVariable("PSModulePath",$Current + ";" + $ModulePath, "Machine")
$env:PSModulePath = [System.Environment]::GetEnvironmentVariable("PSModulePath","Machine")
Write-Host "Path Added"
}else{
Write-Host "$ModulePath is already available in psMOdulePath $env:psModulePath"
}
}

运行脚本的步骤:

上面的脚本是一个函数。所以需要给它传递参数。

首先,运行脚本。

在输出窗格中,键入 Add-ToPSModulePathEg - ModulePath “要在此处添加的路径。 ”

请参阅下面的输出屏幕以供参考

输出:

[玩转系统] Powershell 模块路径 |了解 PSModulePath 环境变量

在上面的输出中,如果您看到脚本第一次运行的时间。如果 ModulePath 中尚不存在该路径,则会添加该路径,并且将随添加的路径一起打印“添加路径”教程。如果再次针对同一路径运行该脚本,则会打印第二个输出“Test4 已可用”。

从 PSModulePath 中删除路径:

输入:

function Remove-FromPSModulePathEg{
[CmdletBinding()]
Param(
[Parameter(Mandatory=$true)][String]$ModulePath
)
Write-Host "Removing a path from PSModulePath Variable"
if ($env:PSModulePath.split(";") -contains $ModulePath){
$NewValue = (($env:PSModulePath).Split(";") | ? { $_ -ne $ModulePath }) -join ";"
[Environment]::SetEnvironmentVariable("PSModulePath", $NewValue, "Machine")
$env:PSModulePath = [System.Environment]::GetEnvironmentVariable("PSModulePath","Machine")
write-Host "$ModulePath removed. Restart the prompt for the changes to take effect."
}else{
write-Host "$ModulePath is not present in $env:psModulePath"
}
}

运行脚本的步骤:

上面的脚本是一个函数。所以需要给它传递参数。

首先,运行脚本。

在输出窗格中,输入 FromPSModulePathEg - ModulePath “要在此处删除的路径。 ”

请参阅下面的输出屏幕以供参考

输出:

[玩转系统] Powershell 模块路径 |了解 PSModulePath 环境变量

在上面的输出中,首先删除上面添加的路径。接下来,生成从输出中删除一条路径。最后,第二次针对删除的路径运行脚本时,将生成不存在的路径。

同时向 PSModulePath 添加多个位置

输入:

Write-Host "Welcome to adding multiple paths to the PSModulePath Environment Variable"
#storing the paths to be added in an array
$address=@("C:\Vignesh\test","C:\Vignesh\Tickets","C:\Vignesh\Patching","C:\Vignesh\Training Screenshots" )
foreach($add in $address)
{
Write-Host "Adding the path" $add "to the PSModulePath Variable"
$env:PSModulePath = $env:PSModulePath +";$add"
Write-Host "Path added"
Write-Host "Current value of PSModulePath is "$env:PSModulePath
}

输出:

[玩转系统] Powershell 模块路径 |了解 PSModulePath 环境变量

同时从 PSModulePath 中删除多个路径:

输入:

Write-Host "Welcome to deleting multiple paths from the PSModulePath Environment Variable"
Write-Host "Current Value in PSModulePath is" $env:PSModulePath
#storing the paths to be removed from the location
$address=@("C:\Vignesh\test","C:\Vignesh\Tickets","C:\Vignesh\Patching","C:\Vignesh\Training Screenshots" )
foreach($add in $address)
{
if ($env:PSModulePath.split(";") -contains $add){
Write-Host "Removing the path" $add
$NewValue = (($env:PSModulePath).Split(";") | ? { $_ -ne $add }) -join ";"
[Environment]::SetEnvironmentVariable("PSModulePath", $NewValue, "Machine")
$env:PSModulePath = [System.Environment]::GetEnvironmentVariable("PSModulePath","Machine")
write-Host "$add removed"
}
}

输出:

[玩转系统] Powershell 模块路径 |了解 PSModulePath 环境变量

结论 - Powershell 模块路径

因此,本文详细介绍了 PSModulePath 环境变量。它还解释了模块和管理单元之间的区别。需要注意的一些关键点是何时启用模块的自动加载;应注意第一个位置具有所需的模块。如果同一模块有多个版本,PowerShell 默认情况下使用该模块的最新版本。它还演示了如何添加和删除 PSModulePath 变量的示例。要深入了解 cmdlet,建议创建示例程序并享受围绕它们工作的乐趣。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯