简短说明
介绍如何创建和使用 PowerShell 配置文件。
详细描述
可以创建 PowerShell 配置文件来自定义环境,并将特定于会话的元素添加到启动的每个 PowerShell 会话。
PowerShell 配置文件是在 PowerShell 启动时运行的脚本。 您可以将配置文件用作登录脚本来自定义环境。 您可以添加命令、别名、函数、变量、管理单元、模块和 PowerShell 驱动器。 您还可以将其他特定于会话的元素添加到配置文件中,以便它们在每个会话中都可用,而无需导入或重新创建它们。
PowerShell 支持多个用户和主机程序的配置文件。 但是,它不会为您创建配置文件。 本主题介绍配置文件,并介绍如何在计算机上创建和维护配置文件。
它介绍如何使用 PowerShell 控制台 (PowerShell.exe) 的 NoProfile 参数在没有任何配置文件的情况下启动 PowerShell。 此外,它还解释了 PowerShell 执行策略对配置文件的影响。
配置文件
PowerShell 支持多个配置文件。 此外,PowerShell 主机程序可以支持自己的特定于主机的配置文件。
例如,PowerShell 控制台支持以下基本配置文件。 配置文件按优先顺序列出。 第一个配置文件具有最高优先级。
| DESCRIPTION | 路径 |
|---|---|
| 所有用户,所有主机 | $PSHOME\Profile.ps1 |
| 所有用户、当前主机 | $PSHOME\Microsoft.PowerShell_profile.ps1 |
| 当前用户、所有主机 | $Home\[My ]Documents\WindowsPowerShell\Profile.ps1 |
| 当前用户、当前主机 | $Home\[我的 ]文档\WindowsPowerShell\ Microsoft.PowerShell_profile.ps1 |
配置文件路径包括以下变量:
-
$PSHOME该变量,用于存储 PowerShell 的安装目录 - 该
$Home变量,用于存储当前用户的主目录
此外,托管 PowerShell 的其他程序可以支持自己的配置文件。 例如,PowerShell 集成脚本环境 (ISE) 支持以下特定于主机的配置文件。
| DESCRIPTION | 路径 |
|---|---|
| 所有用户、当前主机 | $PSHOME\Microsoft.PowerShellISE_profile.ps1 |
| 当前用户、当前主机 | $Home\[我的 ]文档\WindowsPowerShell\ Microsoft.PowerShellISE_profile.ps1 |
在 PowerShell 帮助中,“CurrentUser, Current Host”配置文件是最常称为“您的 PowerShell 配置文件”的配置文件。
$PROFILE 变量
$PROFILE 自动变量存储当前会话中可用的 PowerShell 配置文件的路径。
若要查看配置文件路径,请显示 $PROFILE 变量的值。 还可以在命令中使用 $PROFILE 变量来表示路径。
$PROFILE 变量存储“当前用户、当前主机”配置文件的路径。 其他配置文件保存在 $PROFILE 变量的注释属性中。
例如,$PROFILE 变量在 Windows PowerShell 控制台中具有以下值。
| DESCRIPTION | 名称 |
|---|---|
| 当前用户、当前主机 | $PROFILE |
| 当前用户、当前主机 | $PROFILE.CurrentUserCurrentHost |
| 当前用户、所有主机 | $PROFILE.CurrentUserAllHosts |
| 所有用户、当前主机 | $PROFILE.AllUsersCurrentHost |
| 所有用户,所有主机 | $PROFILE.AllUsersAllHosts |
由于每个用户和每个主机应用程序中 $PROFILE 变量的值发生更改,因此请确保在所使用的每个 PowerShell 主机应用程序中显示配置文件变量的值。
若要查看 $PROFILE 变量的当前值,请键入:
$PROFILE | Get-Member -Type NoteProperty
可以在许多命令中使用 $PROFILE 变量。 例如,以下命令在记事本中打开“当前用户,当前主机”配置文件:
notepad $PROFILE
以下命令确定是否在本地计算机上创建了“所有用户,所有主机”配置文件:
Test-Path -Path $PROFILE.AllUsersAllHosts
如何创建配置文件
若要创建 PowerShell 配置文件,请使用以下命令格式:
if (!(Test-Path -Path <profile-name>)) {
New-Item -ItemType File -Path <profile-name> -Force
}
例如,若要在当前 PowerShell 主机应用程序中为当前用户创建配置文件,请使用以下命令:
if (!(Test-Path -Path $PROFILE)) {
New-Item -ItemType File -Path $PROFILE -Force
}
在此命令中, If 语句可防止您覆盖现有配置文件。 将 <profile-path> 占位符的值替换为要创建的配置文件的路径。
注释
若要在 Windows Vista 和更高版本的 Windows 中创建“所有用户”配置文件,请使用 以管理员 选项启动 PowerShell。
如何编辑配置文件
可以在文本编辑器(如记事本)中打开任何 PowerShell 配置文件。
若要在记事本的当前 PowerShell 主机应用程序中打开当前用户的配置文件,请键入:
notepad $PROFILE
若要打开其他配置文件,请指定配置文件名称。 例如,若要打开所有主机应用程序的所有用户的配置文件,请键入:
notepad $PROFILE.AllUsersAllHosts
若要应用更改,请保存配置文件,然后重启 PowerShell。
如何选择配置文件
如果使用多个主机应用程序,请将所有主机应用程序中使用的项放入 $PROFILE.CurrentUserAllHosts 配置文件中。 将特定于主机应用程序的项(例如,为主机应用程序设置背景色的命令)放在特定于该主机应用程序的配置文件中。
如果你是为许多用户自定义 PowerShell 的管理员,请遵循以下准则:
- 将常用项存储在
$PROFILE.AllUsersAllHosts配置文件中 - 将特定于主机应用程序的项存储在特定于主机应用程序的
$PROFILE.AllUsersCurrentHost配置文件中 - 在用户特定的配置文件中存储特定用户的项
请务必检查主机应用程序文档,了解 PowerShell 配置文件的任何特殊实现。
如何使用配置文件
在 PowerShell 中创建的许多项和运行的大部分命令仅影响当前会话。 结束会话时,会删除这些项。
特定于会话的命令和项包括变量、首选项变量、别名、函数、命令( Set-ExecutionPolicy 除外)以及您添加到会话中的 PowerShell 模块。
若要保存这些项目并使其在所有将来的会话中可用,请将它们添加到 PowerShell 配置文件。
配置文件的另一个常见用途是保存常用函数、别名和变量。 将项保存在配置文件中时,可以在任何适用的会话中使用它们,而无需重新创建它们。
如何启动配置文件
当您打开配置文件时,它是空白的。 但是,可以使用经常使用的变量、别名和命令填充它。
下面是一些入门建议。
添加命令,以便轻松打开您的档案
如果您使用的配置文件不是“当前用户,当前主机”配置文件,则此功能特别有用。 例如,添加以下命令:
function Pro {notepad $PROFILE.CurrentUserAllHosts}
添加列出任何 cmdlet 的别名的函数
function Get-CmdletAlias ($cmdletname) {
Get-Alias |
Where-Object -FilterScript {$_.Definition -like "$cmdletname"} |
Format-Table -Property Definition, Name -AutoSize
}
自定义主机
function Color-Console {
$Host.ui.rawui.backgroundcolor = "white"
$Host.ui.rawui.foregroundcolor = "black"
$hosttime = (Get-ChildItem -Path $PSHOME\PowerShell.exe).CreationTime
$hostversion="$($Host.Version.Major)`.$($Host.Version.Minor)"
$Host.UI.RawUI.WindowTitle = "PowerShell $hostversion ($hosttime)"
Clear-Host
}
Color-Console
添加自定义 PowerShell 提示符
function Prompt
{
$env:COMPUTERNAME + "\" + (Get-Location) + "> "
}
有关 PowerShell 提示符的详细信息,请参阅 about_Prompts。
NoProfile 参数
要在没有配置文件的情况下启动 PowerShell,请使用 PowerShell.exe的 NoProfile 参数,该程序启动 PowerShell。
若要开始,请打开可以启动 PowerShell 的程序,例如 Cmd.exe 或 PowerShell 本身。 还可以在 Windows 中使用“运行”对话框。
类型:
PowerShell -NoProfile
有关 PowerShell.exe参数的完整列表,请键入:
PowerShell -?
配置文件和执行策略
PowerShell 执行策略部分决定是否可以运行脚本并加载配置文件,包括配置文件。 受限 执行策略是默认值。 它阻止所有脚本运行,包括配置文件。 如果使用“受限”策略,则配置文件不会运行,并且不会应用其内容。
Set-ExecutionPolicy 命令集并更改执行策略。 它是适用于所有 PowerShell 会话的少数命令之一,因为该值保存在注册表中。 您不必在打开控制台时设置它,也不必在配置文件中存储 Set-ExecutionPolicy 命令。
配置文件和远程会话
PowerShell 配置文件不会在远程会话中自动运行,因此配置文件添加的命令不会出现在远程会话中。 此外,$PROFILE 自动变量不会在远程会话中填充。
若要在会话中运行配置文件,请使用 Invoke-Command cmdlet。
例如,以下命令从 $s会话中的本地计算机运行“当前用户,当前主机”配置文件。
Invoke-Command -Session $s -FilePath $PROFILE
以下命令从 $s会话中的远程计算机运行“当前用户、当前主机”配置文件。 由于未填充 $PROFILE 变量,因此该命令使用配置文件的显式路径。 我们使用点溯源运算符,以便配置文件在远程计算机上的当前范围内执行,而不是在其自己的范围内执行。
Invoke-Command -Session $s -ScriptBlock {
. "$HOME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"
}
运行此命令后,配置文件添加到会话的命令可在 $s中使用。
另请参阅
Set-ExecutionPolicy(设置执行策略)