探索PowerShell (四) PowerShell的对象、格式与参数_PowerShell

今天贴博文晚了,感谢各位能继续关注!

本节将要给大家介绍一下PowerShell下的对象,基本格式以及参数。依然属于PowerShell的基础。

PowerShell中的对象

在本教程开篇我们说过,PowerShell是基于面向对象化的,不像传统的shell那样基于文本。这其中最主要的原因就是因为Win平台在管理操作上主要以面向对象为主,因此为了符合系统特点和我们的操作习惯,PowerShell也继承了这一特色。因此,不像传统的shell,在PowerShell中,我们可以随意地与对象进行互动,

先来认识一下,什么是对象——object

不知各位有没有从事开发的经验。实际上,面向对象这一概念的提出就是为了更好用程序语言解决现实问题而提出的。

废话不多说,直接切入正题。在PowerShell中,“对象”是指我们收集信息或者执行操作的行为。包括属性(信息,我们可以收集)和方法(我们可以执行)。

有一个生动的例子——“灯泡”。对象是显而易见的,它是一个灯泡。一个灯泡的属性可能包括了其颜色,功率和类型(荧光灯,白炽灯或卤素灯)。对于它的操作,或者称之为方法,则是我们可以执行的行为,如打开和关闭。这很容易理解!

让我们看看在PowerShell中一个对象的属性以及其方法。

首先,你可能会经常使用它"Get-Member”,这个cmdlet是用来检查一个对象具有哪些属性和方法的。

例如:


get-service | get-member 

使用这条命令就可以查看"get-service”t的属性和方法。在这个例子中,我们使用管道符来进行命令的传递。运行结果如下:

当然,我们可以使用"get-member"的参数来查看"get-service"的所有的属性类对象,或者方法类对象。

例如:

查看"get-service"的所有属性类对象


Get-Service | Get-Member -MemberType Property<enter> 

查看get-service"的所有方法类对象


Get-Service | Get-Member -MemberType Method<enter> 

为什么我们如此的强调对象?原因就是在PowerShell中,所有的一切都是对象。

例如:

我们要找出指定日期写入d:\的文件有哪些,使用如下命令:

Get-ChildItem -Path d:\ -Recurse | Where-Object {$_.LastWriteTime -gt "01/01/2010"}<enter>

现在来解释一下:

首先,"get-childitem"是用来枚举我们的文件系统的,使用"-path"参数,将路径指向"d:\",使用"-recurse"参数,意味着将显示所有的文件,甚至是子目录下的。接下来,我们将结果使用管道符传递给循环声明"where-object"中,用来筛选出符合条件的结果。

那么,"lastwritetime"又是什么?

我们使用如下命令看看"get-childitem"都有哪些属性可供我们筛选:

get-chileitem | get-member

可以发现其中一条:

对,就是这个。我们需要筛选出的对象属性就是最后写日期。在后面的定义中可以看到"LastWriteTime"会将一个"Syetem.DateTime"数据类型作为反馈。因此,在整个语句的后半部,我们使用了"-gt"进行进一步的筛选,"-gt"是"greater than"的缩写,意味“大于”。在以后的教程中我将会介绍更多类似这样的操作。前面说到,"LastWriteTime"是一个"Syetem.DateTime"类型的数据,因此,我们最终使用类似"01/01/2010"这样的表达。这一点需要大家多加注意,在以后的运用中需要注意数据类型。

后续的教程中,我还会尽可能全面的介绍WMI、COM以及 .NET,不过,我们现在知道并掌握上面的就足够了。

PowerShell的格式

在这一小节,我将介绍PowerShell中的格式化输出。当我们使用一个cmdlet时,参数"format-"允许我们选择一种习惯的输出模式。使用以下命令试一试:

Get-Command Format-* <enter>

其结果为:

好了,这一个知识点很简单。请各位童鞋使用如下命令试一试,结果怎么样看看就知道了。

get-childitem c:\windows | format-table <enter>get-childitem c:\windows | format-table -autosize <enter>get-childitem c:\windows | format-custom <enter>get-childitem c:\windows | format-list <enter>get-childitem c:\windows | format-list -Property FullName <enter>get-childitem c:\windows | format-wide <enter>

当然,复杂些的还有以下这些,我不想解释过多,大家只要肯亲自动手试一试,一眼就能看明白。


Get-ChildItem C:\Windows -Recurse | Format-List -Property FullName,CreationTime,LastWriteTime<enter>

Get-ChildItem C: | Format-Wide -Column 3<enter>

