Рассмотрим пример кода сценария importer.ps1
#!/usr/bin/env pwsh
New-Item -Path $profile -Force | Out-Null;
function main {
if (Test-AlreadyImported) {
Write-Host "Already Imported.";
}
else {
Add-Content $profile "#My Additions" | Out-Null;
Add-Content $profile "`$env:PSModulePath = `$env:PSModulePath + `";$PSScriptRoot`";" | Out-Null;
Write-Host "Import done.";
}
}
function Test-AlreadyImported {
if (Get-Content $profile | Select-String -Quiet "#My Additions") {
Write-Host "I am true";
return $true;
}
else {
Write-Host "I am false";
return $false;
}
}
main;
Ожидаемый результат после запуска 2 раза:
I am True.
Already Imported.
Фактический вывод после запуска 2 раза:
I am false
Import done.
Если я импортирую функцию Test-AlreadyImported
в Powershell и выполню ее, она вернет false
.Но в скрипте он всегда возвращает true
.
Какую концептуальную ошибку я совершаю?