自动删除路径系统环境变量

时间:2017-03-21 22:28:35

标签: powershell

我遇到了一个问题,即删除并重新安装特定应用程序正在Path下的系统变量中创建重复条目。例如,它显示C:\Apps\folder;C:\Apps\folder;typical个条目。

虽然这不会导致应用程序的功能出现问题,但我不希望在那里输入两次(如果需要额外的删除/安装,则更多)。我想自动化一些东西,所以我不必进入每个系统并手动删除其中一个条目。

可以通过批处理文件或PowerShell脚本完成吗?我无法找到方法,但希望这里有人会知道一种方式。如果该方法删除了两个条目,那就没问题了,因为我可以在脚本中添加一些内容以添加其中一个条目。一个重要的注意事项,我需要确保Path下的其他所有内容保持不变。

1 个答案:

答案 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()