另外,在其他cmdlet中,存在其他格式的输出。例如,在"get-process"中就有"group-object","Get-EventLog"中我们可能用到"Sort-Object",甚至,我们可以输出为特定格式的文件,例如使用"Convertto-HTML"输出为html,使用"Export-CSV"输出为表格文件(可以使用Excel打开)。

统统举例如下(记住管道符):


Get-Process | Group-Object Company<enter>

Get-EventLog System | Group-Object eventid<enter>

Get-EventLog System | Group-Object eventid | Sort-Object Count -descending<enter>

Get-Process | ConvertTo-html<enter>

Get-Process | ConvertTo-html | out-file “Processes.html”<enter>

Get-Process | Export-CSV Processes.csv<enter>

至于打开文件,使用如下命令即可:


Invoke-Item Processes.html<enter> 

Invoke-Item Processes.csv<enter>

看看截图吧(输出为".CSV"文件):

使用"Invoke-Item"命令打开:


Invoke-Item Processes.csv <Enter>

使用PowerShell的格式化输出是不是很简单呢?个人认为比VBScript要更加容易上手一些。管理系统更加方便!

PowerShell的常见参数

我们前面介绍过,为了简化我们的记忆,PowerShell对cmdlet使用了全新的"动词-名词"的命名方式,更加方便的是,几乎所有的cmdlet都拥有统一的标准化参数,当然,我说了,几乎所有的——并非全部。下面这个列表,列举出了“公共参数”(这些参数的名称是我们无法自定义使用的):



-confirm 在执行cmdlet前提示用户。

-debug  提供相关调试信息。

-ErrorAction 提示cmdlet在执行某项操作时可能出现的错误。如:继续,停止等。 

-ErrorVariable  使用一个特定的变量($error)来保存错误信息。

-OutVariable 用于保存输出信息的变量。

-OutBuffer 确定在进行下一次管道传递前需要缓存的对象数量。

-Verbose 为我们提供更多细节。

-whatif  并不会真正执行cmdlet,只是告诉你会发生什么。


此外,PowerShell中还保留了这些参数的下列别名:vb、db、ea、ev、ov 和 ob。

参数太多不好记?好办,记得使用"Tab"键,如:


get-service -<Tab> 

或者使用帮助命令"get-help":


get-help get-service -full <Enter>

好了,我们做一些简单的演示吧:


Set-ExecutionPolicy Unrestricted -whatif <enter> 

是不是很方便?在执行cmdlet之前,"-whatif"就会告诉你接下来会发生什么。

那么如下这条cmdlet呢:


Set-ExecutionPolicy Unrestricted -confirm <enter> 

是的,它将返回一条验证操作,以获取用户的进一步许可。只是"Y"、"A"、"N"、"L"与"?"我们都能轻易理解,那么"S"呢?

请注意观察以下执行结果:


Set-ExecutionPolicy Unrestricted -confirm<enter>  

Are you sure you want…  

S<enter> (places the prompt in suspend mode as denoted by “>>”).  

>>Get-ExecutionPolicy<enter>  

Resricted (or whatever the policy is set to).  

>>exit<enter> (Typing “exit” leaves suspend mode and returns to the original command)  

Are you sure you want…  

Y<enter> (Confirms “Yes” and sets the ExecutionPolicy to “Unrestricted”). 

执行实例截图:

聪明的你,明白了么?



好了,本节内容就到这里。本节中对PowerShell中对象、格式与参数的介绍,仅仅是其冰山一角,在后续的教程中,我们将继续利用今天学习的来进行工作。当然,在本节中还有很多其他我们尚未涉及到的内容、参数等,希望各位童鞋能积极利用PowerShell中所提供的工具进行探索,如"get-help"、"get-member"命令等。

Ps:最后,非常感谢各位能热情而持续的关注本教程,如果您有任何意见或问题,请进行留言,我将做详细解答!谢谢。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索对象
, 参数
, powershell
格式
powershell 参数、powershell 输入参数、powershell 对象、powershell 创建对象、powershell 函数 参数,以便于您获取更多的相关知识。

时间: 2024-08-02 23:01:25

探索PowerShell (四) PowerShell的对象、格式与参数_PowerShell的相关文章

PowerShell小技巧之同时使用可选强制参数_PowerShell

