[玩转系统] 关于提示
作者:精品下载站 日期:2024-12-14 02:20:25 浏览:15 分类:玩电脑
关于提示
简短描述
描述 Prompt
函数并演示如何创建自定义 Prompt
函数。
详细描述
PowerShell 命令提示符表明 PowerShell 已准备好运行命令:
PS C:\>
PowerShell 有一个内置的Prompt
功能。您可以在 PowerShell 配置文件脚本中定义自己的自定义 Prompt
函数。
关于提示功能
Prompt
函数确定 PowerShell 提示符的外观。 PowerShell 附带内置的 Prompt
函数,但您可以通过定义自己的 Prompt
函数来覆盖它。
Prompt
函数具有以下语法:
function Prompt { <function-body> }
Prompt
函数必须返回一个对象。最佳实践是返回字符串或格式化为字符串的对象。建议的最大长度为 80 个字符。
例如,以下 Prompt
函数返回一个“Hello, World”字符串,后跟一个右尖括号 (>
)。
PS C:\> function prompt {"Hello, World > "}
Hello, World >
获取提示功能
要获取 Prompt
功能,请使用 Get-Command
cmdlet 或使用函数驱动器中的 Get-Item
cmdlet。
例如:
PS C:\> Get-Command Prompt
CommandType Name ModuleName
----------- ---- ----------
Function prompt
要获取设置提示值的脚本,请使用点方法获取 Prompt
函数的 ScriptBlock 属性。
例如:
(Get-Command Prompt).ScriptBlock
"PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "
# .Link
# https://go.microsoft.com/fwlink/?LinkID=225750
# .ExternalHelp System.Management.Automation.dll-help.xml
与所有函数一样,Prompt
函数存储在 Function:
驱动器中。要显示创建当前 Prompt
函数的脚本,请键入:
(Get-Item function:prompt).ScriptBlock
默认提示
仅当 Prompt
函数生成错误或不返回对象时才会出现默认提示。
默认的 PowerShell 提示符是:
PS>
例如,以下命令将 Prompt
函数设置为 $null
,这是无效的。结果,出现默认提示。
PS C:\> function prompt {$null}
PS>
由于 PowerShell 带有内置提示符,因此您通常看不到默认提示符。
内置提示
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>
如果未填充 $PSDebugContext
,该函数会将 PS
添加到提示中。并且,该函数使用 Get-Location
cmdlet 来获取当前文件系统目录位置。然后,它添加一个右尖括号 (>
)。
例如:
PS C:\ps-test>
如果您处于嵌套提示中,该函数会向提示添加两个尖括号 (>>
)。如果 $NestedPromptLevel
自动变量的值大于 0,则您处于嵌套提示中。
例如,当您在嵌套提示中进行调试时,提示类似于以下提示:
[DBG] PS C:\ps-test>>>
提示的更改
Enter-PSSession
cmdlet 将远程计算机的名称添加到当前 Prompt
函数之前。当您使用 Enter-PSSession
cmdlet 启动与远程计算机的会话时,命令提示符将更改为包含远程计算机的名称。例如:
PS Hello, World> Enter-PSSession Server01
[Server01]: PS Hello, World>
其他 PowerShell 主机应用程序和备用 shell 可能有自己的自定义命令提示符。
有关 $PSDebugContext
和 $NestedPromptLevel
自动变量的详细信息,请参阅 about_Automatic_Variables。
如何自定义提示
要自定义提示,请编写新的 Prompt
函数。该函数不受保护,因此您可以覆盖它。
要编写 Prompt
函数,请输入以下内容:
function prompt { }
然后,在大括号之间输入创建提示的命令或字符串。
例如,以下提示包含您的计算机名称:
function prompt {"PS [$env:COMPUTERNAME]> "}
在 Server01 计算机上,提示类似于以下提示:
PS [Server01] >
以下 Prompt
函数包含当前日期和时间:
function prompt {"$(Get-Date)> "}
该提示类似于以下提示:
03/15/2012 17:49:47>
您还可以更改默认的 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:\ps-test>
下面的Prompt
函数显示下一个命令的历史ID。要查看命令历史记录,请使用 Get-History
cmdlet。
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 >"
}
以下提示使用 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 " "
}
保存提示功能
与任何函数一样,Prompt
函数仅存在于当前会话中。要保存 Prompt
功能以供将来使用,请将其添加到您的 PowerShell 配置文件中。有关配置文件的更多信息,请参阅 about_Profiles。
参见
- about_Automatic_Variables
- about_调试器
- about_函数
- about_个人资料
- about_范围
- Get-History
- Write-Host
- Get-Location
- 输入-PSSession
- Get-Random
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag