[原创][PowerShell教程][06]PowerShell中格式化命令和输出命令

PowerShell 格式化_下 PowerShell中有四种格式化的 Cmdlets。 Format-Table格式化表格)  The Format-Table cmdlet formats the output of a command as a table with the selected properties of the object in each column. Format-List(格式化列表)  ... 阅读详情

好久不见, 我又食言了, 一直没有更新教程, 我也不想找借口, 因为我花了很多时间跑去玩大蛇无双和魔王再临.

今天, 我将为您介绍如何使用格式化和输出命令. 在PowerShell中,负责进行格式化和输出的是三类cmdlet。他们分别是:Format-*、Out-*和 Write-* 。顾名思义,Format-* 主要是用来对信息进行格式化操作,Out-*用于指定输出设备,而 Write-* 为 PowerShell 宿主(Host)输出的更多有用信息提供了快捷访问接口。

我们要将对象输出到控制台或打印机等位置前,我们首先必须将对象格式化成为字符串的形式。一个对象可能包含几十种属性信息,PowerShell的开发者已经考虑到我们在日常使用时,不会使用一个对象的所有信息,因此默认情况下只保留该对象上最主要的几种属性。让我们来看看进程对象默认会显示哪些属性。首先看看进程对象究竟有多少个属性:
PS C:/> (Get-Process Idle | Get-Member -MemberType Property).Count
51

在上面例子,首先使用Get-Process命令返回表示Idle进程的对象,并通过Get-Member命令返回该对象上所有属性,最后我们给出该对象的属性个数(打印这些属性太占地方了,你可以把Count去掉,检查返回的结果)。让我们看看PowerShell默认情况下会输出哪些属性吧:
PS C:/> Get-Process Idle

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
      0       0        0         16     0               0 Idle

正如前面所介绍的,PowerShell默认只会返回对象上一部分属性信息,究竟显示哪些属性是通过定义在ETS系统中的信息决定的。

Format族包含了:Format-Custom、Format-List、Format-Table和Format-Wide四个命令。在大多数情况下,Format-Table是PowerShell默认使用的格式器。Format-List的输出类似上面输出进程属性的格式,每个对象将会占一行。一行内包括该对象的多个主要属性,如果该属性信息太长,PowerShell就会将该信息截断。让我们看几个管理PowerShell最常用的例子:
PS C:/> Get-EventLog -LogName 'Windows PowerShell' -Newest 10 | Format-Table

   Index Time          Type        Source                 InstanceID Message
   ----- ----          ----        ------                 ---------- -------
    1029 五月 31 21:38 Information PowerShell                    400 Engine state is changed from None to Available....
    1028 五月 31 21:38 Information PowerShell                    400 Engine state is changed from None to Available....
    1027 五月 31 21:38 Information PowerShell                    600 Provider "Certificate" is Started. ...
    1026 五月 31 21:38 Information PowerShell                    600 Provider "Variable" is Started. ...
    1025 五月 31 21:38 Information PowerShell                    600 Provider "Registry" is Started. ...
    1024 五月 31 21:38 Information PowerShell                    600 Provider "Function" is Started. ...
    1023 五月 31 21:38 Information PowerShell                    600 Provider "FileSystem" is Started. ...
    1022 五月 31 21:38 Information PowerShell                    600 Provider "Environment" is Started. ...
    1021 五月 31 21:38 Information PowerShell                    600 Provider "Alias" is Started. ...
    1020 五月 31 15:43 Information PowerShell                    403 Engine state is changed from Available to Stopp...

这个例子显示PowerShell最近10个日志的日志信息. Format-Table为了保证每个对象只输出一行,只会输出那些较重要的信息,一般对对象的检索,使用Format-Table就是最好的办法。

其他几个命令, 您可以参照PowerShell的帮助, 或我翻译的帮助信息详细学习.

看完了负责格式化对象输出信息的cmdlet,我们需要考虑该把这些信息输出到什么位置了。Out族包括了:Out-Default、Out-File、Out-Host、Out-Null、Out-Printer、Out-GridView和Out-String。

