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