确定安装和使用 Windows PowerShell 的因素
使用 PowerShell 管理和自动执行管理任务时,需要考虑以下几个注意事项,包括:
- 通过 Windows PowerShell 并行安装和使用 PowerShell。
- 使用管理凭据运行 PowerShell。
- 在 PowerShell 中标识和修改执行策略。
通过 Windows PowerShell 并行安装和使用 PowerShell
根据 Windows 操作系统版本,组织的计算机可能运行不同版本的 PowerShell。 有时,这些混合版本环境是不允许安装较新 PowerShell 版本的组织策略的结果。 它们也可能是软件产品(尤其是服务器软件)与特定 PowerShell 版本兼容的结果。
如果安装最新版本的 PowerShell,则最终会在系统上安装多个 PowerShell 版本。 例如,PowerShell 7 旨在与 Windows PowerShell 5.1 共存,将安装到新目录,并通过 Windows PowerShell 启用并行执行。
与 Windows PowerShell 相比,安装最新版本的 PowerShell 会产生以下结果:
- 独立的安装路径和可执行文件名。 Windows PowerShell 5.1 安装在
$env:WINDIR\System32\WindowsPowerShell\v1.0中。 PowerShell 7 安装在$env:ProgramFiles\PowerShell\7中。 新位置会添加到 PATH 中,这样就能同时运行 Windows PowerShell 5.1 和 PowerShell 7 了。 在 Windows PowerShell 中,PowerShell 可执行文件名为powershell.exe。 在版本 6 及更高版本中,可执行文件名为pwsh.exe。 使用新名称,可以轻松支持两个版本的并行执行。 - 独立的 PSModulePath。 默认情况下,Windows PowerShell 和 PowerShell 7 将模块存储在不同的位置。 PowerShell 7 将这些位置合并到
$Env:PSModulePath环境变量中。 按名称导入模块时,PowerShell 会检查$Env:PSModulePath指定的位置。 此功能使 PowerShell 7 可同时加载核心模块和桌面模块。 - 每个版本的独立配置文件。 PowerShell 配置文件是在 PowerShell 启动时运行的脚本。 此脚本通过添加命令、别名、函数、变量、模块和 PowerShell 驱动器来自定义 PowerShell 环境。 在 Windows PowerShell 5.1 中,配置文件的位置为
$HOME\Documents\WindowsPowerShell。 在 PowerShell 7 中,配置文件的位置为$HOME\Documents\PowerShell。 - 独立的事件日志。 Windows PowerShell 和 PowerShell 7 记录事件来分隔 Windows 事件日志。
查看 PowerShell 会话时,请务必确定所使用的版本。 若要确定当前版本,请在 PowerShell 控制台中输入 $PSVersionTable,然后选择 Enter。 PowerShell 显示各种组件的版本号,包括主 PowerShell 版本号。
使用管理凭据运行 PowerShell
在 64 位操作系统上,PowerShell 主机应用程序在 64 位 (x64) 和 32 位 (x86) 版本中均可用。 使用 Windows PowerShell 时,你将使用在“开始”菜单中显示为“Windows PowerShell”或“Windows PowerShell ISE”的 64 位版本。 32 位版本提供与本地安装的 32 位 shell 扩展的兼容性。 它们在“开始”菜单中显示为“Windows PowerShell (x86)”或“Windows PowerShell ISE (x86)”。 打开 Windows PowerShell 后,应用程序窗口的标题栏将反映与“开始”菜单中相同的名称。 确保为要执行的任务打开相应的版本。
在 32 位操作系统上,PowerShell 的主机应用程序仅在 32 位版本中可用。 使用 Windows PowerShell 时,你会注意到图标和窗口标题栏没有 (x86) 名称。 相反,它们只是在“开始”菜单中显示为“Windows PowerShell”和“Windows PowerShell ISE”。
如果打算使用 PowerShell 在启用了用户帐户控制 (UAC) 的计算机上执行管理任务,则可能必须执行额外的步骤才能使用完整的管理凭据运行 PowerShell cmdlet。 为此,请右键单击或激活应用程序图标的上下文菜单,然后选择“以管理员身份运行”。 使用管理凭据运行 PowerShell 时,主机应用程序的窗口标题栏将包含“管理员”前缀。
在 PowerShell 中标识和修改执行策略
PowerShell 中的执行策略旨在最大程度地减少用户无意中运行 PowerShell 脚本的可能性。 你可以将其视为一项安全功能,用于控制 PowerShell 加载配置文件和运行脚本的条件。 此功能有助于防止恶意脚本的执行。
重要
PowerShell 中的执行策略不是限制用户操作的安全系统。 例如,如果用户无法运行脚本,则可以通过在命令行中输入脚本内容来轻松绕过策略。
若要标识当前 PowerShell 会话的有效执行策略,请使用以下 cmdlet:
Get-ExecutionPolicy
可以配置以下策略设置:
- AllSigned。 限制所有已签名脚本的脚本执行。 此设置要求所有脚本都由受信任的发布者签名,包括在本地计算机上编写的脚本。 它会在运行来自尚未分类为受信任或不受信任的发布者的脚本之前提示你。 但是,验证脚本的签名并不能消除该脚本是恶意脚本的可能性。 它只是提供额外的检查,以最大限度地减少这种可能性。
- 默认值。 设置默认执行策略,对于 Windows 客户端,为“Restricted”,对于 Windows Server 则为“RemoteSigned”。
- RemoteSigned。 这是 Windows Server 计算机的默认执行策略。 脚本可以运行,但该策略要求受信任的发布者对从 Internet 下载的脚本和配置文件进行数字签名。 此设置不需要对在本地计算机上编写的脚本进行数字签名。
- 受限。 这是 Windows 客户端计算机的默认执行策略。 它允许运行单个命令,但不允许运行脚本。
- 不受限制。 这是非 Windows 计算机的默认执行策略,你无法更改该策略。 它允许运行未签名的脚本。 此策略在运行并非来自本地 Intranet 区域的脚本和配置文件之前向用户发出警告。
- 未定义。 指示当前范围中未设置执行策略。 如果所有范围中的执行策略都是“Undefined”,则对于 Windows 客户端,有效执行策略为“Restricted”,对于 Windows Server 为“RemoteSigned”。
若要更改 PowerShell 中的执行策略,请使用以下命令:
Set-ExecutionPolicy -ExecutionPolicy <PolicyName>