PowerShell基础教程(3)——Out-* Cmdlet 重定向数据

这篇具有很好参考价值的文章主要介绍了PowerShell基础教程(3)——Out-* Cmdlet 重定向数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

PowerShell基础教程(3)——Out-* Cmdlet 重定向数据             
Windows PowerShell 为您提供了多个用于直接控制数据输出的 cmdlet。这些 cmdlet 具有两个重要的共同特征。

第一,它们通常都将数据转换为某种文本形式。这是因为它们要将数据输出到需要接受文本输入的系统组件。这意味着它们需要以文本形式表示对象。因此,文本格式将与 Windows PowerShell 控制台窗口中所显示的格式相同。 

第二,这些 cmdlet 都使用 Windows PowerShell 动词 Out,这是因为它们要将信息从 Windows PowerShell 中发送到其他位置。Out-Host cmdlet 也不例外:主机窗口显示位于 Windows PowerShell 之外。这一特征十分重要,因为从 Windows PowerShell 发出数据时,实际上将删除该数据。如果试图创建将数据分页发送到主机窗口的管道,然后尝试将其格式设置为列表,则会看到此类情况,如下所示:

PS> Get-Process | Out-Host -Paging | Format-List
 

您可能希望该命令以列表格式来显示进程信息页面。实际上,它将显示默认的表格格式列表:

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName

-------  ------    -----      ----- -----   ------     -- -----------

101       5     1076       3316    32     0.05   2888 alg

...

618      18    39348      51108   143   211.20   740 explorer

257      8    9752      16828   79   3.02   2560 explorer

...

<SPACE> 下一页;<CR> 下一行;Q 退出

...
 
Out-Host cmdlet 将数据直接发送到控制台,因此 Format-List 命令将不会收到任何要进行格式设置的输入项。

若要构建此命令的结构,正确方式是将 Out-Host cmdlet 放在管道末尾,如下所示。这样将导致先在列表中设置进程数据的格式,然后再进行分页和显示。

PS> Get-Process | Format-List | Out-Host -Paging


Id      : 2888

Handles : 101

CPU     : 0.046875

Name     :alg

...

Id      : 740

Handles : 612

CPU     : 211.703125

Name     :explorer

Id      : 2560

Handles : 257

CPU     : 3.015625

Name     :explorer

...

<SPACE> 下一页;<CR> 下一行;Q 退出

...

此方式适用于所有 Out cmdlet。Out cmdlet 应始终出现在管道末尾。

<!----><!----><!---->请注意: 

所有 Out cmdlet 都以文本形式呈现输出,并使用控制台窗口的有效格式设置(包含行长度限制)进行显示。

对控制台输出进行分页 (Out-Host)
默认情况下,Windows PowerShell 会将数据发送到主机窗口,这与 Out-Host cmdlet 的作用完全相同。正如上文中所述,Out-Host cmdlet 的主要用途是将数据进行分页。例如,以下命令使用 Out-Host 对 Get-Command cmdlet 的输出进行分页:

PS> Get-Command | Out-Host -Paging
 
也可以使用 more 函数来对数据进行分页。在 Windows PowerShell 中,more 是一个称为 Out-Host -Paging 的函数。以下命令演示了如何使用 more 函数来对 Get-Command 的输出进行分页:

PS> Get-Command | more
 
如果将一个或多个文件名用作 more 函数的参数,则该函数将读取指定的文件并将其内容分页发送到主机:

PS> more c:\boot.ini

[boot loader]

timeout=5

default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS

[operating systems]

...
 
放弃输出 (Out-Null)
Out-Null cmdlet 是专为立即放弃其接收的任何输入而设计的。如果希望放弃作为运行命令的副产品而获得的不需要的数据,则此命令十分有用。键入以下命令后,将不会返回任何输出:

PS> Get-Command | Out-Null
 
Out-Null cmdlet 不会放弃错误输出。例如,如果输入以下命令,将显示一条消息,通知您 Windows PowerShell 无法识别“Is-NotACommand”:

PS> Get-Command Is-NotACommand | Out-Null

Get-Command :无法将“Is-NotACommand”识别为 cmdlet、函数、可运行程序

或脚本文件。

所在行:1 字符:12 

+ Get-Command  <<<< Is-NotACommand | Out-Null

打印数据 (Out-Printer)
可以使用 Out-Printer cmdlet 来打印数据。如果未提供打印机名称,则 Out-Printer cmdlet 将使用默认打印机。通过指定打印机的显示名称,您可以使用任何基于 Windows 的打印机。无需指定任何种类的打印机端口映射,甚至无需指定真实的物理打印机。例如,如果安装了 Microsoft Office 文档图像工具,可以通过键入以下命令将数据发送到图像文件:

PS> Get-Command Get-Command | Out-Printer -Name "Microsoft Office Document Image Writer"
 
保存数据 (Out-File)
通过使用 Out-File cmdlet,可以将输出发送到文件而不是控制台窗口。以下命令行将一个进程列表发送到文件 C:\temp\processlist.txt:

PS> Get-Process | Out-File -FilePath C:\temp\processlist.txt 
 
如果习惯于传统的输出重定向,则使用 Out-File cmdlet 的结果可能与您的预期结果不同。若要了解此命令的行为,您必须了解运行 Out-File cmdlet 的上下文。

默认情况下,Out-File cmdlet 将创建 Unicode 文件。从长远的角度来看,这是最佳的默认值,但这意味着预期使用 ASCII 文件的工具将无法正确处理该默认输出格式。可以使用 Encoding 参数来将默认输出格式更改为 ASCII:

PS> Get-Process | Out-File -FilePath C:\temp\processlist.txt -Encoding ASCII
 

