Set-Location

将当前工作位置设置为指定位置。

语法

Set-Location
   [[-Path] <String>]
   [-PassThru]
   [-UseTransaction]
   [<CommonParameters>]
Set-Location
   -LiteralPath <String>
   [-PassThru]
   [-UseTransaction]
   [<CommonParameters>]
Set-Location
   [-PassThru]
   [-StackName <String>]
   [-UseTransaction]
   [<CommonParameters>]

说明

Set-Location cmdlet 将工作位置设置为指定位置。 该位置可以是目录、子目录、注册表位置或任何提供程序路径。

还可以使用 StackName 参数将命名位置堆栈设为当前位置堆栈。 有关位置堆栈的详细信息,请参阅说明。

示例

示例 1:设置当前位置

PS C:\> Set-Location -Path "HKLM:\"
PS HKLM:\>

此命令将当前位置设置为 HKLM: 驱动器的根目录。

示例 2:设置当前位置并显示该位置

PS C:\> Set-Location -Path "Env:\" -PassThru

Path
----
Env:\

PS Env:\>

此命令将当前位置设置为 Env: 驱动器的根目录。 它使用 PassThru 参数指示 PowerShell 返回表示 Env:\ 位置的 PathInfo 对象。

示例 3:将位置设置为 C: 驱动器中的当前位置

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

第一个命令将位置设置为注册表提供程序中 HKLM: 驱动器的根目录。 第二个命令将位置设置为 FileSystem 提供程序中 C: 驱动器的当前位置。 当驱动器名称在窗体 <DriveName>:(没有反斜杠)中指定时,cmdlet 会将位置设置为 PSDrive 中的当前位置。 若要获取 PSDrive 中的当前位置,请使用 Get-Location -PSDrive <DriveName> 命令。

示例 4:将当前位置设置为命名堆栈

PS C:\> Push-Location -Path 'C:\Program Files\PowerShell\' -StackName "Paths"
PS C:\Program Files\PowerShell\> Set-Location -StackName "Paths"
PS C:\Program Files\PowerShell\> Get-Location -Stack

Path
----
C:\

第一个命令将当前位置添加到“路径”堆栈。 第二个命令使路径位置堆栈成为当前位置堆栈。 第三个命令显示当前位置堆栈中的位置。

*-Location cmdlet 使用当前位置堆栈,除非命令中指定了其他位置堆栈。 有关位置堆栈的信息,请参阅 备注

参数

-LiteralPath

指定位置的路径。 LiteralPath 参数的值与类型完全相同。 不会将任何字符解释为通配符。 如果路径包含转义字符,请将它括在单引号中。 单引号告知 PowerShell 不要将任何字符解释为转义序列。

类型:String
别名:PSPath
Position:Named
默认值:None
必需:True
接受管道输入:True
接受通配符:False

-PassThru

返回一个 PathInfo 对象,该对象代表位置。 默认情况下,此 cmdlet 不生成任何输出。

类型:SwitchParameter
Position:Named
默认值:False
必需:False
接受管道输入:False
接受通配符:False

-Path

指定新工作位置的路径。 如果未提供路径,Set-Location 默认为当前用户的主目录。 使用通配符时,cmdlet 会选择与通配符模式匹配的容器(目录、注册表项、证书存储)。 如果通配符模式与多个容器匹配,则 cmdlet 将返回错误。

类型:String
Position:0
默认值:None
必需:False
接受管道输入:True
接受通配符:True

-StackName

指定此 cmdlet 生成当前位置堆栈的现有位置堆栈名称。 输入位置堆栈名称。 若要指示未命名的默认位置堆栈,请键入 $null 或空字符串("")。

使用此参数不会更改当前位置。 它仅更改 *-Location cmdlet 使用的堆栈。 除非使用 StackName 参数来指定其他堆栈,否则 *-Location cmdlet 在当前堆栈上执行作。 有关位置堆栈的详细信息,请参阅 备注

类型:String
Position:Named
默认值:None
必需:False
接受管道输入:True
接受通配符:False

-UseTransaction

在活动事务中包含该命令。 此参数仅在事务正在进行时有效。 有关详细信息,请参阅 about_Transactions

类型:SwitchParameter
别名:usetx
Position:Named
默认值:False
必需:False
接受管道输入:False
接受通配符:False

输入

String

可以通过管道将包含路径(而不是文本路径)的字符串传递给此 cmdlet。

输出

None

默认情况下,此 cmdlet 不返回任何输出。

PathInfo

PassThru 参数与 PathLiteralPath配合使用时,此 cmdlet 将返回表示新位置的 PathInfo 对象。

PathInfoStack

PassThru 参数用于 StackName时,此 cmdlet 将返回表示新堆栈上下文的 PathInfoStack 对象。

备注

Windows PowerShell 包含以下 Set-Location别名:

  • cd
  • chdir
  • sl

PowerShell 支持每个进程的多个运行空间。 每个 runspace 都有自己的 当前目录。 这与 [System.Environment]::CurrentDirectory不同。 调用 .NET API 或运行本机应用程序而不提供显式目录路径时,此行为可能是一个问题。

即使位置 cmdlet 确实设置了进程范围的当前目录,也不能依赖它,因为其他运行空间可能会随时更改它。 应使用位置 cmdlet 使用特定于当前运行空间的当前工作目录执行基于路径的作。

Set-Location cmdlet 旨在处理任何提供程序公开的数据。 若要列出会话中可用的提供程序,请键入 Get-PSProvider。 有关详细信息,请参阅 about_Providers

堆栈是最后一个先出列表,其中只能访问最近添加的项。 按使用项的顺序将项添加到堆栈中,然后检索它们以反向顺序使用。 PowerShell 允许将提供程序位置存储在位置堆栈中。 PowerShell 创建未命名的默认位置堆栈。 可以创建多个命名位置堆栈。 如果未指定堆栈名称,PowerShell 将使用当前位置堆栈。 默认情况下,未命名的默认位置是当前位置堆栈,但你可以使用 Set-Location cmdlet 更改当前位置堆栈。

若要管理位置堆栈,请使用 *-Location cmdlet,如下所示:

  • 若要将位置添加到位置堆栈,请使用 Push-Location cmdlet。

  • 若要从位置堆栈获取位置,请使用 Pop-Location cmdlet。

  • 若要显示当前位置堆栈中的位置,请使用 Get-Location cmdlet 的 Stack 参数。 若要在命名位置堆栈中显示位置,请使用 Get-LocationStackName 参数。

  • 若要创建新的位置堆栈,请使用 Push-LocationStackName 参数。 如果指定不存在的堆栈,Push-Location 创建堆栈。

  • 若要使位置堆栈成为当前位置堆栈,请使用 Set-LocationStackName 参数。

仅当默认位置堆栈是当前位置堆栈时,才完全可访问未命名的默认位置堆栈。 如果将命名位置堆栈设为当前位置堆栈,则不能再使用 Push-LocationPop-Location cmdlet 从默认堆栈添加或获取项,或使用 Get-Location cmdlet 显示未命名堆栈中的位置。 若要使未命名的堆栈成为当前堆栈,请使用 Set-Location cmdlet 的 StackName 参数,其值为 $null 或空字符串("")。