相关疑难解决方法(0)

确定当前PowerShell脚本位置的最佳方法是什么?

每当我需要引用一个公共模块或脚本时,我喜欢使用相对于当前脚本文件的路径,这样,我的脚本总能找到库中的其他脚本.

那么,确定当前脚本目录的最佳标准方法是什么?目前,我正在做:

$MyDir = [System.IO.Path]::GetDirectoryName($myInvocation.MyCommand.Definition)
Run Code Online (Sandbox Code Playgroud)

我知道在模块(.psm1)中你可以使用它$PSScriptRoot来获取这些信息,但这不会在常规脚本(即.ps1文件)中设置.

获取当前PowerShell脚本文件位置的规范方法是什么?

powershell powershell-2.0

492
推荐指数
11
解决办法
46万
查看次数

如何获取正在执行的cmdlet的当前目录

这应该是一个简单的任务,但我已经看到了几次尝试如何获取执行cmdlet所在目录的路径,并取得了成功.例如,当我执行C:\temp\myscripts\mycmdlet.ps1哪个有设置文件时,C:\temp\myscripts\settings.xml我希望能够存储C:\temp\myscripts在一个变量中mycmdlet.ps1.

这是一个有效的解决方案(虽然有点麻烦):

$invocation = (Get-Variable MyInvocation).Value
$directorypath = Split-Path $invocation.MyCommand.Path
$settingspath = $directorypath + '\settings.xml'
Run Code Online (Sandbox Code Playgroud)

另一个人建议这个解决方案只适用于我们的测试环境:

$settingspath = '.\settings.xml'
Run Code Online (Sandbox Code Playgroud)

我非常喜欢后一种方法,并且更喜欢每次都必须将文件路径解析为参数,但我不能让它在我的开发环境中工作.有没有人建议做什么?它与PowerShell的配置方式有关吗?

powershell cmdlet

195
推荐指数
10
解决办法
35万
查看次数

标签 统计

powershell ×2

cmdlet ×1

powershell-2.0 ×1