Out-file 将文件内容的格式设置为与控制台输出的格式一样。这样将导致在大多数情况下输出将像在控制台窗口中一样发生截断。例如,如果运行以下命令:

PS> Get-Command | Out-File -FilePath c:\temp\output.txt
 

输出将与以下所示类似:

CommandType     Name                            Definition                     

-----------     ----                            ----------                     

Cmdlet          Add-Content                     Add-Content [-Path] <String[...

Cmdlet          Add-History                     Add-History [[-InputObject] ...

...
 

若要获得不强行进行换行以匹配屏幕宽度的输出,可以使用 Width 参数来指定行宽。由于 Width 是 32 位整数参数,因此其最大值为 2147483647。键入以下命令可以将行宽设置为此最大值:

Get-Command | Out-File -FilePath c:\temp\output.txt -Width 2147483647
 

如果希望按照控制台上所显示的格式对输出进行保存,则 Out-File cmdlet 尤其有用。若要更好地控制输出格式,您需要使用更高级的工具。我们将在下一章介绍这些工具,并提供有关对象操作的一些详细信息。文章来源地址https://www.toymoban.com/news/detail-470345.html

到了这里,关于PowerShell基础教程(3)——Out-* Cmdlet 重定向数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 织梦模板DEDECMS首页301重定向的代码教程

    DEDECMS首页301重定向,将不带www的主域名定向到带www 把上边的代码加入到首页index.php中 的上边。 但请注意了:如果你的默认首页index.html排在了index.php上面,那么以上方法就不管用了。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持yii666。

    2024年02月02日
    浏览(41)
  • 【Linux】基础IO_文件描述符与重定向

    环境:centos7.6,腾讯云服务器 Linux文章都放在了专栏:【 Linux 】欢迎支持订阅 相关文章推荐: 【Linux】冯.诺依曼体系结构与操作系统 【C/进阶】如何对文件进行读写(含二进制)操作? 【Linux】基础IO_文件操作 在前文中学习了open函数,我们知道 open函数的返回值就是文件描

    2024年02月03日
    浏览(72)
  • 【Linux】基础IO——系统文件IO&&fd&&重定向

    大家好我是沐曦希💕 空文件,也要在磁盘占据空间,因为文件也有属性,属性也属于数据,需要空间进行存储。所以 文件包括内容和属性 所以 对文件操作就是对内容或者对属性进行操作,或者对内容和属性进行操作。 文件具有唯一性,所以在 标定一个文件时候,必须使用

    2024年02月02日
    浏览(45)
  • <Linux> 基础IO(文件操作、文件描述符fd、重定向)

    1、空文件也要在磁盘占用 我们创建的文件,虽然里面并没有存放数据,但是文件属性也是数据,即便你创建一个空文件,也要占据磁盘空间 2、文件 = 文件内容 + 文件属性 文件内容就是真正写入的内容,文件属性就是文件名、文件大小、文件的权限、拥有者所属组…… 3、文

    2024年02月03日
    浏览(46)
  • 【Linux】基础IO(一) :文件描述符,文件流指针,重定向

    🍎 作者: 阿润菜菜 📖 专栏: Linux系统编程 是不是只有C/C++有文件操作呢?python、java、go等文件接口操作的方法是不太一样的,那如何理解这种现象?有没有统一的视角去看待所有的语言文件操作呢?—我们今天从系统视角去理解 ---- 实际都是通过系统调用来访问 文件=内

    2024年01月18日
    浏览(47)
  • Powershell脚本自动备份dhcp数据库

    大致列举几点进行一下说明: 如果DHCP数据库出现问题,如数据丢失、损坏或不一致,自动备份是恢复关键网络配置信息的关键。 在网络故障或DHCP服务器故障的情况下,自动备份还可用于快速重建和恢复网络配置。这有助于减少停机时间和业务中断。 定期自动备份还允许在

    2024年02月08日
    浏览(46)
  • 【Linux】基础IO----系统文件IO & 文件描述符fd & 重定向

    作者:დ旧言~ 座右铭:松树千年终是朽,槿花一日自为荣。 目标:了解在Linux下的系统文件IO,知道什么是文件描述符,什么是重定向 毒鸡汤:白日莫闲过,青春不再来。 专栏选自:Linux初阶 望小伙伴们点赞👍收藏✨加关注哟💕💕 最早我们在C语言中学习关于如何用代码

    2024年04月14日
    浏览(51)
  • dedeCSM织梦模板添加301重定向跳转网址对的代码教程

    dedeCSM织梦模板添加301重定向跳转网址对的代码教程 dede5.7的程序中有自带的index.php 一般是这样: 实现301重定向   用下面代码替换原有的index.php内容: 可以直接复制上面的代码内容到dede5.7的根目录下的index.php中,把以前的源代码覆盖。 如何查看你的301重定向是否添加成功

    2024年02月02日
    浏览(67)
  • powershell 接收一个端口tcp数据复制转发到多个目的

    在 PowerShell 中,你可以使用  New-Object  来创建  System.Net.Sockets.TcpListener  和  System.Net.Sockets.TcpClient  对象,从而接收一个 TCP 端口的数据并将其转发到多个目的地。下面是一个 PowerShell 脚本示例,该脚本展示了如何从一个 TCP 端口接收数据并将其复制到多个目标地址: 在这个

    2024年02月21日
    浏览(37)
  • 【探索Linux】文件描述符 | 重定向 | 基础IO —— 强大的命令行工具 P.12

    前面我们讲了C语言的基础知识,也了解了一些数据结构,并且讲了有关C++的一些知识,也学习了一些Linux的基本操作,也了解并学习了有关Linux开发工具vim 、gcc/g++ 使用、yum工具以及git 命令行提交代码也相信大家都掌握的不错,上一篇文章我们了解了基础IO,文件操作,今天

    2024年02月08日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包