我目前正在开发一个powershell脚本,用于映射目录以及加载数据库软件。我有这个当前的vbscript我正在转换为powershell,这是为了验证一个临时文件路径,但我对我可能需要拿出什么以及我可以留下什么感到困惑。
以下是原始 vbscript ...
'
' assure that temp version of Perl is used
'
perlPath = basePath & "install\perl\bin;"
WshShell.Environment("Process")("PATH") = perlPath & WshShell.Environment("System")("PATH")
'
' assure that temp version of Perl Lib is used
'
perlLib = basePath & "\install\perl\lib;" & basePath & "\install\perl\site\lib;"
WshShell.Environment("Process")("PERL5LIB") = perlLib
到目前为止,这是我在 powershell 中所写的内容......
#
# assure that Oracle's version of Powershell is used
#
$psPath = $basePath + "install\powershell\bin;"
$sysPath = $WshShell.Environment("System") | Where-Object { $_ -match "PATH" } |
foreach-object {$_.Substring(9)} | Out-String
$psPos = $sysPath.contains($psPath)
if( -not ($psPos)){
[Environment]::SetEnvironmentVariable("PATH", ($psPath + $sysPath), "Process")
}
#
# assure that Oracle's version of Powershell Module is used
#
$psMod = $homePath + "\perl\lib;" + $homePath + "\perl\site\lib;" # still need to convert
$sysMod = $Env:PSModulePath
$psPos = $sysMod.contains($psMod)
if( -not ($psPos)){
[Environment]::SetEnvironmentVariable("PATH", ($psPath + $sysChk), "Process")
}}
稍后在脚本中使用" System"进行相同的验证。变量。我有一个我将使用的模块,但其余的是脚本。我想我不确定我转换的是否是验证这些途径存在的正确方法,如果不是,则添加新途径。
答案 0 :(得分:1)
首先,您应该使用instructions cmdlet组合路径:
$psPath = Join-Path $basePath "install\powershell\bin"
您可以使用Path
使用$env:Path
分割-split ';'
变量并使用[0]
选择第一个路径条目。总而言之,我将定义您想要设置的三个路径,将它们放入一个数组并迭代它。
$powershellBin = Join-Path $basePath "install\powershell\bin"
$perLib = Join-Path $homePath "\perl\lib"
$perlSiteLib = Join-Path $homePath "\perl\site\lib"
@($powershellBin, $perLib, $perlSiteLib) | foreach {
if (-not (($env:Path -split ';')[0].Equals($_)))
{
[Environment]::SetEnvironmentVariable("PATH", ("{0};{1}" -f $_, $env:Path), "Process")
}
}