SystemPath.psm1
#region Get-SystemPath Function Get-SystemPath { Param ( [switch]$AsString, [switch]$Active ) # Get current PATH $CurrentPath=(Get-ItemProperty -Path ‘Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment’ -Name PATH).Path if($AsString) { if( $Active ) { return $env:Path } else { return $CurrentPath } } else { $directories = @() if($Active) { $directories = $env:Path.Split(';') } else { $directories = $currentpath.Split(';') } foreach($d in $directories) { $obj = New-Object psobject $obj | Add-Member -MemberType NoteProperty -Name Path -Value $d $obj } } } #endregion #region Add-SystemPath Function Add-SystemPath { Param ( [parameter( Mandatory=$True, ValueFromPipeline=$True, Position=0 )] [String[]]$Path ) # Get the current PATH $CurrentPath= Get-SystemPath -AsString $NewPath = $CurrentPath foreach($p in $Path) { # Test if folder to be added to the PATH exists If( !(Test-Path $p)) { Write-Error ("Folder " + $p + " does not exist!") continue } # Test if the folder already exists in the PATH $currentPathDirectories = Get-SystemPath $found = 0 foreach($d in $currentPathDirectories) { if( $d -eq $p ) { Write-Warning ("Folder " + $p + " already exists in PATH") $fount = 1 continue } } if( $found -eq 1) { continue } # Form the New Path $NewPath = $NewPath + ’;’ +$p } # Set the new path Set-ItemProperty -Path ‘Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment’ -Name PATH –Value $newPath } #endregion #region Remove-SystemPath function Remove-SystemPath { Param ( [parameter( Mandatory=$True, ValueFromPipeline=$True, Position=0 )] [String[]]$Path ) # Get the current PATH $CurrentPath=Get-SystemPath -AsString $newpath = "" foreach($p in $Path) { # Test if the folder exists in the PATH $currentPathDirectories = Get-SystemPath $found = 0 foreach($d in $currentPathDirectories) { if( $d.Path -eq $p ) { $found = 1 break } } if($found -eq 0) { Write-Error ("Folder " + $p + " does not exist in PATH") continue } } # Form the New Path foreach($d in $currentPathDirectories) { if(!$Path.Contains($d.path)) { $newpath += $d.path + ";" } } # Remove the last ";" $newPath = $newPath.Remove($newPath.Length - 1) # Set the new path Set-ItemProperty -Path ‘Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment’ -Name PATH –Value $newPath } #endregion #region Exports Export-ModuleMember -Function Get-SystemPath Export-ModuleMember -Function Add-SystemPath Export-ModuleMember -Function Remove-SystemPath #endregion |