学习windows powershell(对象)
来源:互联网 发布:网页提取软件 编辑:程序博客网 时间:2024/05/17 07:08
在命令行方式下使用.net对象,而且还要象编程一样去用,真的感觉很累,非常的累,真的想把这块忽略过去,不过既然已经primer教程了,也把学习的结果写下来了.
Name Category Synopsis
---- -------- --------
ForEach-Object Cmdlet 针对每一组输入对象执行操作。
Where-Object Cmdlet 创建控制哪些对象沿着命令管道传递的筛选器。
Compare-Object Cmdlet 比较两组对象。
Measure-Object Cmdlet 度量对象的特征及其属性。
Tee-Object Cmdlet 通过管道将对象输入传递给文件或变量,然后通过管道传递输入。
New-Object Cmdlet 创建 .Net 或 COM 对象的实例。
Select-Object Cmdlet 选择一个对象或一组对象的指定属性。它还可以从对象的数组中选择唯一对象,也可以从对象数组的开头或
末尾选择指定个数的对象。
Group-Object Cmdlet 指定的属性包含相同值的组对象。
Sort-Object Cmdlet 按属性值对对象进行排序。
能用的命令不少,在学习的过程中并没有全部涉及,涉及的对象也只有一小部份使用方法,不过对于primer来说,要想掌握感觉也还是挺困难的,还好PS cmdlets是大小写不敏感的,要不学习起来真的比较困难.
一、静态类和方法/属性
静态类的引用那就很方便了,如:system.environment
PS C:/> [system.environment]::commandline
powershell
PS C:/> [system.environment]::username
Administrator
PS C:/> [system.environment].username
PS C:/> [system.environment]::processorcount
2
二、New-Object(创建新的对象)
PS Env:/> get-command new-object -syntax
New-Object [-TypeName] <String> [[-ArgumentList] <Object[]>] [-Verbose] [-Debug] [-ErrorAction <ActionPreference>] [-Er
rorVariable <String>] [-OutVariable <String>] [-OutBuffer <Int32>] (创建.net对象)
New-Object [-ComObject] <String> [-Strict] [-Verbose] [-Debug] [-ErrorAction <ActionPreference>] [-ErrorVariable <Strin
g>] [-OutVariable <String>] [-OutBuffer <Int32>] (创建com对象 )
创建.net具体的类的对象时候一定要用-typename参数,否则创建的对象就是system.object类,使用argumentlist参数赋值,构造一个对象,这个只要能明白对象的构造函数就能明白-argumentlist作用了。简单的示例如下:
PS C:/> $applog=new-object -typename system.diagnostics.eventlog -argumentlist a
pplication
PS C:/> $applog
Max(K) Retain OverflowAction Entries Name
------ ------ -------------- ------- ----
20,480 0 OverwriteAsNeeded 134 应用程序
PS C:/> $applog.entries
Index Time Type Source EventID Message
----- ---- ---- ------ ------- -------
5811 八月 31 16:59 Info Microsoft-Windows... 2 无法找到源“Microsoft...
5812 八月 31 16:59 Info Desktop Window Ma... 9009 桌面窗口管理器已退出...
5813 八月 31 16:59 Warn profsvc 1530 Windows 检测到注册表...
5814 八月 31 16:59 Info MSSQLSERVER 17147 由于系统关闭,SQL Ser...
......
上述例子创建了一个application eventlog对象,并将对象赋值给$applog变量,至于这个eventlog有哪些方法及属性,那可以通过以下命令获得:
PS C:/> $applog|get-member -membertype property
TypeName: System.Diagnostics.EventLog
Name MemberType Definition
---- ---------- ----------
Container Property System.ComponentModel.IContainer Container {...
EnableRaisingEvents Property System.Boolean EnableRaisingEvents {get;set;}
Entries Property System.Diagnostics.EventLogEntryCollection E...
Log Property System.String Log {get;set;}
......
new-object还可以创建COM对象,如创建一个WSH对象:
PS C:/> new-object -ComObject WScript.shell
SpecialFolders CurrentDirectory
-------------- ----------------
{C:/Users/Public/Desktop, C:/Program... C:/Users/Administrator
对于wsh对象,我几乎是一无所知,因此,也无法继续使用该对象来深入学习。
三、where-object:过滤
这个东西有点好用,继续使用上述的$applog
PS C:/> $applog.entries|where-object -filterscript {$_.source -eq "mssqlserver"}
Index Time Type Source EventID Message
----- ---- ---- ------ ------- -------
5814 八月 31 16:59 Info MSSQLSERVER 17147 由于系统关闭,SQL Ser...
5826 九月 01 07:30 Info MSSQLSERVER 17069 Microsoft SQL Server ...
5827 九月 01 07:30 Info MSSQLSERVER 17101 (c) 2005 Microsoft Co...
5828 九月 01 07:30 Info MSSQLSERVER 17103 保留所有权利。
5829 九月 01 07:30 Info MSSQLSERVER 17104 服务器进程 ID 为 1884。
5830 九月 01 07:30 Info MSSQLSERVER 15268 身份验证模式为 MIXED。
5831 九月 01 07:30 Info MSSQLSERVER 17111 正在文件 'D:/Program ...
5832 九月 01 07:30 Info MSSQLSERVER 17176 从有关的报告了解到,...
......
比较符如下:
-eq/-ne/-lt/-le/-gt/-ge/-like/-notlike/-contains/-notcontains ,对应用
相等/不等/小于/小于等于/大于/大于等于/类似/非类似/包含/不包含 包含和不包含是集合操作,如1,2,3 contains 2=true
比较的结果返回值为布尔型,任何非0字符都是true,整数0能够表达false,或者是对象$false.
和一般程序语言一样,同样有着逻辑计算符 -and/-or/-not,不管是哪种情况,操作数最好用括号括起来,我到现在也不知道其计算优先级顺序。
PS C:/> $applog.entries|where-object -filterscript {($_.source -eq "mssqlserver"
) -and ($_.message -like "M*")}
Index Time Type Source EventID Message
----- ---- ---- ------ ------- -------
5826 九月 01 07:30 Info MSSQLSERVER 17069 Microsoft SQL Server ...
应该再次提醒的就是:
1、操作符是以“-”开头的,这个非常容易被忽略,记着eq容易,常常忘记前面的“-”
2、$_表示当前对象,因此可以象对象一样引用其属性,或者是使用其方法。
3、过滤的作用就是将送入下一道处理的对象筛选一次,适合条件的进入|后的命令处理,我们上面的例子是默认的|out-host
4、对于get-wmiobject生成的对象同样适用于where-object,和get-wmiobject本身所带的-filter参数并冲突,结合使用效果更好,但是并不能替代-filter参数
四、sort-object(对象显示顺序排序)
1、可以多个管道符组合使用,后面的sort-object先进行排序
2、同一sort-object下,可以对多个属性同时进行排序,列在前的属性先进行排序,同一sort-object下,不能对多列属性分别行升序/降序排序,所有属性只能使用一种排序方式
示例如下:
PS C:/> get-childitem|sort-object -property mode,lastwritetime
目录: Microsoft.PowerShell.Core/FileSystem::C:/
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2006/9/19 5:43 24 autoexec.bat
-a--- 2006/9/19 5:43 10 config.sys
-a--- 2008/7/16 14:18 1024 .rnd
-a--- 2008/8/12 14:14 4 ev516.txt
-a--- 2008/8/30 14:56 0 out.txt
-ar-s 2008/7/16 12:14 8192 BOOTSECT.BAK
d---- 2008/1/19 17:40 PerfLogs
d---- 2008/7/19 12:07 dell
d---- 2008/7/19 12:07 Intel
d---- 2008/8/25 12:42 Windows
d-r-- 2008/7/19 7:34 Users
d-r-- 2008/9/1 7:45 Program Files
PS C:/> get-childitem|sort-object -property mode -descending|sort-object -proper
ty lastwritetime
目录: Microsoft.PowerShell.Core/FileSystem::C:/
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2006/9/19 5:43 24 autoexec.bat
-a--- 2006/9/19 5:43 10 config.sys
d---- 2008/1/19 17:40 PerfLogs
-ar-s 2008/7/16 12:14 8192 BOOTSECT.BAK
-a--- 2008/7/16 14:18 1024 .rnd
d-r-- 2008/7/19 7:34 Users
d---- 2008/7/19 12:07 dell
d---- 2008/7/19 12:07 Intel
-a--- 2008/8/12 14:14 4 ev516.txt
d---- 2008/8/25 12:42 Windows
-a--- 2008/8/30 14:56 0 out.txt
d-r-- 2008/9/1 7:45 Program Files
五、foreach-object(在一组队象内枚举)
最简单的例子如下:
PS C:/> 1,2,3,4|foreach-object -process {$_+10}
11
12
13
14
为数据的每个数字加上10,1,2,3,4是可以创建一个数组的,书上没有说明怎么个用法。
六、measure-object,对某些属性进行求和等处理,例子在下面的一个命令讲
七、get-wmiobject
wmi=windows management instrumentation(windows管理插件),使用get-wmiobject -list,随便看一下就知道,一个系统中这种插件多如得很,我的系统中100多,列出以后只感觉一脸茫然,这么多对象,怎么用?还好,我是个乐观的人,想想,用不到就算了,用到了总之能够学会的。我就举个例子了,同时也是个measure-object的例子:
PS C:/> get-wmiobject -class win32_logicaldisk|where-object -filterscript {$_.dr
ivetype -eq 3}|measure-object -property freespace,size -sum|format-table -proper
ty property,sum
Property Sum
-------- ---
freespace 17811427328
size 79990747136
首先是获得逻辑驱动器,其次是过滤,只有硬盘进入计算,最终以表格列出结果。
八、select-object,从一个对象中选取部份属性并生成另一对象,应该说明的是,即使原对象是只读或者属性只读,select后的对象是可读写的
写到这儿也就写完了,使用方法容易掌握,但要实际应用,比较困难,因为那么多类,累不死人才怪的事情。
- 学习windows powershell(对象)
- 学习windows powershell(概览)
- [Windows PowerShell03]-PowerShell面向对象
- ◎Windows PowerShell学习笔记
- 学习windows powershell(文件系统导航)
- [14]Windows PowerShell DSC学习系列---如何Debug PowerShell DSC?
- 学习windows powershell(基本信息获得和显示)
- 学习windows powershell(进程和服务)
- 学习windows powershell(完成primer课程)
- Windows PowerShell 2.0语言对象与对象类型
- Windows PowerShell
- Windows powershell
- windows powershell
- windows powershell
- Windows PowerShell 2.0语言开发之管道对象
- PowerShell学习
- Powershell学习
- [11] Windows PowerShell DSC学习系列---如何定制一个基于PowerShell脚本实现的DSC Resource
- 深入ASP.NET数据绑定
- Struts2 与 Struts1区别
- vs2005下编译pwlib
- 随便说说
- 在c#中,cs文件post数据到其他的网址中
- 学习windows powershell(对象)
- 删除某个数据库中的所有表
- SharePoint 在企业门户市场腹背受敌
- 无法创建SSP,没有索引器,如何打开search服务
- eos程序员培训教程2(连载)
- javascript之函数作用域和闭包[function scope and closure]
- Shark类库,优雅的数据访问操作(clone from cnblog 08年07月17日)
- EasyAVS v1.20 AVS辅助生成工具
- 学习Model-Glue框架的系列教程-Building your first Model-Glue Application中文理解通俗版(2)