Sti*_*rez 195 powershell 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的配置方式有关吗?
Gur*_*Kay 249
是的,应该工作.但如果您需要查看绝对路径,这就是您所需要的:
(Get-Item -Path ".\").FullName
Run Code Online (Sandbox Code Playgroud)
Jas*_*her 126
这样做的可靠方法就像你展示的那样$MyInvocation.MyCommand.Path.
使用相对路径将基于$ pwd,PowerShell,应用程序的当前目录或.NET API的当前工作目录.
小智 81
最简单的方法似乎是使用以下预定义变量:
$PSScriptRoot
Run Code Online (Sandbox Code Playgroud)
about_Automatic_Variables并且about_Scripts都表明:
在PowerShell 2.0中,此变量仅在脚本模块(.psm1)中有效.从PowerShell 3.0开始,它在所有脚本中都有效.
我这样使用它:
$MyFileName = "data.txt"
$filebase = Join-Path $PSScriptRoot $MyFileName
Run Code Online (Sandbox Code Playgroud)
Ale*_*gas 43
您还可以使用:
(Resolve-Path .\).Path
Run Code Online (Sandbox Code Playgroud)
括号中的部分返回一个PathInfo对象.
(自PowerShell 2.0起可用.)
Chr*_*lem 32
路径通常为空.此功能更安全.
function Get-ScriptDirectory
{
$Invocation = (Get-Variable MyInvocation -Scope 1).Value;
if($Invocation.PSScriptRoot)
{
$Invocation.PSScriptRoot;
}
Elseif($Invocation.MyCommand.Path)
{
Split-Path $Invocation.MyCommand.Path
}
else
{
$Invocation.InvocationName.Substring(0,$Invocation.InvocationName.LastIndexOf("\"));
}
}
Run Code Online (Sandbox Code Playgroud)
Roh*_*rth 27
试试:
(Get-Location).path
Run Code Online (Sandbox Code Playgroud)
要么:
($pwd).path
Run Code Online (Sandbox Code Playgroud)
Vee*_*asi 16
Get-Location 将返回当前位置:
$Currentlocation = Get-Location
Run Code Online (Sandbox Code Playgroud)
Fra*_*ood 12
我喜欢一线解决方案 :)
$scriptDir = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
345360 次 |
| 最近记录: |