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

相关推荐
路边草随风8 小时前
langchain agent动态变更系统prompt
人工智能·python·langchain·prompt
zdd5678917 小时前
关于Windows 11 家庭中文版 25H2中ensp无法启动路由器,报40错的解决方法
windows
胡闹5420 小时前
Linux查询防火墙放过的端口并额外增加需要通过的端口命令
linux·运维·windows
北极糊的狐20 小时前
若依系统报错net::ERR_CONNECTION_TIMED_OUT的原因
java·windows·sql·mybatis
45288655上山打老虎1 天前
List容器
数据结构·windows·list
Baikal..1 天前
CVE-2024-38077漏洞 2012R2系统更新失败
windows
yunmoon011 天前
一款专业的 Windows 恶意程序分析与清理工具
windows
白仑色1 天前
java中的anyMatch和allMatch方法
java·linux·windows·anymatch·allmatch
9527(●—●)1 天前
windows系统python开发pip命令使用(菜鸟学习)
开发语言·windows·python·学习·pip