首页 > 系统相关 >PowerShell实现Win11环境变量追加及备份

PowerShell实现Win11环境变量追加及备份

时间:2023-07-24 22:34:45浏览次数:35  
标签:newPath 路径 环境变量 Environment Path Win11 PowerShell envPath

最近重装了系统,之前配置的环境又得重新配置,感觉很繁琐所以查阅资料实现了用脚本配置环境变量,这样只要保留原先的JDK等环境文件夹就可以一键配置了。

一开始我准备采用比较熟悉的bat脚本来实现

setx PATH "%PATH%;%myPath%"  /m

setx会覆盖原有path!!,故最后使用PowerShell实现,脚本如下

# 追加环境变量path 。文件夹下执行打开PowerShell输入& '.\新建.ps1'回车即可
$envPath = [Environment]::GetEnvironmentVariable("Path", "Machine")
$newPaths = @(
    "C:\Users\zbz12\Desktop",
    "C:\Users\zbz12\Desktop\RapidEEx64\HHH",
"C:\Users\zbz12\Desktop\RapidEEx64"
    # 添加更多新路径如JavaPath之类的...
)

foreach ($newPath in $newPaths) {
    if ($envPath -notlike "*$newPath*") {
        $envPath += ";$newPath"
    }
}

[Environment]::SetEnvironmentVariable("Path", $envPath, "Machine")

