D:\NoName\testfolder1\test1.ps1
:
function restapi {
Write-Host "Initiating Rest Call"
$test_value = "1"
}
D:\NoName\Testfolder1\testfolder2\test2.ps1
:
Invoke-Expression -Command D:\NoName\testfolder1\test1.ps1
function Invoke-Rest {
restapi
Write-Host "Invoking rest call and value of test is $test_value"
}
如何在不提供完整路径的情况下调用/导入test1.ps1
文件,就像我们在Python中一样:
import testfolder1
from .testfolder1 import test1
PowerShell本质上有两种导入机制:
Import-Module
)或者模块名称(如果模块位于$env:PSModulePath
):
Import-Module BitsTransfer
或者使用完整/相对路径:
Import-Module 'C:\some\folder\foo.psm1'
Import-Module '.\subfolder\bar.psm1'
. 'C:\some\folder\foo.ps1'
. '.\subfolder\bar.ps1'
在你的情况下,你可能想要后者:
. "$PSScriptRoot\..\testfolder1\test1.ps1"
function Invoke-Rest {
restapi
Write-Host "Invoking rest call and value of test is $test_value"
}
请注意,在PowerShell v3之前,automatic variable $PSScriptRoot
不可用。在早期版本中,您需要自己确定目录,如下所示:
$scriptdir = Split-Path $MyInvocation.MyCommand.Path -Parent
. "$scriptdir\..\testfolder1\test1.ps1"