Out-Host命令,就是将显示结果返回给宿主程序,由宿主程序展现给使用者。Out-Default默认就是使用Out-Host进行输出,但是根据PowerShell文档的描述,Out-Default用来提供一种占位符的特性,你可以在脚本完成后,重新修改Out-Default来控制整个程序的输出。

Out-Null的作用就是将输出丢弃,在很多时候,如果我们不关心命令的返回结果,而只关一条命令产生的某些影响时,我们可以将该命令的输出通过管道发送给Out-Null。例如:
PS C:/> New-Item TestIt -Type dir


    Directory: Microsoft.PowerShell.Core/FileSystem::C:/


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----         2007-9-16     21:10            TestIt


PS C:/> New-Item TestIt -Type dir | Out-Null
New-Item : Item with specified name C:/TestIt already exists.
At line:1 char:9
+ New-Item  <<<< TestIt -Type dir | Out-Null
PS C:/> Remove-Item TestIt
PS C:/> New-Item TestIt -Type dir | Out-Null
PS C:/>

我们首先创建了TestIt的目录,默认情况下,New-Item返回新创建的目录,该对象被输出到控制台上。我们接下来试图再创建一次该目录,并将输出信息丢弃。然而,由于该目录已经存在,因此创建失败,命令给出了错误提示。这里我们需要注意错误信息并没有被丢弃!接下来我们删除目录TestIt,再次执行创建命令,这次,屏幕上没有显示创建的目录信息。

最后,我们来看看Out-File。很多时候,我们需要将某种编码的字符串存储为其他编码形式。我们可以简单的使用Out-File的参数Encoding来设置输出信息的编码格式。这些编码包括了:“Unicode”、“UTF7”、“UTF8”、“UTF32”、“ASCII”等等。有时候,我们还会遇到如果将信息写入文件中。如果该文件已经存在,我们可能希望信息继续追加到文件的末尾,或者当文件已经存在时,我们希望覆盖这个文件。通过参数Append,我们可以告诉Out-File究竟是覆盖文件,还是在文件的末尾进行追加。让我们看看简单的例子:
PS C:/> "我是第一行!" | Out-File append.txt
PS C:/> Get-Content C:/append.txt
我是第一行!
PS C:/> "我是第二行,但是我要试试覆盖第一个行!!" | Out-File append.txt
PS C:/> Get-Content C:/append.txt
我是第二行,但是我要试试覆盖第一个行!!
PS C:/> "我是第三行,让我跟在第二行后面吧!!!" | Out-File -Append append.txt
PS C:/> Get-Content C:/append.txt
我是第二行,但是我要试试覆盖第一个行!!
我是第三行,让我跟在第二行后面吧!!!

Write族的命令我将会在下一讲为大家详细介绍. 希望大家喜欢我的教程.

PowerShell : 如何设置输出颜色,Format-Color让黑乎乎的窗口丰富起来 控制台中是如何输出不同颜色内容的,以及在PowerShell中如何科学的设置字体颜色,本文将一 一道来。 阅读详情

相关推荐

Windows Powershell笔记之管道与输出格式

PowerShell 的管道与输出格式是其强大功能的核心。管道允许将一个命令输出直接作为输入传递给下一个命令,而多种输出格式则帮助用户根据需求来查看整理结果。本章将详细介绍 PowerShell 的管道操作输出格式,并提供示例帮助理解其用法。

K 1154

PowerShell常用命令及使用方法

PowerShell 依托.NET Framework平台可以实现非常强大的功能,而且普适性强,Win7及以上系统自带,隐蔽性好,可以直接在内存中运行,能够绕过部分杀软,现将平日操作及内网渗透过程中常用命令及使用方法总结如下。...

Captain_RB的博客 5万+

别再傻傻分不清了!AnacondaMiniconda到底选哪个?附保姆级安装与镜像源配置(Windows/Mac)

