如何用powershell命令删除写错的env:path环境变量


PowerShell交流中心如何用powershell命令删除写错的env:path环境变量
0
Johnny asked 8 年 ago

添加path环境变量参数时忘记加”;”分号了,红色行为输入错误,如何删除或修改?谢

PS C:\Users\johnny li> $env:path -split ‘;’
%SystemRoot%\system32\WindowsPowerShell\v1.0\
C:\Windows\system32
C:\Windows
C:\Windows\System32\Wbem
C:\Windows\System32\WindowsPowerShell\v1.0\
C:\Windows\sysWOW64
C:\Program Files (x86)\QuickTime\QTSystem\
C:\Program Files (x86)\Common Files\Hitachi ID\
C:\Program Files\Common Files\Hitachi ID\
C:\Program Files (x86)\Nmap%programfiles%\windows nt\accessories%programfiles%\windows nt\accessoriesC:\Program Files\Windows NT\Accessories

Johnny replied 8 年 ago

谁来回答这个简单的问题???

xyl574117954 replied 8 年 ago

初学者表示看不懂,也表示不简单.

0 Answers
2
Mooser Lee 管理员 answered 8 年 ago
$oldPath = $env:Path -split ';' 
$invalidPath = $oldPath | Where-Object {
 -not(Test-Path ([environment]::ExpandEnvironmentVariables($_)))
} 
if($invalidPath){
 Write-Host "请选择你想删除的环境变量项!"
 $selectedPath = $invalidPath | Out-GridView -Title "请选择你想删除的环境变量项!" -PassThru 
 if($selectedPath){
 $newPath = $oldPath | Where-Object {
 $selectedPath -notcontains $_
 }
 
 Write-Host '当前会话中的$env:Path已保存'
 $env:Path = $newPath -join ';'

 # 如果想将环境变量的更改保存进系统,请去掉下面一行的注释(需要管理员权限)
 # [environment]::SetEnvironmentVariable('Path',$env:Path,'Machine')
 }
}
Johnny replied 8 年 ago

感谢感谢,这几天抽空看了回复,想读懂,正在研究[environment]::ExpandEnvironmentVariables($_)和$selectedPath -notcontains $_都是啥意思(如能详解感激不尽),目前看是找出有错误的属性值然后加“;”后再重写进path里,是这样吗?

Mooser Lee 管理员 replied 8 年 ago

首先根据分号分割;分割以后我想判断每一个路径是不是存在。这里有讲究了,因为环境变量中可能有%windir%这样的环境变量占位符,我想在PowerShell判断,就必须把它替换成类似于C:\windows这样的路径。紧接着,test-path判断文件夹是否存在,如果不存在交给用户选择是否想删除某一项。这里为什么要交给用户判断,因为默认的环境变量中有一些路径是预留的,本身不存在,我用脚本判断不出来,就需要人为参与了。

Johnny replied 8 年 ago

思路我能明白了,可是[environment]::ExpandEnvironmentVariables($_)和$selectedPath -notcontains $_这两条语句是干什么用的?我想读懂他们,哪里有这方面的资料?可以发我邮箱lixu0113@126.com,目前正在学习powershell的初级阶段,还望赐教。感谢感谢!