PowerShell基础教程(8)——Out-* Cmdlet 重定向数据 <o:p></o:p>
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<o:p></o:p>
|
<o:p> </o:p>
您可能希望该命令以列表格式来显示进程信息页面。实际上,它将显示默认的表格格式列表:
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName<o:p></o:p>
------- ------ ----- ----- ----- ------ -- -----------<o:p></o:p>
101 5 1076 3316 32 0.05 2888 alg<o:p></o:p>
...<o:p></o:p>
618 18 39348 51108 143 211.20 740 explorer<o:p></o:p>
257 8 9752 16828 79 3.02 2560 explorer<o:p></o:p>
...<o:p></o:p>
<SPACE> 下一页;<CR> 下一行;Q 退出<o:p></o:p>
...<o:p></o:p>
|
<o:p> </o:p>
Out-Host cmdlet 将数据直接发送到控制台,因此 Format-List 命令将不会收到任何要进行格式设置的输入项。
若要构建此命令的结构,正确方式是将 Out-Host cmdlet 放在管道末尾,如下所示。这样将导致先在列表中设置进程数据的格式,然后再进行分页和显示。
PS> Get-Process | Format-List | Out-Host -Paging<o:p></o:p>
<o:p> </o:p>
<o:p> </o:p>
Id : 2888<o:p></o:p>
Handles : 101<o:p></o:p>
CPU : 0.046875<o:p></o:p>
Name :alg<o:p></o:p>
...<o:p></o:p>
<o:p> </o:p>
Id : 740<o:p></o:p>
Handles : 612<o:p></o:p>
CPU : 211.703125<o:p></o:p>
Name :explorer<o:p></o:p>
<o:p> </o:p>
Id : 2560<o:p></o:p>
Handles : 257<o:p></o:p>
CPU : 3.015625<o:p></o:p>
Name :explorer<o:p></o:p>
...<o:p></o:p>
<SPACE> 下一页;<CR> 下一行;Q 退出<o:p></o:p>
...<o:p></o:p>
|
<o:p> </o:p>
此方式适用于所有 Out cmdlet。Out cmdlet 应始终出现在管道末尾。
<!----><!----><!---->请注意: <o:p></o:p>
所有 Out cmdlet 都以文本形式呈现输出,并使用控制台窗口的有效格式设置(包含行长度限制)进行显示。<o:p></o:p>
对控制台输出进行分页 (Out-Host)<o:p></o:p>
默认情况下,Windows PowerShell 会将数据发送到主机窗口,这与 Out-Host cmdlet 的作用完全相同。正如上文中所述,Out-Host cmdlet 的主要用途是将数据进行分页。例如,以下命令使用 Out-Host 对 Get-Command cmdlet 的输出进行分页:
PS> Get-Command | Out-Host -Paging<o:p></o:p>
|
<o:p> </o:p>
也可以使用 more 函数来对数据进行分页。在 Windows PowerShell 中,more 是一个称为 Out-Host -Paging 的函数。以下命令演示了如何使用 more 函数来对 Get-Command 的输出进行分页:
PS> Get-Command | more<o:p></o:p>
|
<o:p> </o:p>
如果将一个或多个文件名用作 more 函数的参数,则该函数将读取指定的文件并将其内容分页发送到主机:
PS> more c:\boot.ini<o:p></o:p>
[boot loader]<o:p></o:p>
timeout=5<o:p></o:p>
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS<o:p></o:p>
[operating systems]<o:p></o:p>
...<o:p></o:p>
|
<o:p> </o:p>
放弃输出 (Out-Null)<o:p></o:p>
Out-Null cmdlet 是专为立即放弃其接收的任何输入而设计的。如果希望放弃作为运行命令的副产品而获得的不需要的数据,则此命令十分有用。键入以下命令后,将不会返回任何输出:
PS> Get-Command | Out-Null<o:p></o:p>
|
<o:p> </o:p>
Out-Null cmdlet 不会放弃错误输出。例如,如果输入以下命令,将显示一条消息,通知您 Windows PowerShell 无法识别“Is-NotACommand”:
PS> Get-Command Is-NotACommand | Out-Null<o:p></o:p>
Get-Command :无法将“Is-NotACommand”识别为 cmdlet、函数、可运行程序<o:p></o:p>
或脚本文件。<o:p></o:p>
所在行:1 字符:12 <o:p></o:p>
+ Get-Command <<<< Is-NotACommand | Out-Null<o:p></o:p>
|
<o:p> </o:p>
打印数据 (Out-Printer)<o:p></o:p>
可以使用 Out-Printer cmdlet 来打印数据。如果未提供打印机名称,则 Out-Printer cmdlet 将使用默认打印机。通过指定打印机的显示名称,您可以使用任何基于 Windows 的打印机。无需指定任何种类的打印机端口映射,甚至无需指定真实的物理打印机。例如,如果安装了 Microsoft Office 文档图像工具,可以通过键入以下命令将数据发送到图像文件:
PS> Get-Command Get-Command | Out-Printer -Name "Microsoft Office Document Image Writer"<o:p></o:p>
|
<o:p> </o:p>
保存数据 (Out-File)<o:p></o:p>
通过使用 Out-File cmdlet,可以将输出发送到文件而不是控制台窗口。以下命令行将一个进程列表发送到文件 C:\temp\processlist.txt:
PS> Get-Process | Out-File -FilePath C:\temp\processlist.txt <o:p></o:p>
|
<o:p> </o:p>
如果习惯于传统的输出重定向,则使用 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<o:p></o:p>
|
<o:p> </o:p>
Out-file 将文件内容的格式设置为与控制台输出的格式一样。这样将导致在大多数情况下输出将像在控制台窗口中一样发生截断。例如,如果运行以下命令:
PS> Get-Command | Out-File -FilePath c:\temp\output.txt<o:p></o:p>
|
<o:p> </o:p>
输出将与以下所示类似:
CommandType Name Definition <o:p></o:p>
----------- ---- ---------- <o:p></o:p>
Cmdlet Add-Content Add-Content [-Path] <String[...<o:p></o:p>
Cmdlet Add-History Add-History [[-InputObject] ...<o:p></o:p>
...<o:p></o:p>
|
<o:p> </o:p>
若要获得不强行进行换行以匹配屏幕宽度的输出,可以使用 Width 参数来指定行宽。由于 Width 是 32 位整数参数,因此其最大值为 2147483647。键入以下命令可以将行宽设置为此最大值:
Get-Command | Out-File -FilePath c:\temp\output.txt -Width 2147483647<o:p></o:p>
|
<o:p> </o:p>
如果希望按照控制台上所显示的格式对输出进行保存,则 Out-File cmdlet 尤其有用。若要更好地控制输出格式,您需要使用更高级的工具。我们将在下一章介绍这些工具,并提供有关对象操作的一些详细信息。
分享到:
相关推荐
PowerShell-7.2.6-win-x64 Windows PowerShell 是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能。
PowerShell 7相比 PowerShell 5有较大程度的改进。附上最新版的安装包,因为直接从Github下是很慢的。百度的离线下载也不能用。放在这里以备不时之需。方便大家。
Windows Powershell入门指南(中文)-微软资料.pdf
PowerShell-7.2.2-win-x64.msi powershell最新版安装包 windows
特别是,我们的大部分增长来自Linux平台,这是一个令人鼓舞的统计数据,因为我们致力于PowerShell可行的跨平台...... 但是,我们也可以清楚地看到,由于PowerShell在Windows平台上普及,我们的Windows使用量并没有...
PowerShell中提供了一个Out-String的cmdlet,来看看它的介绍:Out-String cmdlet 将 Windows PowerShell 管理的对象转换成字符串数组。默认情况下,Out-String 累积字符串并作为单个字符串返回它们,但您可以
PowerShell-7.0.2-win-x64.msi,最新版的PowerShell,但是上网下载非常不便利,在此提供下载
PowerShell中重启服务的cmdlet是Restart-Service,顾名思义就是把服务停止了再启动起来。 PowerShell重启服务(Restart-Service) 使用PowerShell可以很方便的操作Windows系统服务,比如实现自动重启服务。本文就...
--|PowerShell基础教程 --|WindowsPowerShelluserGuide |powershell 中文教程 --|Windows PowerShell 入门指南.pdf --|Windows PowerShell 入门.pdf --|Windows PowerShell 语言快速参考.rtf |Manning.Windows....
在最新版本中,PowerShell Core 使用 .NET Core 2.x 作为运行时。 PowerShell Core 支持 Windows、macOS 和 Linux 平台。
Pro PowerShell Desired State Configuration An In-Depth Guide to Windows PowerShell DSC(2nd) 英文epub 第2版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索...
PowerShell7.0.3支持组策略编辑,增加新语言功能如三元运算符。基于SSH的远程处理。PowerShell 7 是专为云、本地和混合环境设计,PowerShell 7 可以与 Windows PowerShell 5.1 共存。
在Windows 7中内置了PowerShell2.0, Windows 8中内置了PowerShell3.0。如果本机没有添加,可在网上下载安装包进行安装,或者下载WebPI,通过WebPI安装PowerShell。; 为防止恶意脚本的执行,PowerShell有一个执行策略...
解压后如果需要替换win+a中的powershell,只需要拷贝安装目录至%windir%\System32\WindowsPowerShell,重命名v1.0,将安装的新版本复制至新建的v1.0文件夹内,复制pwsh.exe为powershell.exe即可;微软希望所有平台...
由于github上下载powershell源代码很费劲,所以搬运了powershell的原装安装包过来,版本为6.1.0,解压缩,配置Path环境变量即可使用。
大版本更新,带来了新的cmdlet和API,一批bug也得到了集中修复。 而最令人期待的,当然还是新功能: 用ForEach-Object -Parallel进行管道并行化 新的运算符: 三元运算符:a ? b : c 管道链运算符:|| 和 &...
PowerShell-7.3.6-win-x64.msi
PowerShell-7.1.0-preview.1-win-x64.msi 和PowerShellV2_SDK_Samples.msi 安装程序
可以通过Get-Command -verb out查看Powershell都有哪些输出的命令。 代码如下: PS C:PowerShell> get-command -Verb out CommandType Name Definition ———– —- ———- Cmdlet Out-Default Out-Default [-...
Windows+Powershell入门指南(中文)-微软资料