Set-Location与SetCurrentDirectory

Bob*_*mer 2 powershell

Powershell之间的区别是什么?

Set-Location "$env:ProgramFiles\My App\"
Run Code Online (Sandbox Code Playgroud)

[System.IO.Directory]::SetCurrentDirectory("$env:ProgramFiles\My App\")
Run Code Online (Sandbox Code Playgroud)

问的原因是我最近有一个脚本用于Add-Type -Path XXX添加对程序集的引用.程序集依赖于与程序集位于同一文件夹中的许多DLL(一些可能在运行时链接而不是加载时间).

所以我想我会将目录更改为该文件夹,以帮助程序集找到所有必需的文件.当我改变目录时,Set-Location我得到了一个错误(一个特定于程序集的错误)抱怨它无法找到所有的DLL.SetCurrentDirectory然而,使用工作.

因此,这两个命令似乎做了不同的事情.我原以为他们是一样的.

use*_*407 6

Set-Location设置PowerShell的当前位置Runspace.PowerShell位置可以指向任何PowerShell提供程序,例如Certificate,RegistryWSMan.一个进程可以有多个活动的PowerShell Runspace,每个进程都有自己的当前位置,并且所有这些都可以彼此不同.

[System.IO.Directory]::SetCurrentDirectory设置进程的当前工作目录.进程只有一个当前工作目录,它必须指向文件系统.它不能指向注册表或其他东西.