本文详细解析了AnacondaMiniconda的核心差异,包括体积、预装内容、系统资源占用等关键维度,并提供了针对不同需求的决策框架。附有WindowsMac双平台的详细安装与配置指南,帮助用户根据实际需求选择最适合的conda工具,提升开发效率。

weixin_30315723的博客 391

Powershell格式化输出

使用Format命令格式化powershell输出,常用的命令如下: Format-Wide:每个对象仅有一个属性值被显示。默认情况下输出默认属性,也可以通过指定-Property参数来输出其他属性 例如: Get-Process -Name powershell|Format-Wide Get-Process -Name powershell| Format-wide...

a2218641的博客 1336

PowerShell 格式化

因为PowerShell并不是完全成熟的用于生成管理报表的工具,但是它能够很好的收集计算机的信息,并以定制的格式输出,用于输出定制的方式称为格式化。 默认格式 现在我们运行一个熟悉的cmdlet: get-process, 然后注意结果的列头部分。可以看到他并不是非常符合常规的属性名。取而代之的是一个固定的宽度、别名等。 其实这些格式都是来自于配置文件,我们可以在安装PowerShell的路...

weixin_42545594的博客 1056

powershell入门

PowerShell中使用Get-Date获取日期时间并格式化输出 https://www.jb51.net/article/53282.htm 其他深入学习链接 https://www.jb51.net/article/63887.htmhttps://www.jb51.net/list/list_234_1.htm ## 在PowerShell中有一个Get-Date的cmdlet,使用它可以...

242

powershell常用命令(二)

Get-Date 功能:获取一个DateTime对象,这个对象代表了当前的时间。 实例: Get-Date 输出; Tuesday, June 25, 2019 14:53:32 Get-Date -Format "dddd MM/dd/yyyy HH:mm K" #格式化输出 结果: Tuesday 06/25/2019 16:17 -07:00 #结果是一个串对象 Set-Content(sc) 功能:是一个串处理cmdlet。向一个文件中写一些内容,或者替换文件中的某些内容。 内容通过Value

酒千殇的博客 2661

Objective-C 【格式化日期时间字符串】

格式化日期时间字符串 Get-Date -Uformat , -format #将字符串格式化为时间格式 $dateTimeStr = '20141231T23:59:59' $format = 'yyyyMMddTHH:mm:ss' $formatProvider = [Globalization.CultureInfo]::InvariantCulture [datetim

CoderZYWang 3376

Powershell使用小技巧-需持续更新

使用$Alias:dir查询dir的cmdlet,其他命令类似:PS C:\Users\Administrator\Desktop&gt; $Alias:dir Get-ChildItem PS C:\Users\Administrator\Desktop&gt; $Alias:ls Get-ChildItem PS C:\Users\Administrator\Desktop&gt; $Alia...

sdyu_peter的博客 3174

Powershell 设置数值格式 1

设置数值格式 1 6 6月, 2013  在 Powershell  tagged 字符串 / 数字 / 文本 / 日期 / 格式化 by Mooser Lee 格式化操作符 -f 可以将数值插入到字符串,每一个通配符都有统一的结构。 {index[,alignment][:format]}:  Index: 索引编号用来识别把那个值用来替换通配符。例如你可能使...

weixin_33717117的博客 439

git 命令写成脚本_我低估了PowerShell:一个提取Git提交记录并生成文件Diff列表的脚本案例...

最近需要在 Windows 环境下完成一些自动化操作,于是开始学习 PowerShell 脚本的编写。 本来对 PowerShell 比较无感,因为比较熟悉 Bash Script,觉得 PowerShell 语法似乎比较啰嗦, 而且好多命令还要重头学起,自然就有了一定的抵触情绪。然而我还是太天真了,一切都逃不过真香定律。本文将从一个实际遇到的需求出发展示 PowerShell 的强大之处,以及它...

weixin_36219894的博客 587

powershell@日期时间命令对象

