当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] PowerShell 位置 | PowerShell 中的位置如何工作?

作者:精品下载站 日期:2024-12-14 04:50:47 浏览:14 分类:玩电脑

PowerShell 位置 | PowerShell 中的位置如何工作?


[玩转系统] PowerShell 位置 | PowerShell 中的位置如何工作?

PowerShell 位置的定义

PowerShell 位置 cmdlet Get-Location、Set-Location、Push-Location 和 Pop-Location 用于获取 PowerShell 控制台的当前位置,将位置设置为目录、注册表或证书路径,移动到新位置,并使用堆栈保留以前的位置,脚本使用这些 cmdlet 设置源文件夹的位置,以便可以轻松执行该文件夹中的所有源文件。

语法:

Get-Location Syntax:Get-Location
[-PSProvider <String[]>]
[-PSDrive <String[]>]
[<CommonParameters>]
Get-Location
[-Stack]
[-StackName <String[]>]
[<CommonParameters>]
Set-Location Syntax:Set-Location
[[-Path] <String>]
[-PassThru]
[<CommonParameters>]
Set-Location
-LiteralPath <String>
[-PassThru]
[<CommonParameters>]
Set-Location
[-PassThru]
[-StackName <String>]
[<CommonParameters>]
Push-Location Syntax:Push-Location
[[-Path] <String>]
[-PassThru]
[-StackName <String>]
[<CommonParameters>]
Push-Location
[-LiteralPath <String>]
[-PassThru]
[-StackName <String>]
[<CommonParameters>]
Pop-Location Syntax:Pop-Location
[-PassThru]
[-StackName <String>]
[<CommonParameters>]

在上述所有多种语法中,对于特定的 cmdlet,我们一次只能使用一组。例如,在 Push-Location cmdlet 中,我们可以使用 -Path 或 -LiteralPath,但不能同时使用两者。

PowerShell 中的位置如何工作?

PowerShell 中还有其他具有不同模块的位置 cmdlet,但 PowerShell 默认情况下附带 4 个位置 cmdlet(Push-Location、Pop-Location、Set-Location、Get-Location),它们来自 PowerShell 模块 Microsoft.PowerShell .管理。
我们可以使用以下命令检查提到的cmdlet,

Get-Command -Name *location* -Module Microsoft.PowerShell.Management

输出:

[玩转系统] PowerShell 位置 | PowerShell 中的位置如何工作?

当我们使用 Get-Location 命令时,它会显示当前位置的路径。

PS C:\Temp> Get-Location

输出:

[玩转系统] PowerShell 位置 | PowerShell 中的位置如何工作?

使用 Set-Location 命令,我们可以将目录更改为另一个目录、注册表或证书存储位置。该命令是cmd命令“cd”的别名,这意味着您可以交替使用这两个命令。

当我们使用 Set-Location 时,我们可以将当前位置推送到新堆栈,以便稍后可以检索它。以下命令将更改注册表的位置。

PS C:\Temp\Temp1> Set-Location HKLM:\HARDWARE\

输出:

[玩转系统] PowerShell 位置 | PowerShell 中的位置如何工作?

Push-Location 和 Pop-Location 命令的工作方式与 Set-Location 和 Get-Location 略有不同。 Push-Location 命令将当前位置压入堆栈,然后更改为当前位置,而 Pop-Location 命令用于从堆栈中检索压入的位置,如下所示。

PS C:\Temp> Push-Location -Path C:\Test1\

输出:

[玩转系统] PowerShell 位置 | PowerShell 中的位置如何工作?

当我们检查堆栈时,它应该显示 C:\Temp。

PS C:\Test1> Get-Location -Stack

输出:

[玩转系统] PowerShell 位置 | PowerShell 中的位置如何工作?

让我们压入另一个位置并检查堆栈。

PS C:\Test1> Push-Location -Path C:\Test2\
PS C:\Test2> Get-Location -Stack

输出:

[玩转系统] PowerShell 位置 | PowerShell 中的位置如何工作?

当我们使用 Pop-Location 命令时,它将按 LIFO(后进先出)顺序检索存储的输出。

PS C:\Test2> Pop-Location
PS C:\Test1> Pop-Location

输出:

[玩转系统] PowerShell 位置 | PowerShell 中的位置如何工作?

示例

示例#1:设置环境变量位置。

我们可以使用Set-Location命令将目录切换到环境变量位置。下面我们使用的是windows根目录环境变量。

