如何在PowerShell中获取当前文件位置

如何在PowerShell中获取当前文件位置,powershell,Powershell,我想知道如何获得我正在运行或编写的脚本的位置。我们将一组.NET程序集放置在与当前PowerShell脚本相同的目录中,并希望从脚本中加载它们。现在我使用固定路径来定位程序集,但我们希望从当前文件位置加载它们 [System.Reflection.Assembly]::LoadFrom ("C:\Work\Scripts\Assemblies\DynamicOps.ManagementModel.Client.dll") [System.Reflection.Assembly]::LoadFr

我想知道如何获得我正在运行或编写的脚本的位置。我们将一组.NET程序集放置在与当前PowerShell脚本相同的目录中,并希望从脚本中加载它们。现在我使用固定路径来定位程序集,但我们希望从当前文件位置加载它们

[System.Reflection.Assembly]::LoadFrom
("C:\Work\Scripts\Assemblies\DynamicOps.ManagementModel.Client.dll")

[System.Reflection.Assembly]::LoadFrom
("C:\Work\Scripts\Assemblies\DynamicOps.Repository.dll")

$MyInvocation.MyCommand.Path
可能吗

$MyInvocation
包含包含有关当前命令信息的对象,例如脚本、函数或脚本块。您可以使用对象中的信息,例如脚本的路径和文件名 (
$myinvocation.mycommand.path
)或函数名(
$myinvocation.mycommand.name
)来标识当前命令。这对于查找正在运行的脚本的名称特别有用。您将通过以下方式获得有关自动可变的完整帮助:


(编辑)
要获取当前目录,您需要CmdLet
get Location

这里有相同的问题:谢谢JPBlanc!我试着用split Path,结果成功了$currentFileLocation=Split Path$MyInvocation.MyCommand.Path我将$currentFileLocation=Split Path$MyInvocation.MyCommand.Path代码行移动到函数中,但它不起作用。它在运行脚本时抛出错误,有什么建议吗?PS C:\Windows\system32>C:\Work\Scripts\GetVirtualMachineProvisiongGroup.ps1写入错误:无法将参数绑定到参数“Path”,因为它为空。
$MyInvocation
是一个自动变量。如果要编写函数来执行此操作,则需要从父作用域获取
$MyInvocation
。阅读本文()。
get-help about_Automatic_Variables -full