Windows-PowerShell-prompt

  • 导航 (返回顶部)
    • [1. about_Prompts](#1. about_Prompts)

      • [1.1 获取 prompt 函数](#1.1 获取 prompt 函数)
      • [1.2 获取 prompt 脚本](#1.2 获取 prompt 脚本)
      • [1.3 默认提示符](#1.3 默认提示符)
      • [1.4 内置提示符](#1.4 内置提示符)
    • [2. 自定义当前会话的提示符](#2. 自定义当前会话的提示符)

      • [2.1 几个简单的例子](#2.1 几个简单的例子)
      • [2.2 检测是否管理员运行](#2.2 检测是否管理员运行)
      • [2.3 显示历史记录ID](#2.3 显示历史记录ID)
      • [2.4 随机更改颜色的提示符](#2.4 随机更改颜色的提示符)
    • [3. 自定义配置文件](#3. 自定义配置文件)

      • [3.1 about_Profiles](#3.1 about_Profiles)
      • [3.2 配置文件类型和位置](#3.2 配置文件类型和位置)
      • [3.3 PROFILE 变量](#3.3 PROFILE 变量)
      • [3.4 创建配置文件](#3.4 创建配置文件)
      • [3.5 编辑配置文件](#3.5 编辑配置文件)
      • [3.6 修改执行策略-允许本地脚本运行](#3.6 修改执行策略-允许本地脚本运行)
      • [3.7 NoProfile 参数](#3.7 NoProfile 参数)
      • [3.8 添加更多个性化设置](#3.8 添加更多个性化设置)
    • [4. 转载一个不错的配置](#4. 转载一个不错的配置)

      #1. about_Prompts
      1.1 获取 prompt 函数
      1.2 获取 prompt 脚本
      1.3 默认提示符
      1.4 内置提示符
      2. 自定义当前会话的提示符
      2.1 几个简单的例子
      2.2 检测是否管理员运行
      2.3 显示历史记录ID
      2.4 随机更改颜色的提示符
      3. 自定义配置文件
      3.1 about_Profiles
      3.2 配置文件类型和位置
      3.3 PROFILE 变量 3.4 创建配置文件 3.5 编辑配置文件 3.6 修改执行策略-允许本地脚本运行 3.7 NoProfile 参数 3.8 添加更多个性化设置 4. 转载一个不错的配置 #1. about_Prompts 1.1 获取 prompt 函数 1.2 获取 prompt 脚本 1.3 默认提示符 1.4 内置提示符 2. 自定义当前会话的提示符 2.1 几个简单的例子 2.2 检测是否管理员运行 2.3 显示历史记录ID 2.4 随机更改颜色的提示符 3. 自定义配置文件 3.1 about_Profiles 3.2 配置文件类型和位置 3.3 PROFILE 变量
      3.4 创建配置文件
      3.5 编辑配置文件
      3.6 修改执行策略-允许本地脚本运行
      3.7 NoProfile 参数
      3.8 添加更多个性化设置
      4. 转载一个不错的配置
      #1. about_Prompts
      1.1 获取 prompt 函数
      1.2 获取 prompt 脚本
      1.3 默认提示符
      1.4 内置提示符
      2. 自定义当前会话的提示符
      2.1 几个简单的例子
      2.2 检测是否管理员运行
      2.3 显示历史记录ID
      2.4 随机更改颜色的提示符
      3. 自定义配置文件
      3.1 about_Profiles
      3.2 配置文件类型和位置
      3.3 PROFILE 变量 3.4 创建配置文件 3.5 编辑配置文件 3.6 修改执行策略-允许本地脚本运行 3.7 NoProfile 参数 3.8 添加更多个性化设置 4. 转载一个不错的配置 #1. about_Prompts 1.1 获取 prompt 函数 1.2 获取 prompt 脚本 1.3 默认提示符 1.4 内置提示符 2. 自定义当前会话的提示符 2.1 几个简单的例子 2.2 检测是否管理员运行 2.3 显示历史记录ID 2.4 随机更改颜色的提示符 3. 自定义配置文件 3.1 about_Profiles 3.2 配置文件类型和位置 3.3 PROFILE 变量
      3.4 创建配置文件
      3.5 编辑配置文件
      3.6 修改执行策略-允许本地脚本运行
      3.7 NoProfile 参数
      3.8 添加更多个性化设置
      4. 转载一个不错的配置
      #1. about_Prompts
      1.1 获取 prompt 函数
      1.2 获取 prompt 脚本
      1.3 默认提示符
      1.4 内置提示符
      2. 自定义当前会话的提示符
      2.1 几个简单的例子
      2.2 检测是否管理员运行
      2.3 显示历史记录ID
      2.4 随机更改颜色的提示符
      3. 自定义配置文件
      3.1 about_Profiles
      3.2 配置文件类型和位置
      3.3 PROFILE 变量 3.4 创建配置文件 3.5 编辑配置文件 3.6 修改执行策略-允许本地脚本运行 3.7 NoProfile 参数 3.8 添加更多个性化设置 4. 转载一个不错的配置 #1. about_Prompts 1.1 获取 prompt 函数 1.2 获取 prompt 脚本 1.3 默认提示符 1.4 内置提示符 2. 自定义当前会话的提示符 2.1 几个简单的例子 2.2 检测是否管理员运行 2.3 显示历史记录ID 2.4 随机更改颜色的提示符 3. 自定义配置文件 3.1 about_Profiles 3.2 配置文件类型和位置 3.3 PROFILE 变量
      3.4 创建配置文件
      3.5 编辑配置文件
      3.6 修改执行策略-允许本地脚本运行
      3.7 NoProfile 参数
      3.8 添加更多个性化设置
      4. 转载一个不错的配置
      #1. about_Prompts
      1.1 获取 prompt 函数
      1.2 获取 prompt 脚本
      1.3 默认提示符
      1.4 内置提示符
      2. 自定义当前会话的提示符
      2.1 几个简单的例子
      2.2 检测是否管理员运行
      2.3 显示历史记录ID
      2.4 随机更改颜色的提示符
      3. 自定义配置文件
      3.1 about_Profiles
      3.2 配置文件类型和位置
      3.3 PROFILE 变量 3.4 创建配置文件 3.5 编辑配置文件 3.6 修改执行策略-允许本地脚本运行 3.7 NoProfile 参数 3.8 添加更多个性化设置 4. 转载一个不错的配置 #1. about_Prompts 1.1 获取 prompt 函数 1.2 获取 prompt 脚本 1.3 默认提示符 1.4 内置提示符 2. 自定义当前会话的提示符 2.1 几个简单的例子 2.2 检测是否管理员运行 2.3 显示历史记录ID 2.4 随机更改颜色的提示符 3. 自定义配置文件 3.1 about_Profiles 3.2 配置文件类型和位置 3.3 PROFILE 变量
      3.4 创建配置文件
      3.5 编辑配置文件
      3.6 修改执行策略-允许本地脚本运行
      3.7 NoProfile 参数
      3.8 添加更多个性化设置
      4. 转载一个不错的配置
      #1. about_Prompts
      1.1 获取 prompt 函数
      1.2 获取 prompt 脚本
      1.3 默认提示符
      1.4 内置提示符
      2. 自定义当前会话的提示符
      2.1 几个简单的例子
      2.2 检测是否管理员运行
      2.3 显示历史记录ID
      2.4 随机更改颜色的提示符
      3. 自定义配置文件
      3.1 about_Profiles
      3.2 配置文件类型和位置
      3.3 PROFILE 变量 3.4 创建配置文件 3.5 编辑配置文件 3.6 修改执行策略-允许本地脚本运行 3.7 NoProfile 参数 3.8 添加更多个性化设置 4. 转载一个不错的配置 #1. about_Prompts 1.1 获取 prompt 函数 1.2 获取 prompt 脚本 1.3 默认提示符 1.4 内置提示符 2. 自定义当前会话的提示符 2.1 几个简单的例子 2.2 检测是否管理员运行 2.3 显示历史记录ID 2.4 随机更改颜色的提示符 3. 自定义配置文件 3.1 about_Profiles 3.2 配置文件类型和位置 3.3 PROFILE 变量
      3.4 创建配置文件
      3.5 编辑配置文件
      3.6 修改执行策略-允许本地脚本运行
      3.7 NoProfile 参数
      3.8 添加更多个性化设置
      4. 转载一个不错的配置
      #1. about_Prompts
      1.1 获取 prompt 函数
      1.2 获取 prompt 脚本
      1.3 默认提示符
      1.4 内置提示符
      2. 自定义当前会话的提示符
      2.1 几个简单的例子
      2.2 检测是否管理员运行
      2.3 显示历史记录ID
      2.4 随机更改颜色的提示符
      3. 自定义配置文件
      3.1 about_Profiles
      3.2 配置文件类型和位置
      3.3 PROFILE 变量 3.4 创建配置文件 3.5 编辑配置文件 3.6 修改执行策略-允许本地脚本运行 3.7 NoProfile 参数 3.8 添加更多个性化设置 4. 转载一个不错的配置 #1. about_Prompts 1.1 获取 prompt 函数 1.2 获取 prompt 脚本 1.3 默认提示符 1.4 内置提示符 2. 自定义当前会话的提示符 2.1 几个简单的例子 2.2 检测是否管理员运行 2.3 显示历史记录ID 2.4 随机更改颜色的提示符 3. 自定义配置文件 3.1 about_Profiles 3.2 配置文件类型和位置 3.3 PROFILE 变量
      3.4 创建配置文件
      3.5 编辑配置文件
      3.6 修改执行策略-允许本地脚本运行
      3.7 NoProfile 参数
      3.8 添加更多个性化设置
      4. 转载一个不错的配置
      #1. about_Prompts
      1.1 获取 prompt 函数
      1.2 获取 prompt 脚本
      1.3 默认提示符
      1.4 内置提示符
      2. 自定义当前会话的提示符
      2.1 几个简单的例子
      2.2 检测是否管理员运行
      2.3 显示历史记录ID
      2.4 随机更改颜色的提示符
      3. 自定义配置文件
      3.1 about_Profiles
      3.2 配置文件类型和位置
      3.3 PROFILE 变量 3.4 创建配置文件 3.5 编辑配置文件 3.6 修改执行策略-允许本地脚本运行 3.7 NoProfile 参数 3.8 添加更多个性化设置 4. 转载一个不错的配置 #1. about_Prompts 1.1 获取 prompt 函数 1.2 获取 prompt 脚本 1.3 默认提示符 1.4 内置提示符 2. 自定义当前会话的提示符 2.1 几个简单的例子 2.2 检测是否管理员运行 2.3 显示历史记录ID 2.4 随机更改颜色的提示符 3. 自定义配置文件 3.1 about_Profiles 3.2 配置文件类型和位置 3.3 PROFILE 变量
      3.4 创建配置文件
      3.5 编辑配置文件
      3.6 修改执行策略-允许本地脚本运行
      3.7 NoProfile 参数
      3.8 添加更多个性化设置
      4. 转载一个不错的配置
      #1. about_Prompts
      1.1 获取 prompt 函数
      1.2 获取 prompt 脚本
      1.3 默认提示符
      1.4 内置提示符
      2. 自定义当前会话的提示符
      2.1 几个简单的例子
      2.2 检测是否管理员运行
      2.3 显示历史记录ID
      2.4 随机更改颜色的提示符
      3. 自定义配置文件
      3.1 about_Profiles
      3.2 配置文件类型和位置
      3.3 PROFILE 变量 3.4 创建配置文件 3.5 编辑配置文件 3.6 修改执行策略-允许本地脚本运行 3.7 NoProfile 参数 3.8 添加更多个性化设置 4. 转载一个不错的配置 #1. about_Prompts 1.1 获取 prompt 函数 1.2 获取 prompt 脚本 1.3 默认提示符 1.4 内置提示符 2. 自定义当前会话的提示符 2.1 几个简单的例子 2.2 检测是否管理员运行 2.3 显示历史记录ID 2.4 随机更改颜色的提示符 3. 自定义配置文件 3.1 about_Profiles 3.2 配置文件类型和位置 3.3 PROFILE 变量
      3.4 创建配置文件
      3.5 编辑配置文件
      3.6 修改执行策略-允许本地脚本运行
      3.7 NoProfile 参数
      3.8 添加更多个性化设置
      4. 转载一个不错的配置
      #1. about_Prompts
      1.1 获取 prompt 函数
      1.2 获取 prompt 脚本
      1.3 默认提示符
      1.4 内置提示符
      2. 自定义当前会话的提示符
      2.1 几个简单的例子
      2.2 检测是否管理员运行
      2.3 显示历史记录ID
      2.4 随机更改颜色的提示符
      3. 自定义配置文件
      3.1 about_Profiles
      3.2 配置文件类型和位置
      3.3 PROFILE 变量 3.4 创建配置文件 3.5 编辑配置文件 3.6 修改执行策略-允许本地脚本运行 3.7 NoProfile 参数 3.8 添加更多个性化设置 4. 转载一个不错的配置 #1. about_Prompts 1.1 获取 prompt 函数 1.2 获取 prompt 脚本 1.3 默认提示符 1.4 内置提示符 2. 自定义当前会话的提示符 2.1 几个简单的例子 2.2 检测是否管理员运行 2.3 显示历史记录ID 2.4 随机更改颜色的提示符 3. 自定义配置文件 3.1 about_Profiles 3.2 配置文件类型和位置 3.3 PROFILE 变量
      3.4 创建配置文件
      3.5 编辑配置文件
      3.6 修改执行策略-允许本地脚本运行
      3.7 NoProfile 参数
      3.8 添加更多个性化设置
      4. 转载一个不错的配置
      #1. about_Prompts
      1.1 获取 prompt 函数
      1.2 获取 prompt 脚本
      1.3 默认提示符
      1.4 内置提示符
      2. 自定义当前会话的提示符
      2.1 几个简单的例子
      2.2 检测是否管理员运行
      2.3 显示历史记录ID
      2.4 随机更改颜色的提示符
      3. 自定义配置文件
      3.1 about_Profiles
      3.2 配置文件类型和位置
      3.3 PROFILE 变量 3.4 创建配置文件 3.5 编辑配置文件 3.6 修改执行策略-允许本地脚本运行 3.7 NoProfile 参数 3.8 添加更多个性化设置 4. 转载一个不错的配置 #1. about_Prompts 1.1 获取 prompt 函数 1.2 获取 prompt 脚本 1.3 默认提示符 1.4 内置提示符 2. 自定义当前会话的提示符 2.1 几个简单的例子 2.2 检测是否管理员运行 2.3 显示历史记录ID 2.4 随机更改颜色的提示符 3. 自定义配置文件 3.1 about_Profiles 3.2 配置文件类型和位置 3.3 PROFILE 变量
      3.4 创建配置文件
      3.5 编辑配置文件
      3.6 修改执行策略-允许本地脚本运行
      3.7 NoProfile 参数
      3.8 添加更多个性化设置
      4. 转载一个不错的配置

1. about_Prompts

https://learn.microsoft.com/zh-cn/powershell/module/microsoft.powershell.core/about/about_prompts?view=powershell-7.5
PowerShell 具有内置 prompt 函数。 可以在 PowerShell 配置文件脚本中定义自定义 prompt 函数。
function prompt { <function-body> }
prompt 函数必须返回一个对象。 最佳做法是返回一个字符串或格式化为字符串的对象。 建议最大长度是 80 个字符。
PS C:\Windows\system32> function prompt {"Hello, World > "}
Hello, World >

1.1 获取 prompt 函数

若要获取 prompt 函数,请在 Function 驱动器中使用 Get-Command cmdlet 或使用 Get-Item cmdlet。
Get-Command prompt
CommandType Name Version Source
Function prompt
Get-Item Function:prompt
CommandType Name Version Source
Function prompt

1.2 获取 prompt 脚本

若要获取设置提示符的值的脚本,请使用函数的 ScriptBlockprompt 属性。
PS C:\Windows\system32> (Get-Command prompt).ScriptBlock
...
与所有函数一样,prompt 函数存储在 Function: 驱动器中。 若要显示创建当前 prompt 函数的脚本,请键入:
PS C:\Windows\system32> (Get-Item Function:prompt).ScriptBlock
...

1.3 默认提示符

仅当 prompt 函数生成错误或未返回对象时,才会显示默认提示符。
默认 PowerShell 提示符为:
PS>
例如,以下命令将 prompt 函数设置为 null,这是无效的。 因此会显示默认提示符。 **function prompt {null}**
PS>
因为 PowerShell 附带内置提示符,所以通常不会看到默认提示符。

1.4 内置提示符

PowerShell 包含内置 prompt 函数。

复制代码
function prompt {
  "PS $($ExecutionContext.SessionState.Path.CurrentLocation)$('>' * ($NestedPromptLevel + 1)) ";
  # .Link
  # https://go.microsoft.com/fwlink/?LinkID=225750
  # .ExternalHelp System.Management.Automation.dll-help.xml
}

该函数使用 Test-Path cmdlet 测试 $PSDebugContext 自动变量是否具有值。

  • 如果 $PSDebugContext 具有值,则你在调试模式下运行,且 [DBG]: 已添加到提示符,如下所示:
    • DBG\]: PS C:\\ps-test\>

    • PS C:\ps-test>
  • 如果处于嵌套提示符中,则该函数会将两个尖括号 (>>) 添加到提示符。
  • 如果 $NestedPromptLevel 自动变量的值大于 0,则处于嵌套提示符中。
  • 例如,在嵌套提示符中进行调试时,提示符类似于以下提示符:
    • DBG\] PS C:\\ps-test\>\>\>

若要自定义提示符,请编写新的 prompt 函数。 该函数不受保护,因此可以覆盖它。
若要编写 prompt 函数,请键入以下内容:
function prompt { }
随后在大括号之间,输入创建提示符的命令或字符串。

2.1 几个简单的例子

例如,下面的提示符包含计算机名称:
PS C:\Windows\system32> function prompt {"PS [Env:COMPUTERNAME\]\> "}** PS \[TOMPC\]\> 下面的 prompt 函数包含当前日期和时间: PS \[TOMPC\]\> **function prompt {"(Get-Date)> "}
12/11/2025 20:45:35>
路径+日期
function prompt {"(Get-Location) (Get-Date)> "}
格式化后的时间+路径
function prompt {"[ (Get-Date -Format 'HH:mm:ss') \] (Get-Location) >"}

2.2 检测是否管理员运行

还可以更改默认 prompt 函数:
例如,以下修改后的 prompt 函数在提升的会话中运行时,会将 [ADMIN]: 添加到内置的 PowerShell 提示符。

复制代码
function prompt {
  $identity = [Security.Principal.WindowsIdentity]::GetCurrent()
  $principal = [Security.Principal.WindowsPrincipal] $identity
  $adminRole = [Security.Principal.WindowsBuiltInRole]::Administrator

$(if (Test-Path Variable:/PSDebugContext) { '[DBG]: ' }
    elseif($principal.IsInRole($adminRole)) { "[ADMIN]: " }
    else { '' }
  ) + 'PS ' + $(Get-Location) +
    $(if ($NestedPromptLevel -ge 1) { '>>' }) + '> '
}

使用"以管理员身份运行"选项启动 PowerShell 时,会显示类似于以下提示符的提示符:

ADMIN\]: PS C:\\Windows\\system32\> ### 2.3 显示历史记录ID 以下 prompt 函数显示下一个命令的历史记录 ID。 若要查看命令历史记录,请使用: Get-History function prompt { # The at sign creates an array in case only one history item exists. $history = @(Get-History) if($history.Count -gt 0) { $lastItem = $history[$history.Count - 1] $lastId = $lastItem.Id } $nextCommand = $lastId + 1 $currentDirectory = Get-Location "PS: $nextCommand $currentDirectory >" } PS: 7 C:\\Windows\\system32 \> PS: 7 C:\\Windows\\system32\> **get-history** Id CommandLine -- ----------- 1 (Get-Item Function:prompt).ScriptBlock 2 Get-Location 3 function prompt {"PS \[$Env:COMPUTERNAME\]\> "} 4 function prompt {"$(Get-Date)\> "} 5 function prompt {... 6 function prompt {... PS: 8 C:\\Windows\\system32 \> ### 2.4 随机更改颜色的提示符 以下提示符使用 Write-Host 和 Get-Random cmdlet 创建随机更改颜色的提示符。 因为 Write-Host 会写入当前主机应用程序,但不会返回对象,所以此函数包含 return 语句。 如果没有该语句,则 PowerShell 会使用默认提示符 PS\>。 function prompt { $color = Get-Random -Min 1 -Max 16 Write-Host ("PS " + $(Get-Location) +">") -NoNewline -ForegroundColor $Color return " " } PS C:\\Windows\\system32\> ## 3. 自定义配置文件 ### 3.1 about_Profiles 与任何函数一样,prompt 函数仅存在于当前会话中。如前一章的例子。 PowerShell 配置文件是在 PowerShell 启动时运行的脚本。 * 可以使用配置文件作为启动脚本来自定义环境。 * 可以将如前一章的例子都添加到配置文件中。 * 可以添加命令、别名、函数、变量、模块、PowerShell 驱动器等。 * 还可以将其他特定于会话的元素添加到配置文件中,以便在每个会话中都可用,而无需导入或重新创建它们。 PowerShell 支持多个用户和主机程序的配置文件。 **但是,它不会为你创建配置文件。** ### 3.2 配置文件类型和位置 PowerShell 支持多个范围限定为用户和 PowerShell 主机的配置文件。 你可以在计算机上拥有任何或全部这些配置文件。 PowerShell 控制台支持以下基本配置文件。 这些文件路径是默认位置。 * 所有用户、所有主机 AllUsersAllHosts * * Windows- $PSHOME\\Profile.ps1 * Linux - /opt/microsoft/powershell/7/profile.ps1 * macOS - /usr/local/microsoft/powershell/7/profile.ps1 * 所有用户,当前主机 * * Windows- $PSHOME\\Microsoft.PowerShell_profile.ps1 * Linux - /opt/microsoft/powershell/7/Microsoft.PowerShell_profile.ps1 * macOS - /usr/local/microsoft/powershell/7/Microsoft.PowerShell_profile.ps1 * 当前用户、所有主机 * * Windows- $HOME\\Documents\\PowerShell\\Profile.ps1 * Linux - \~/.config/powershell/profile.ps1 * macOS - \~/.config/powershell/profile.ps1 * 当前用户,当前主机 CurrentUserCurrentHost * * Windows- $HOME\\Documents\\PowerShell\\Microsoft.PowerShell_profile.ps1 * Linux - \~/.config/powershell/Microsoft.PowerShell_profile.ps1 * macOS - \~/.config/powershell/Microsoft.PowerShell_profile.ps1 配置文件脚本按列出的顺序执行。 这意味着, * AllUsersAllHosts 配置文件中所做的更改可由任何其他配置文件脚本重写。 * CurrentUserCurrentHost 配置文件始终最后运行。 在 PowerShell 帮助中,CurrentUserCurrentHost 最常称为 PowerShell 配置文件。 托管 PowerShell 的其他程序可以支持自己的配置文件。 例如,Visual Studio Code (VS Code) 支持以下特定于主机的配置文件。 * 所有用户,当前主机 - $PSHOME\\Microsoft.VSCode_profile.ps1 * 当前用户、当前主机 - $HOME\\Documents\\PowerShell\\Microsoft.VSCode_profile.ps1 配置文件路径包括以下变量: * $PSHOME 变量存储 PowerShell 的安装目录 * $HOME 变量存储当前用户的主目录 ### 3.3 $PROFILE 变量 **$PROFILE** D:\\Tom\\Documents\\WindowsPowerShell\\Microsoft.PowerShell_profile.ps1 $PROFILE 自动变量存储当前会话中可用的 PowerShell 配置文件的路径。 若要查看配置文件路径,请显示 $PROFILE 变量的值。 还可以在命令中使用 $PROFILE 变量来表示路径。 $PROFILE 变量存储"当前用户、当前主机"配置文件的路径。 其他配置文件保存在 $PROFILE 变量的注释属性中。 例如,$PROFILE 变量在 Windows PowerShell 控制台中具有以下值。 * 当前用户、当前主机 - $PROFILE * 当前用户、当前主机 - $PROFILE.CurrentUserCurrentHost * 当前用户、所有主机 - $PROFILE.CurrentUserAllHosts * 所有用户、当前主机 - $PROFILE.AllUsersCurrentHost * 所有用户、所有主机 - $PROFILE.AllUsersAllHosts 由于每个用户和每个主机应用程序中 $PROFILE 变量的值发生更改,因此请确保在所使用的每个 PowerShell 主机应用程序中显示配置文件变量的值。 若要查看 $PROFILE 变量的当前值,请键入: **$PROFILE \| Select-Object \*** AllUsersAllHosts : C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\profile.ps1 AllUsersCurrentHost : C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\Microsoft.PowerShell_profile.ps1 CurrentUserAllHosts : D:\\Tom\\Documents\\WindowsPowerShell\\profile.ps1 CurrentUserCurrentHost : D:\\Tom\\Documents\\WindowsPowerShell\\Microsoft.PowerShell_profile.ps1 Length : 67 PS C:\\Windows\\system32\> 可以在许多命令中使用 $PROFILE 变量。 例如,以下命令在记事本中打开"当前用户,当前主机"配置文件: **notepad $PROFILE** **$PROFILE** D:\\Tom\\Documents\\WindowsPowerShell\\Microsoft.PowerShell_profile.ps1 以下命令确定是否在本地计算机上创建了"所有用户,所有主机"配置文件: **Test-Path -Path $PROFILE.AllUsersAllHosts** FALSE ### 3.4 创建配置文件 若要创建 PowerShell 配置文件,请使用以下命令格式: if (!(Test-Path -Path \)) { New-Item -ItemType File -Path \ -Force } 例如,若要在当前 PowerShell 主机应用程序中为当前用户创建配置文件,请使用以下命令: **if (!(Test-Path -Path $PROFILE)) { New-Item -ItemType File -Path $PROFILE -Force }** 目录: D:\\Tom\\Documents\\WindowsPowerShell Mode LastWriteTime Length Name -a---- 2025/12/11 21:10 0 Microsoft.PowerShell_profile.ps1 在此命令中,if 语句阻止覆盖现有配置文件。 将 $PROFILE 变量的值替换为要创建的配置文件的路径。 创建所有用户所有主机的配置文件 **if (!(Test-Path -Path $PROFILE.AllUsersAllHosts)) { New-Item -ItemType File -Path $PROFILE.AllUsersAllHosts -Force }** 目录: C:\\Windows\\System32\\WindowsPowerShell\\v1.0 Mode LastWriteTime Length Name -a---- 2025/12/12 0:12 0 profile.ps1 ### 3.5 编辑配置文件 可以在文本编辑器(如记事本)中打开任何 PowerShell 配置文件。 若要在记事本的当前 PowerShell 主机应用程序中打开当前用户的配置文件,请键入: PS C:\\Windows\\system32\> **notepad $PROFILE** 若要打开其他配置文件,请指定配置文件名称。 例如,若要打开所有主机应用程序的所有用户的配置文件,请键入: **notepad $PROFILE.AllUsersAllHosts** 先来个简单的配置,将以下代码复制到配置文件中。会显示时间和当前路径。 **function prompt {"\[ $(Get-Date -Format 'HH:mm:ss') \] $(Get-Location) \>"}** 若要应用更改,保存配置文件。 * 然后重启 PowerShell, * 或者(. $Profile )重新加载配置文件。 类似 linux 环境下的 source 命令。在 Powershell 中,使用点号 . 来重新加载指定的 ps1 文件。 由于 $Profile 变量保存了 ps1 文件的绝对路径,所以可以用下面的命令使改动实时生效。 **. $Profile** *无法加载文件 D:\\Tom\\Documents\\WindowsPowerShell\\Microsoft.PowerShell_profile.ps1,因为在此系统上禁止运行脚本。* ... 由于执行策略的默认设置是禁止所有脚本运行的,所有普通用户到这一步,加载配置文件时就会报错。 ### 3.6 修改执行策略-允许本地脚本运行 查看当前执行策略 **Get-ExecutionPolicy** Restricted 为当前用户设置执行策略,允许运行本地脚本。 **Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser** 再次查看当前执行策略 **Get-ExecutionPolicy** RemoteSigned 然后再尝试加载脚本: **. $Profile** 理论上应该会成功了。关闭会话,重新打开新的PowerShell,配置文件依然生效。 ### 3.7 NoProfile 参数 设置的配置文件,那么每次打开都会加载相关自定义的内容。 若想回到无配置的状态,不必删除配置,可以用如下命令: **powershell -NoProfile** 更多参数,请看帮助: **Powershell -?** ### 3.8 添加更多个性化设置 可以在 Windows 中使用 notepad.exe,或 VS Code。在 Linux 中使用 vi,或任何其他文本编辑器。 **code $PROFILE** **notepad $PROFILE** 以下配置文件脚本包含许多自定义项的示例。 具体代码在如下页面里,微软网站提供的参考,直接复制运行可能会报错。有兴趣的可以自己研究研究。 此配置脚本提供以下个性化自定义的示例: * 为其它根注册表蜂巢添加两个新的 PSDrive。 * * * 在提升的会话中运行时,创建一个 自定义提示 ,该提示会更改。 * 配置 PSReadLine 并添加密钥绑定。 颜色设置使用 $PSStyle 功能定义 ANSI 颜色设置。 * * * 添加 dotnet CLI 工具的命令行自动补全功能。该工具提供参数来帮助解析命令行参数。 Register-ArgumentCompleter 的脚本块使用该功能提供选项卡完成。 * * * PowerShell-Docs 风格指南 ## 4. 转载一个不错的配置 该文章分享了完整的脚本代码,包含注释。文章还对每一处做了详细的说明。 执行效果如图: ![PS.ps1](https://i-blog.csdnimg.cn/img_convert/21cf7e832bf77f4acc9a36ec299e9388.png) 包含功能: * 判断是否为管理员权限; * 当前用户名; * 上一条命令完成后的时间; * 当前路径,然后换行; * 上一条命令运行的时间,秒数或分钟数。 可以根据个人喜好增减或调整顺序。 补充,可以添加一行: cd 目录, 修改初始路径。 function prompt { #Assign Windows Title Text $host.ui.RawUI.WindowTitle = "Current Folder: $pwd" #Configure current user, current folder and date outputs $CmdPromptCurrentFolder = Split-Path -Path $pwd -Leaf $CmdPromptUser = [Security.Principal.WindowsIdentity]::GetCurrent(); $Date = Get-Date -Format 'dddd hh:mm:ss tt' # Test for Admin / Elevated $IsAdmin = (New-Object Security.Principal.WindowsPrincipal ([Security.Principal.WindowsIdentity]::GetCurrent())).IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator) #Calculate execution time of last cmd and convert to milliseconds, seconds or minutes $LastCommand = Get-History -Count 1 if ($lastCommand) { $RunTime = ($lastCommand.EndExecutionTime - $lastCommand.StartExecutionTime).TotalSeconds } if ($RunTime -ge 60) { $ts = [timespan]::fromseconds($RunTime) $min, $sec = ($ts.ToString("mm\:ss")).Split(":") $ElapsedTime = -join ($min, " min ", $sec, " sec") } else { $ElapsedTime = [math]::Round(($RunTime), 2) $ElapsedTime = -join (($ElapsedTime.ToString()), " sec") } #Decorate the CMD Prompt Write-Host "" Write-host ($(if ($IsAdmin) { 'Elevated ' } else { '' })) -BackgroundColor DarkRed -ForegroundColor White -NoNewline Write-Host " USER:$($CmdPromptUser.Name.split("\")[1]) " -BackgroundColor DarkBlue -ForegroundColor White -NoNewline If ($CmdPromptCurrentFolder -like "*:*") {Write-Host " $CmdPromptCurrentFolder " -ForegroundColor White -BackgroundColor DarkGray -NoNewline} else {Write-Host ".\$CmdPromptCurrentFolder\ " -ForegroundColor White -BackgroundColor DarkGray -NoNewline} Write-Host " $date " -ForegroundColor White Write-Host "[$elapsedTime] " -NoNewline -ForegroundColor Green return "> " } #end prompt function

相关推荐
吴声子夜歌19 小时前
Java数据结构与算法——基本数学问题
java·开发语言·windows
这儿有一堆花1 天前
用原生脚本编写无害恶作剧
windows
因我你好久不见1 天前
Windows部署springboot jar支持开机自启动
windows·spring boot·jar
夜流冰1 天前
Excel - MS Support for Excel: 2 Collaborate
数据库·windows·excel
寂寞恋上夜1 天前
枚举值怎么管理:固定枚举/字典表/接口动态(附管理策略)
prompt·状态模式·markdown转xmind·deepseek思维导图
林瞅瞅1 天前
PowerShell 启动卡顿?内存飙升?原来是 800MB 的历史记录在作祟!
windows
Shepherd06191 天前
【Windows Server 实战】WAC 反向代理配置
windows
云小逸1 天前
【windows系统编程】第一章 Windows 系统核心架构与基础概念
windows·架构
怣疯knight1 天前
Docker Desktop 4.55.0版本安装成功教程
windows·docker
liulilittle1 天前
VEthernet 框架实现 tun2socks 的技术原理
网络·windows·c#·信息与通信·通信