如何从Powershell / Powershell Core的同一脚本中的另一个函数调用函数?

时间:2018-09-23 18:06:04

标签: powershell powershell-core

考虑示例脚本代码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

我在概念上犯了什么错误?

1 个答案:

答案 0 :(得分:3)

end=""

end=" "表示:创建项目,即使该项目已经存在(覆盖)。新创建的文件将为空,因此-Force始终返回true。

如果删除New-Item参数,则将返回预期的输出。

Test-AlreadyImported