admin 管理员组

文章数量: 887031


2024年2月7日发(作者:jsp页面写java代码)

powershell dir输出详解

管道

PowerShell通过管道把命令连接起来,管道通过传输一个命令,把其输出作为另一个cmdlet的输入,使得第二个命令可以通过第一个命令的结果作为输入并联合起来运行。

输出结果到文件

利用管道把进程信息导出到CSV/XML文件

Get-Process|Export-CSV

-Process|Export-CliXML

默认情况下可以用>符号把命令的结果输出到命令行,>是powershell中兼容的一个快捷方式,实际上在powershell中的实现等同于|Out-File ,例如

Dir>-ChildItem|Out-File #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

Cmdlet ConvertFrom-Csv 7.0.0.0

y

Cmdlet ConvertFrom-Json 7.0.0.0

y

Cmdlet ConvertFrom-Markdown 7.0.0.0

y

Cmdlet ConvertFrom-SecureString 7.0.0.0

Cmdlet ConvertFrom-StringData 7.0.0.0

y

Cmdlet ConvertTo-Csv 7.0.0.0

y

Cmdlet ConvertTo-Html 7.0.0.0

y

Cmdlet ConvertTo-Json 7.0.0.0

y

Cmdlet ConvertTo-SecureString 7.0.0.0

Cmdlet ConvertTo-Xml 7.0.0.0

y

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${管理单元名称}加载某个管理单元

运行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只能通过AGet-User调用.

PowerShell配置文件

powershell手动导入模块后,如果下次重新打开powershell窗口,就需要把原来的模块重新导入.可以用Export-Console

C:导出当前配置.下次可以新建快捷方式在打开powershell窗口是自动载入配置-noexit-psconsolefile C:


本文标签: 模块 输出 管理