PS C:\> Set-Location $env:windir

输出:

[玩转系统] PowerShell 位置 | PowerShell 中的位置如何工作?

我们还可以将环境变量位置设置为目标目录,如下所示。

PS C:\Windows> Set-Location Env:\

输出:

[玩转系统] PowerShell 位置 | PowerShell 中的位置如何工作?

示例 #2:将目录位置设置为注册表和证书路径。

我们可以设置注册表的位置,如下所示。

PS C:\> Set-Location HKLM:\

输出:

[玩转系统] PowerShell 位置 | PowerShell 中的位置如何工作?

或者注册表的子路径。

PS C:\> Set-Location HKLM:\HARDWARE\

输出:

[玩转系统] PowerShell 位置 | PowerShell 中的位置如何工作?

同样,我们也可以设置证书管理器路径。

PS C:\> Set-Location Cert:\LocalMachine\

输出:

[玩转系统] PowerShell 位置 | PowerShell 中的位置如何工作?

示例#3:获取脚本执行位置。

要获取正在执行的脚本的位置,我们可以使用 MyInspiration 命令。

[玩转系统] PowerShell 位置 | PowerShell 中的位置如何工作?

MyCommand 显示脚本的名称,InitationName 显示脚本的路径。

$MyInvocation.InvocationName

示例#4:获取 PowerShellModule 路径位置。

PowerShell 模块路径存储在位置 $env: PsModulePath
您可以使用以下命令获取 PS 结节路径。

$env:PSModulePath -split ';'

输出:

[玩转系统] PowerShell 位置 | PowerShell 中的位置如何工作?

示例 #5:在脚本中使用 Push-Location 和 Pop-Location 命令。

假设我们有一个脚本,它使用 Push-Location 命令从特定位置获取数据,然后使用 Pop-Location 命令返回到原始位置,以便脚本可以引用旧路径恢复执行。

Write-Output "Current Directory Location: $(Get-Location)"
Write-Output "Retrieve the files/folders from the C:\temp"
Push-Location C:\Test1
dir
Write-Output "Returning to the original location"
Pop-Location
Write-Output "Lastest Location: $(Get-Location)"

输出:

[玩转系统] PowerShell 位置 | PowerShell 中的位置如何工作?

示例#6:将位置推送到新名称堆栈。

我们可以使用不同的名称堆栈将位置推送到新堆栈,因此当我们处理特定脚本时,我们不需要将位置放入默认名称堆栈中。

Push-Location C:\Windows\System32\drivers\etc\ -StackName 'MyStack' -PassThru

输出:

[玩转系统] PowerShell 位置 | PowerShell 中的位置如何工作?

我们可以使用以下命令从特定名称堆栈中检索以前的位置。

Pop-Location -StackName 'MyStack'

输出:

[玩转系统] PowerShell 位置 | PowerShell 中的位置如何工作?

示例#7:使用另一个堆栈设置位置。

在这里,我们可以使用不同的名称堆栈来设置位置。我们将首先通过将位置推送到新堆栈来创建新堆栈并设置该堆栈的位置,然后我们将返回到之前的位置。

Push-Location $env:windir\System32\drivers\etc\ -StackName 'MyStack' -PassThru
Set-Location -StackName 'MyStack'

上述命令将位置推送到堆栈,而 Set-Location 从堆栈中设置该特定位置。

输出:

[玩转系统] PowerShell 位置 | PowerShell 中的位置如何工作?

我们可以使用以下命令检查存储在堆栈内的位置:

Get-Location -StackName 'MyStack'

输出:

[玩转系统] PowerShell 位置 | PowerShell 中的位置如何工作?

示例 #8:使用“+”或“-”导航位置。

我们可以使用 Set-Location 中的“+”和“-”符号或 cd 命令来导航位置。

PS C:\> Set-Location $env:CommonProgramFiles
PS C:\Program Files\Common Files> Set-Location HKLM:\HARDWARE\
PS HKLM:\HARDWARE\> Set-Location Cert:\CurrentUser\

我们现在已经浏览了上述文件夹。我们将使用“-”和“+”符号移动到上一个路径和下一个路径。

Set-Location -Path '-'
Set-Location -Path '+'

输出:

[玩转系统] PowerShell 位置 | PowerShell 中的位置如何工作?

结论

PowerShell 位置命令在脚本内非常有用,用于设置源文件的目录路径并返回原始路径,以便当脚本需要所需位置来执行相关文件时不需要人工干预。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