我正在将一个“函数库”文件点源到我正在处理的每个 Powershell 脚本中。
目前,我将此文件放在与脚本相同的目录中,并按如下方式对其进行点源:
. (Join-Path $PSScriptRoot FunctionLibrary.ps1)
一旦脚本在与脚本正在执行的操作相关的特定位置的服务器上“投入生产”,这就很好了。但是,当我从网络驱动器上的通用“Powershell”文件夹构建脚本时,这意味着我最终会在几个不同的文件夹中得到相同的文件——编辑一个函数库只是时间问题然后对不同的文件进行不同的编辑,最终得到应该是同一个文件的无数版本。
因此,理想情况下,我想将此函数库文件存储在“G:\PowerShell\Function Library”中,并在脚本的工作目录中不存在这样的文件时引用它。
这个的伪将是这样的:
If( File Exists in C:\Location ) {
Load C:\Location\File
}
ElseIf( File Exists in "This Directory" ) {
Load "This Directory"\File
}
Else {
Log "Unable to load functions library, exiting"
Exit
}
为了现在实现这一目标,我只是在做:
. (Join-Path $PSScriptRoot FunctionLibrary.ps1)
. "G:\Powershell\Function Library\FunctionLibrary.ps1"
这有效,但总是给我一个错误 - 我无法找到一种方法来消除错误。我试过了-ErrorAction "SilentlyContinue"
,| Out-Null
但似乎都没有改变。
因此,我想这个问题有两个潜在的答案,也许同时回答这两个问题对这个线程的未来读者都有好处:
- 我如何测试文件是否存在(
Test-Path
大概?),然后如果它存在,则对其进行点源? - 如何在 Powershell 中对文件进行点源处理并忽略无法找到的文件中的任何错误?
提前致谢。PS如果任何版主想要描述一个更相关的标题,请随意 - 我已经尝试过但失败了!