在下面脚本函数中让可选参数和强制参数必须同时使用. 下面演示当可选参数出现,也必须使用这个强制参数. function Connect-Somewhere { [CmdletBinding(DefaultParameterSetName='A')] param ( [Parameter(ParameterSetName='A',Mandatory=$false)] [Parameter(ParameterSetName='B',Mandatory=$true)] $ComputerName, [

探索PowerShell (二) PowerShell的基本操作_PowerShell

PowerShell控制台 打开PowerShell,显示如下界面: 命令提示符前缀为: PS C:\Users\MaRui>  PS的意思为正在运行PowerShell中,而C:则是我的主目录驱动器号,不同机器会有所不同. 最最最基本的操作与cmd.dos.sh等相同. cmdlet命令 虽然有超过一百条新的PowerShell命令需要去学习,但是,与大多数命令行界面一样,PowerShell命令已经被标准化.它使用"动词-名词"的命名形式作为一个cmdlet命令.该标准大大降

探索PowerShell (三) PowerShell下使用Aliases_PowerShell

不知道各位有没有接触过linux,我才疏学浅,对alias的认识是从linux上来的.Linux常用的Bash命令也是有上百个,虽然一般情况下命令都非常简短,不过很多时候需要大量的却是大量的参数,这样,对很多初学者来说,背命令变成为最头疼的事情,也使得很多Linux初学者望而生畏.因此,在linux下,很常用的就是alias,也就是别名.当然,PowerShell很好的借鉴了这一点. 这一节就来介绍PowerShell下的Aliases. 在PowerShell中,为了习惯于使用,可以使用别名代

Android艺术开发探索第四章——View的工作原理(上)

Android艺术开发探索第四章--View的工作原理(上) 这章就比较好玩了,主要介绍一下View的工作原理,还有自定义View的实现方法,在Android中,View是一个很重要的角色,简单来说,View是Android中视觉的呈现,在界面上Android提供了一套完整的GUI库,里面有很多控件,但是有时候往往并不能满足于需求,所以只有自定义View了,我们会简单的说下流程,然后再去实践 除了View的三大流程之外,View常见的回调方法也是必须掌握的,比如构造方法,onAttach,onV

javascript日期对象格式化为字符串的实现方法

 本篇文章主要是对javascript日期对象格式化为字符串的实现方法进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 javascript提供的日期格式化太简单,一般应用都需要自己实现格式化方法.下面是我想出的一个格式化处理方案,应该是可以满足常用的需求.日期模板中可以使用任意分隔符,还可以使用文字作为分隔符,甚至支持类似yyyyMMdd之类没有分隔符的格式化.    原理:用正则表达式将日期模板中的日期元素[如yyyy, MM, dd]和分隔符拆分成数组,然后用实际的值替换日期

PowerShell获取当前进程PID的小技巧_PowerShell

本文介绍如何在PowerShell中获取当前PowerShell进程的PID,然后用它来做一些有趣的事情. 有没有试过在powershell命令行窗口中输入"$pid"?试试看. 复制代码 代码如下: PS C:\Users\zhanghong> $pid 4404 对于PID,我们貌似不陌生.是的,它就是一个进程的进程ID.那这里的"$pid"是谁的进程ID呢?是当前powershell这个命令行窗口的powershell进程的进程ID.注意,小编在先打开一

Flash对象在(x)HTML中的格式和参数及安全性

这是份总结,有不恰达的地方欢迎一同讨论 联系方式 : 龙藏 longzang@taobao.com 点击这里全幅围观 或者点下面大图去 slideshare.net 站点围观: Flash对象在(X)Html中的格式和参数及安全性 PDF下载: Flash对象在(x)HTML中的格式和参数及安全性 Download "FlashObjectInHTML"

XSL对象格式使用指南(一)

对象          World Wide Web 联盟的规范书将可扩展样式语言(XSL)规划成两个部分:      ■XSLT用来转换XML文件   ■XSL对象格式(XSL FO) 用来详细说明格式语句的 XML函数库.   XSLT 非常容易学习和使用.只需要花费很少的时间,开发者就能将XML 文档转换成可以在用户自己浏览器上看到的HTML 文档.这也是开发者喜欢使用XSLT的原因.   XSL对象格式是一个以XML为基础的扩展函数库,能详细定义标记页数.版面和字体等网页内容信息.XSL

Docker在英雄联盟游戏中的实践探索(四)

本文讲的是Docker在英雄联盟游戏中的实践探索(四),[编者的话]这篇博客是Riot的Docker实践系列博客的第四篇,主要讨论了如何添加一个基于Nginx的代理容器,以及如何用Compose来管理多容器应用. 背景 如果你刚加入我们,可以先从这篇介绍的文章开始,了解我们是如何完成英雄联盟的持续发布,以及我们是如何发现这个技术栈可以很好地解决我们的问题. 在我们的第一篇文章中,我们介绍了如何把Jenkins放在Docker容器中.第二篇文章中,我们介绍了如何使用Docker数据卷容器来创建持久