PowerShell-以管理员身份运行时还原脚本位置的目录

问题描述 投票:0回答:1

我的情况:我必须以管理员身份运行PowerShell脚本(因为访问特权文件夹),并且我的脚本还引用与脚本相同目录中的文件。我需要使用相对文件路径,但是由于以PowerShell身份运行时PowerShell将目录切换到C:\WINDOWS\system32,因此无法使用。

在PowerShell中,是否可以将目录还原到脚本所在的当前目录?

我的脚本:(将以管理员身份运行)

Copy-Item -Path .\file1.txt -Destination 'C:\Users\privileged_folder'

目录结构:

MyDir\
    file1.txt
    myscript.ps1 <- ran as admin
powershell
1个回答
0
投票

在脚本中,您可以将位置设置为脚本文件夹。在您的脚本中,可以使用以下两种方法之一:

# PowerShell 3+
cd $PSScriptRoot

# PowerShell 2
cd ( Split-Path -Parent $MyInvocation.MyCommand.Definition )

更改为$PSScriptRoot在所有当前受支持的PowerShell版本中都有效,但是如果出于某些原因您仍然有运行PowerShell 2的节点,则使用Split-Path获取脚本目录将很有用。


如果您想在脚本执行完成后返回到先前的目录(可能是不错的选择),您也可以使用Split-PathPush-Location代替Push-LocationPop-Location

Pop-Location

[这两个cmdlet将位置视为堆栈-cd更改您的位置并将目录添加到位置堆栈,而cd将从堆栈中删除当前目录,并将您返回到先前的位置。它的工作原理类似于对数组的推入和弹出操作。

© www.soinside.com 2019 - 2024. All rights reserved.