我遇到了一个问题,即删除并重新安装特定应用程序正在Path下的系统变量中创建重复条目。例如,它显示C:\Apps\folder;C:\Apps\folder;typical
个条目。
虽然这不会导致应用程序的功能出现问题,但我不希望在那里输入两次(如果需要额外的删除/安装,则更多)。我想自动化一些东西,所以我不必进入每个系统并手动删除其中一个条目。
可以通过批处理文件或PowerShell脚本完成吗?我无法找到方法,但希望这里有人会知道一种方式。如果该方法删除了两个条目,那就没问题了,因为我可以在脚本中添加一些内容以添加其中一个条目。一个重要的注意事项,我需要确保Path下的其他所有内容保持不变。
答案 0 :(得分:0)
这是一个脚本(取自Microsoft存储库),我曾经做过同样的事情。
$RegKey = ([Microsoft.Win32.Registry]::LocalMachine).OpenSubKey("SYSTEM\CurrentControlSet\Control\Session Manager\Environment", $True)
$PathValue = $RegKey.GetValue("Path", $Null, "DoNotExpandEnvironmentNames")
Write-host "Original path :" + $PathValue
$PathValues = $PathValue.Split(";", [System.StringSplitOptions]::RemoveEmptyEntries)
$IsDuplicate = $False
$NewValues = @()
ForEach ($Value in $PathValues)
{
if ($NewValues -notcontains $Value)
{
$NewValues += $Value
}
else
{
$IsDuplicate = $True
}
}
if ($IsDuplicate)
{
$NewValue = $NewValues -join ";"
$RegKey.SetValue("Path", $NewValue, [Microsoft.Win32.RegistryValueKind]::ExpandString)
Write-Host "Duplicate PATH entry found and new PATH built removing all duplicates. New Path :" + $NewValue
}
else
{
Write-Host "No Duplicate PATH entries found. The PATH will remain the same."
}
$RegKey.Close()