详细信息:
$empCsv = Import-Csv "$PSScriptRoot\addEmp.csv"
被列为答案。当我在函数中运行此代码时,这对我不起作用。我该如何测试?
答案 0 :(得分:0)
您可以使用$PSVersionTable.PSVersion
测试Powershell版本。
如果版本低于3.0,则可以使用:
Split-Path $script:MyInvocation.MyCommand.Path -Parent
查找当前脚本运行所在的目录,而不是$PSScriptRoot
。
答案 1 :(得分:0)
$PSScriptRoot
will provide the path for the currently running script/function,因此,如果脚本从其他位置运行功能,则$PSScriptRoot
将包含该其他位置。
如果要获取调用该函数的脚本的路径,请利用$MyInvocation
:
$empCsv = Import-Csv "$(Split-Path $MyInvocation.ScriptName)\addEmp.csv"
演示
Test.psm1
文件。Caller.ps1
文件。Caller.ps1
。$PSScriptRoot
将引用Test.psm1
的位置,$MyInvocation
将引用Caller.ps1
的位置。 Test.psm1
:
Function Test{
Write-host "PSScriptRoot: $PSScriptRoot"
Write-host "MyInvocation: $(Split-Path $MyInvocation.ScriptName)"
}
Caller.ps1
:
Import-Module ..\Test.psm1 -Force
Test