powershell dir输出详解
管道
PowerShell通过管道把命令连接起来,管道通过传输一个命令,把其输出作为另一个cmdlet的输入,使得第二个命令可以通过第一个命令的结果作为输入并联合起来运行。
输出结果到文件
利用管道把进程信息导出到CSV/XML文件
Get-Process|Export-CSV process.csvGet-Process|l
默认情况下可以用>符号把命令的结果输出到命令行,>是powershell中兼容的一个快捷方式,实际上在powershell中的实现等同于|,例如
Dir&Get-ChildItem|#Dir是Get-ChildItem的别名
Out-File创建的文件默认由80列宽,可以用-Width参数覆盖这个限制.
Powershell中由很多Out-Cmdlets,指定了默认的输出位置.当执行Dir的时候,实际运行的是Dir|Out-Default,而Out-Default实际指向的是Out-Host,所以命令的结果会输出到控制台.Windows下可用的Out-Cmdlets还有Out-Printer,Out-GridView等等
输出结果转化
powershell有类似Export-cmdlets的命令,叫Convert-cmdlets,可以把源输出的对象转化为html等指定类型,也可以从源对象转化为其他类型.不过Convert不会把转化后的对象直接保存到文件,而是需要叠加管道符,使用Out-Cmdlets保件.
Get-Command*convert*
CommandType Name Version Source----------------------------
Cmdlet Convert-Path 7.0.0.0 Microsoft.PowerShell.Manage…
Cmdlet ConvertFrom-Csv 7.0.0.0 Microsoft.PowerShell.Utility
Cmdlet ConvertFrom-Json 7.0.0.0 Microsoft.PowerShell.Utility
Cmdlet ConvertFrom-Markdown 7.0.0.0 Microsoft.PowerShell.Utility
Cmdlet ConvertFrom-SecureString 7.0.0.0 Microsoft.PowerShell.Securi…
Cmdlet ConvertFrom-StringData 7.0.0.0 Microsoft.PowerShell.Utility
Cmdlet ConvertTo-Csv 7.0.0.0 Microsoft.PowerShell.Utility
Cmdlet ConvertTo-Html 7.0.0.0 Microsoft.PowerShell.Utility
Cmdlet ConvertTo-Json 7.0.0.0 Microsoft.PowerShell.Utility
Cmdlet ConvertTo-SecureString 7.0.0.0 Microsoft.PowerShell.Securi…
Cmdlet ConvertTo-Xml 7.0.0.0 Microsoft.PowerShell.Utility
Application afconvert 0.0.0.0/usr/bin/afconvert
Application apfs_hfs_convert 0.0.0.0/sbin/apfs_hfs_convert
Application avconvert 0.0.0.0/usr/bin/avconvert
Application convert-caffe2-to-onnx 0.0.0.0/usr/local/bin/convert-caff…
Application convert-onnx-to-caffe2 0.0.0.0/usr/local/bin/convert-onnx…
Application jupyter-nbconvert 0.0.0.0/usr/local/bin/jupyter-nbco
Cmdlets管理进程
带有相同名词的Cmdlets之间可以通过管道互传信息
例如使用powershell关闭记事本
Get-Process-Name notepad|Stop-Process
cmdlets修改系统时,有一个内部定义的影响级别(impact level),并且不允许修改,Shell有一个响应的$ConfirmPreference设置,默认为High,如果cmdlets的内部影响级别大于Shell的$ConfirmPreference时,shell都会询问是否确定.例如Stop-Process的时候对于每个进程都会询问.如果cmdlets的内部影响级别小于Shell的$ConfirmPreference,就不会弹出提示.如果需要每次都弹出,可以加上-Confirm参数.
PowerShell扩展
PowerShell存在两种类型的扩展,模块和管理单元.
管理单元
管理单元也叫PSSnapin,通常包含一个或者多个DLL文件,同时包含配置XML文件和帮助文档.PSSnapin必须先安装注册,powershell才能识别他们的存在.
PSSnapin的概念被逐步被微软移除了,将来可以能越来越少出现,在内部,微软的重点是提供扩展模块.
Windows可以在Powershell中运行Get-PSSnapin-registered获取到可用的管理单元列表
运行Add-PSSnapin${管理单元名称}加载某个管理单元
powershell创建目录运行Get-Command-pssnapin${管理单元名称}出已增加的cmdlets命令
运行Get-PSProvider可以查看管理单元是否成功加载到PSDrive
模块
PowerShell提供的第二种扩展方式称为模块,模块被设计的更加独立,因此更加容易分发,工作原理类似于PSSnaoins.
模块不需要复杂的注册,PowerShell会自动在一个特定的目录下面查模块,PSModule这个环境变量定义了PowerShell期望存放模块的路径
Get-Content Env:PSModulePath
PSModulePath变量不能在PowerShell中修改,可以在系统控制面板中修改.或者通过组策略修改,一些微软或者第三方的产品会修改改变量
Get-Module,Import-Moudle可以检索/导入远程/本地服务器的模块
如果一个模块不在PSModulePath变量下面,可以用Import-Module并指定模块的完整路径.
命名冲突
如果两个模块中由相同的cmdlets命令,比如A和B模块都有Get-User的cmdlets,B比A晚加载到powershell中powershell会执行B的Get-User.A中的Get-User只能通过A\Get-User调用.
PowerShell配置文件
powershell手动导入模块后,如果下次重新打开powershell窗口,就需要把原来的模块重新导入.可以用Export-Console C:\powershell.psc导出当前配置.下次可以新建快捷方式在打开powershell窗口是自动载入配置-noexit-psconsolefile C:\powershell.psc

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。