【发布时间】:2018-08-25 06:23:16
【问题描述】:
我正在将一个“函数库”文件点源到我正在处理的每个 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 中对文件进行点源处理,并忽略无法找到的文件中的任何错误?
提前致谢。附言如果有版主想要描述一个更相关的标题,请随意 - 我已经尝试过但失败了!
【问题讨论】:
标签: powershell dot-source