ale*_*2k8 54 powershell relative-path include
我想包含具有这种伪语法的脚本文件:
Include '.\scripA.ps1'
Run Code Online (Sandbox Code Playgroud)
但我发现的唯一的事情就是这样:
$thisScript = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent
. ($thisScript + '.\scriptA.ps1')
Run Code Online (Sandbox Code Playgroud)
那很难看.
是否有一些很好的方法来包含具有相对路径的脚本?
chr*_*chu 103
您可以使用$ PSScriptRoot参数,如下所示:
. "$PSScriptRoot\script.ps1"
Run Code Online (Sandbox Code Playgroud)
Mic*_*ens 20
如前所述,Dot-sourcing是最简单的选择,尽管不是特别漂亮.但是,这种格式使它只是有点清洁:
$ScriptDirectory = Split-Path $MyInvocation.MyCommand.Path
. (Join-Path $ScriptDirectory ScriptA.ps1)
Run Code Online (Sandbox Code Playgroud)
另外,关于相对路径的说明有助于显式:原始帖子似乎暗示需要相对于当前工作目录的路径; 实际上,目的是相对于当前脚本的源目录(如alex2k8自己的代码示例所示).因此,这允许当前脚本从同一存储库访问其他脚本.
Jar*_*Par 10
不幸的是,没有好办法.PowerShell在V1中完全不支持这个想法.真的,你采取的方法是最好的方法
从V2开始(本机从Win7/2008R2开始;请参阅$psversiontable.psversion),您可以轻松地包含如下文件:
. "RelativeOrAbsolutePathToFile\include.ps1"
$result = FunctionInIncludeFile()
Run Code Online (Sandbox Code Playgroud)
参考:
如何在脚本中重用windows powershell函数
| 归档时间: |
|
| 查看次数: |
61765 次 |
| 最近记录: |