В настоящее время я работаю над скриптом powershell, который отображает каталоги вместе с загрузкой программного обеспечения базы данных. У меня есть текущий vbscript, который я конвертирую в powershell, который предположительно проверяет временный путь к файлу, но я немного запутался в том, что мне может понадобиться, чтобы вынуть и что я могу оставить.VBScript to 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")
}}
Такая же проверка выполняется позже в скрипте с переменными «Система». У меня есть модуль, который я буду использовать, но остальные - это скрипты. Наверное, я не уверен, что то, что я конвертирую, это правильный способ проверить, существуют ли эти пути и не добавлять новые пути.
спасибо за прекрасный пример! Не понял, что в командной оболочке есть командлет «Join-Path». –