Write-Host "新路径已添加至系统环境变量Path。"`

这段代码是用于将指定的文件夹路径添加到系统环境变量Path中,并输出提示信息。

首先,代码通过使用[Environment]::GetEnvironmentVariable("Path", "Machine")获取了当前系统环境变量Path的值,并将其存储在变量$envPath中。

接下来,定义了一个新数组$newPaths,其中包含了要添加到环境变量Path中的文件夹路径。

然后,通过foreach循环遍历每个新路径$newPath

  • 使用条件判断$envPath -notlike "*$newPath*"来检查新路径是否已经存在于环境变量Path中。如果不存在,则执行下面的代码。
  • 将新路径$newPath追加到$envPath后面,并在路径之间添加分号。
  • 最后,使用[Environment]::SetEnvironmentVariable("Path", $envPath, "Machine")将更新后的$envPath值设置为系统环境变量Path。

最后,使用Write-Host输出提示信息"新路径已添加至系统环境变量Path。"。

请注意,此脚本需要以管理员权限运行才能成功修改系统环境变量。

脚本改进

本来到这里就结束了但经过测试,发现脚本会把Path 中引用的变量会被自动替换为变量的值,如 %JAVA_HOME% 会被替换为 JAVA_HOME所在位置如D:\008_Soft\Java\JDK1.8。又是一番查阅我找到了[Environment]::ExpandEnvironmentVariables()方法

[Environment]::ExpandEnvironmentVariables()是一个静态方法,它属于System.Environment类,用于扩展或展开环境变量的引用。

环境变量是在操作系统中定义的一些特定值,用于存储有关系统配置、用户配置和其他信息的数据。在Windows系统中,环境变量通常使用%变量名%的形式表示,例如%windir%表示Windows系统目录的路径。

[Environment]::ExpandEnvironmentVariables()方法接受一个字符串参数,该参数包含环境变量引用。它会将引用的环境变量替换为实际的值,并返回替换后的字符串。

例如,假设$newPath的值为%windir%\System32,即Windows系统目录下的System32文件夹。使用[Environment]::ExpandEnvironmentVariables($newPath)会将%windir%替换为实际的Windows系统目录路径,返回C:\WINDOWS\System32

在脚本中,我们使用[Environment]::ExpandEnvironmentVariables($newPath)来获取新路径中环境变量的实际值,并将其存储在变量$expandedPath中。这样,无论新路径中是否包含环境变量引用,我们都可以确保将实际的路径添加到环境变量Path中。

最终脚本如下

$envPath = [Environment]::GetEnvironmentVariable("Path", "Machine")
$newPaths = @(
    "C:\Users\zbz12\Desktop",
    "C:\Users\zbz12\Desktop\RapidEEx64\HHH",
    "C:\Users\zbz12\Desktop\RapidEEx64"
    # 添加更多新路径...
)

foreach ($newPath in $newPaths) {
    $expandedPath = [Environment]::ExpandEnvironmentVariables($newPath)
    if ($envPath -notlike "*$expandedPath*") {
        $envPath += ";$expandedPath"
    }
}

[Environment]::SetEnvironmentVariable("Path", $envPath, "Machine")

Write-Host "新路径已添加至系统环境变量Path。"

将以上代码保存为add_path.ps1文件,运行PowerShell,导航到脚本所在的目录,执行以下命令来运行脚本:

& '.\add_path.ps1'
脚本将读取系统中的Path环境变量,然后,脚本会检查Path环境变量是否包含以前存在的%%变量。如果包含,则不修改Path环境变量;如果不包含,则将新的文件夹路径追加到Path环境变量中。

执行完毕后,可以在PowerShell中输入$env:Path来验证Path环境变量是否成功追加了新的文件夹路径,且不展开以前存在的%%变量。

标签:newPath,路径,环境变量,Environment,Path,Win11,PowerShell,envPath
From: https://www.cnblogs.com/touchTomorrow/p/17578539.html

相关文章

  • mac 配置环境变量 vim ~/.bash_profile
    vim~/.bash_profilesource.bash_profile exportM3_HOME=/Users/amy.zhang/Library/apache-maven-3.8.7 PATH=$M3_HOME/bin:$PATHexportM3_HOME JAVA_HOME=/Users/amy.zhang/Library/Java/JavaVirtualMachines/corretto-11.0.20/Contents/HomePATH=$JAVA_HOME/bin:......
  • powershell首次运行报:无法加载xxxx,因为此系统禁止运行脚本错误
     解决:使用管理员身份运行 PowerShell,然后输入set-executionpolicyremotesigned得到以下提示: 执行“set-ExecutionPolicyRemoteSigned”:执行策略更改 执行策略可以防止您执行不信任的脚本。更改执行策略可能会使您面临about_Execution_Policies ......
  • dockerfile endpoint使用环境变量
    DockerfileEndpoint使用环境变量介绍在Docker开发环境中,使用环境变量是一种常见的做法。环境变量可以提供一种灵活且可配置的方式,用于在不同的容器之间传递参数。而Dockerfile中的Endpoint用于指定容器的入口点,即容器启动后要执行的命令或脚本。本文将介绍如何在Dockerfile中使......
  • powershell随笔
    目录powershell随笔字符串相关函数-match-replace格式化操作子表达式资源网站powershell随笔忘记时来看。。。字符串相关函数-match#Format[value]#LogicMatchesatleastoneofthecharactersinthebrackets."big"-match"b[iou]g"Powershell-Regular......
  • win11安装docker及应用
    一、win11安装docker在docker官网DownloadDockerDesktop|Docker下载安装。安装后启动,可能碰到图示异常://在cmd输入命令,稍等片刻即好wsl--update二、docker常用命令(在cmd中执行)//安装镜像dockerpull[镜像名称]:[镜像版本]比如安装rabbitmq3.12.2版本,命令为do......
  • PowerShell命令卸载 Windows系统预装内置软件
    一、【核心命令】 Get-AppxPackage-AllUsers /*获取Win10以上系统(所有用户)预装软件*/ Get-AppxPackage-AllUsers{预装软件全名}|Remove-AppxPackage/*管道方式卸载Win10以上系统预装软件*/ Remove-App......
  • win11 跳过硬件检测
    打开C:$WINDOWS.~BT\Sources\Panther,找到Appraiser_Data.ini文件,双击打开,清空里面的内容,然后设置为只读属性。来源:https://zhuanlan.zhihu.com/p/571730982?utm_id=0......
  • PowerShell Sql server 系列一:连接SQl
    前置条件PowerShell基础知识。模块,参数,凭证Sqlserver基础知识,SSMS操作熟练labSqlserver2017-2022Dev版本PowerShell5.1以上安装dba模块Install-Module-Namedbatools测试和连接sql测试sql#Windows账户连接Test-DbaConnection-SqlInstancekite\mssqls......
  • Win11 将网站发布到IIS 遇到 HTTP Error 500.19 code 0x8007000d, web.config 文件
    当我们在IIS发布网站时,遇到 HTTPError500.19  code0x8007000d,web.config文件有错误。有可能是web.config文件指定了module: AspNetCoreModuleV2,但我们的机器没有安装。可尝试按照如下方式安装对应版本的IIS支持。 ......
  • Win11镜像文件下载 Win11官方镜像下载
     https://www.xitongzhijia.net/win11/243924.html Win11镜像文件下载Win11官方镜像下载时间:2022-06-0914:47:11 作者:永煌 来源:系统之家  手机查看 评论  反馈网盘下载Win11iso原版镜像V2022大小:5.25GB类别:Windows11系统现在随着Win11系统的不断......