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
答案 0 :(得分:1)
PowerShell本质上有两种导入机制:
Module import(通过Import-Module
)使用模块名称(如果模块位于$env:PSModulePath
中):
Import-Module BitsTransfer
或使用完整/相对路径:
Import-Module 'C:\some\folder\foo.psm1'
Import-Module '.\subfolder\bar.psm1'
Dot-sourcing常规PowerShell脚本,也包含完整或相对路径:
. '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"