结合使用PSScriptRoot和Import-CSV

时间:2018-10-05 12:46:24

标签: powershell import-csv

详细信息:

PowerShell-Import-Local-CSV

$empCsv = Import-Csv "$PSScriptRoot\addEmp.csv"

被列为答案。当我在函数中运行此代码时,这对我不起作用。我该如何测试?

2 个答案:

答案 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