PowerShell:是否可以编写一个引用其文件夹中文件的脚本,该文件在调用的任何地方仍然可以使用?

时间:2013-10-23 14:42:12

标签: powershell directory

所以,假设我在C:\ scripts \ MyScript.ps1中有一个脚本,它只是:

Get-Content ".\text.txt"

在C:\ scripts中我还有一个文件text.txt,其中包含在调用脚本时打印的任意文本。如果我在PowerShell的当前目录是C:\ scripts时使用它,则此脚本可以正常工作。但是,如果PowerShell当前位于不同的目录中,例如C:\ otherFolder,然后从PoSh命令窗口调用脚本失败:

PS C:\otherFolder> ..\scripts\MyScript.ps1

我期望,因为脚本中对text.txt的引用是相对的,并且文件不存在于C:\ otherFolder中。我的问题是,有没有办法编写一个脚本,该脚本具有对其他文件的相对引用,即使从另一个文件夹中调用,它仍然可以正常工作?

我意识到如果脚本引用“C:\ scripts \ text.txt”就不会有问题,但我希望能够移动脚本(及其依赖文件)而不必更新每次在脚本中引用。

感谢。

2 个答案:

答案 0 :(得分:3)

在你的剧本中试试这个:

$scriptpath = $MyInvocation.MyCommand.Path
$dir = Split-Path $scriptpath
$path = join-path $dir "text.txt"
get-content $path

答案 1 :(得分:2)

我认为这个相关的StackOverflow问题提供了一个答案: How to get the current directory of the cmdlet being executed

您可能希望在脚本中使用$MyInvocation.MyCommand.Path