PowerShell 中处理日期时间非常灵活且功能强大。下面是一些常用的日期时间操作示例,帮助你更好地理解使用这些功能。可以使用Get-Date的参数来创建特定的日期时间。# 创建一个自定义日期时间关于运算符[ ] - PowerShell | Microsoft Learn又比如# $dt1= [datetime] '2/20/88'执行结果如下1988年2月200:00:00时间间隔计算比较[datetime]类型操作示例代码获取当前日期时间Get-Date自定义格式输出

xuchaoxin1375的博客 1559

powershell 格式化输出

powershell 格式化输出 cls $EventVwr = Get-EventLog -listforeach ($Log in $EventVwr) {"{0,-28} {1,-20} {2,8}" -f `$Log.log, $Log.OverflowAction, $Log.MaximumKilobytes} "hex f...

weixin_30756499的博客 854

PowerShell格式化输出定制技术

PowerShell(微软开发的命令行外壳程序脚本环境)中,格式化输出是数据展示报告生成的核心能力。本文将系统介绍四大格式化命令——`Format-Table`(表格视图)、`Format-List`(列表视图)、`Format-Wide`(宽视图)`Format-Custom`(自定义视图),通过20+实用案例帮助读者掌握从基础到高级的输出定制技术。 ### 1.1 格式化命令对比表 ...

gitblog_01157的博客 1168

PowerShell格式化显示(Format-Table Format-List)

格式化Format-*   ・Format-Wide   ・Format-List (常用,显示的更加详细)   ・Format-Table (常用) ・ -AutoSize (让表格更加紧凑) ・Format-Custom ----------------------------- 例子: ---------...

sun0322 4041

Windows PowerShell命令大全

Windows PowerShell 是一种命令行外壳程序的脚本环境,它内置在每个受支持的Windows版中(Windows7、Windows Server2008 R2及更高版本),为windows命令行使用者脚本编写者利用.NET Framework的强大功能提供了遍历。需要.NET环境支持。

有勇气的牛排博客 5万+

从零开始学PowerShell(5)自定义格式化信息

我们已经基本了解了大部分在PowerShell中的格式化输出命令的使用,但是我们之前做的内容的格式化也仅仅是针对现有输出的内容做一些排版格式的输出,在某些场景需求下,这样的排版还是显得过于单调。所以今天要讲一下如何自定义格式化信息。这是个很有趣的话题,所以单独放在了一篇文章里讲。 PowerShell输出的信息内容其实默认是经过排版的,基本以表单的形式,像下面这样。 为了更好的说明自定义格式化信息的用意,我来假设一个场景需求。我需要罗列出Id值大于2000的进程信息,但一定要输出的信息给别人一看就明

墨痕诉清风的博客 782

解码逻辑电路:组合与时序背后的设计哲学与实用场景对比

本文深入解析组合逻辑与时序逻辑电路的设计哲学与核心差异,重点对比两者在数字电路设计中的实用场景与性能权衡。组合逻辑实现即时功能转换,时序逻辑通过状态记忆处理复杂控制,为FPGA开发嵌入式系统设计提供关键指导。

zz67890的博客 721

使用 Simulink + Simscape Electrical 搭建一个三相PWM整流器模型

本文详细介绍了使用Simulink搭建三相PWM整流器模型的方法,重点讲解了SVPWM调制策略的实现过程。内容包括系统结构设计、主电路搭建、SVPWM算法实现、双闭环控制器设计以及仿真分析。通过MATLAB Function Block实现SVPWM核心算法,并给出优化建议,如死区补偿、开关频率优化等。该教程为电力电子领域工程师提供了实用的建模与仿真方法,可用于新能源并网、电机驱动等应用场景的研发与优化。

amy_mhd的博客 182

高等代数孤独九剑--李烔生线代习题解答

老师发的学习高等代数的一本好书,李烔生著,整理编著:刘畅,牟卓群,余志拯等

上一篇: 2008 Winter Scripting Games证书
下一篇: 一篇关于在PowerShell中编译c#的文章
PowerShell
博客等级 码龄19年 103粉丝 110原创
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值