PowerShell 技能连载 - 色彩之周: 改变错误信息颜色
本周我们将关注如何改变 PowerShell 控制台和 PowerShell ISE 的颜色,以便设置您的 PowerShell 环境。
PowerShell 使用预定义的颜色来显示错误信息、警告信息、详细信息,以及其他输出信息。这些颜色也可以更改。
这段代码将把错误信息改为白底红字。这个颜色更好阅读,特别在演示的时候:
1 | $host.PrivateData.ErrorBackgroundColor="White" |
本周我们将关注如何改变 PowerShell 控制台和 PowerShell ISE 的颜色,以便设置您的 PowerShell 环境。
PowerShell 使用预定义的颜色来显示错误信息、警告信息、详细信息,以及其他输出信息。这些颜色也可以更改。
这段代码将把错误信息改为白底红字。这个颜色更好阅读,特别在演示的时候:
1 | $host.PrivateData.ErrorBackgroundColor="White" |
本周我们将关注如何改变 PowerShell 控制台和 PowerShell ISE 的颜色,以便设置您的 PowerShell 环境。
在钱一个技能中您学到了三个设置控制 PowerShell ISE 控制台面板中的颜色。如果您希望的话,还可以为输入和输出设置不同的背景色:
1 | $psise.Options.ConsolePaneForegroundColor=[System.Windows.Media.Colors]::LightSkyBlue |
结果类似这样:
1 | PS C:\>"Hello" |
如果您只希望将输出高亮一点点,那么可以使用透明色。文字的背景色可以变成透明,首先要确定希望使用的颜色的代码,然后用 alpha 通道创建自定义的颜色。它操作起来很简单。
在前一个例子中,文字的背景色被设置成 “Yellow”。以下是查找 “Yellow” 实际颜色值的方法:
1 | PS C:\> [System.Windows.Media.Colors]::Yellow.ToString() |
第一个十六进制值代表 alpha 通道(不透明度)。要使黄色变得更透明,请调低这个值:
1 | PS>$psise.Options.ConsolePaneTextBackgroundColor="#33FFFF00" |
本周我们将关注如何改变 PowerShell 控制台和 PowerShell ISE 的颜色,以便设置您的 PowerShell 环境。
在前一个技能中我们介绍了如何设置 PowerShell ISE 控制台的前景色,以及通过 red、green 和 blue 值指定颜色。
PowerShell ISE 的控制台的背景色也可以用这种方法,不过会产生一些副作用,需要规避。
首先我们将 PowerShell ISE 控制台面板的颜色改为绿底浅灰字:
1 | PS C:\> $psise.Options.ConsolePaneForegroundColor = |
颜色改变了,但是提示符以及所有其它的输出还是原来的颜色。这是因为在 PowerShell ISE 中还有第三个设置,它决定了文字的背景色:
1 | PS C:\>$psise.Options.ConsolePaneTextBackgroundColor = |
现在看起来一切完美了。
本周我们将关注如何改变 PowerShell 控制台和 PowerShell ISE 的颜色,以便设置您的 PowerShell 环境。
在前一个技能中我们将 PowerShell ISE 控制台的前景色改为任意的自定义 RGB 颜色。您也可以从预定义的颜色种选一个:
1 | PS> $psise.Options.ConsolePaneForegroundColor = [System.Windows.Media.Colors]::Azure |
在 PowerShell 控制台面板中键入这些代码时,当按下两个冒号后,智能提示将打开一个清单,列出所有预定义的颜色名。这对查找已有的名字十分有用。如果知道一个颜色名,您也可以这样写:
1 | PS C:\> $psise.Options.ConsolePaneForegroundColor = 'Azure' |
支持 PowerShell 3 以上版本
本周我们将关注如何改变 PowerShell 控制台和 PowerShell ISE 的颜色,以便设置您的 PowerShell 环境。
您可以通过 $host
对象改变 PowerShell ISE 控制台的背景色和前景色,这种方式提供了 16 中预设的颜色可选择:
1 | PS> $host.UI.RawUI.ForegroundColor = 'Red' |
这些命令将前景色先改为红色,然后改回白色。
在 PowerShell ISE 中,您也可以通过 $psISE
变量修改这些颜色。在这里可以用 RGB 值构成您自己的背景色和前景色。让我们把 PowerShell ISE 控制台的前景色改为一些别的:
1 | PS> $psise.Options.ConsolePaneForegroundColor = '#FFDD98' |
第一行将前景色改为微带青色的颜色,下一行将颜色改为白色。
颜色可以用三个十六进制值构成,分别由红色、绿色和蓝色分量组成。
我们将要进入的“色彩之周”将带来许多改变 PowerShell ISE 编辑器和控制台颜色的技能。多数应用到 PowerShell 的改变并没有保存。PowerShell ISE 并不会保存一些颜色设置,但一个更健壮的方法是在 PowerShell 的一个描述脚本中改变您的自定义设置。
任何一个 PowerShell 宿主(控制台或 PowerShell ISE 或其它支持 PowerShell 的程序)都会执行的脚本如下:
1 | PS C:\> $profile.CurrentUserAllHosts |
Anything that applies to a specific host like the console only, or the PowerShell ISE only, goes here:
任何一个特定的 PowerShell 宿主,例如特指控制台或特指 PowerShell ISE 启动执行的脚本如下:
1 | PS C:\> $profile.CurrentUserCurrentHost |
请注意路径中的 “XXX”。需要在指定的宿主内运行上面的代码才有效。根据不同的宿主,这行代码会返回不同的路径。
另外请注意这些调用只是返回描述脚本的路径。它缺省情况下并不存在。您可能需要自己创建它,包括 “WindowsPowerShell” 文件夹。当描述脚本存在时,PowerShell 宿主启动的时候就会执行它。
请注意需要打开脚本执行功能。所以您可能需要一次性地允许脚本执行,比如:
1 | Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned -Force |
这是一种查看任何字符 ASCII 码的简单办法。字符可能截取自网站或者来自从 internet 上下载的脚本。
只需要打开 PowerShell 然后输入以下代码:
1 | # paste character(s) inside the quotes |
下一步,将字符(可以多个)粘贴在引号内,然后运行代码。为了测试,可以在 PowerShell 中运行以下代码:
1 | PS C:\> charmap |
这将打开字符映射表。您可以在其中选择一种字体,例如 DingBats,以及一个或多个字符。将它们复制到剪贴板,然后将它们粘贴到上面的 PowerShell 代码中。当您运行代码时,它将以十进制和十进制两种方式返回所选字符的 ASCII 码值。它们应该和字符映射表工具状态栏显示的值相同。
WMI 可以提供硬盘的容量和剩余空间。PowerShell 会用返回这样的友好信息:
1 | PS C:\> # local |
以下是代码:
1 | function Get-HardDriveSize |
支持 PowerShell 2 以上版本
许多早先基于 DCOM 的命令需要打开“远程管理防火墙例外”,才能访问远程系统。其中包含 Get-WmiObject
等 Cmdlet。
一个启用该功能的简单办法是在管理员权限下运行以下命令:
1 | netsh firewall set service remoteadmin enable |
虽然该命令已经准备淘汰,不过它仍然能用,而且是配置防火墙的最简单方法。
支持 PowerShell 3 以上版本
If you’d like to know which programs start automatically on your machine, WMI may help:
如果您想了解有多少个程序随着您的机器自动启动,WMI 也许能帮上忙:
1 | PS C:\> Get-CimInstance -ClassName Win32_StartupCommand | Select-Object -Property Name, Location, User, Command, Description |