Powershell使用对象

#Powershell对象=属性+方法
# 创建对象
# 通过New-Object可以创建一个对象,
# $knife=New-Object object
# $knife

# 给对象添加属性
# Add-Member -InputObject $knife -Name Color -Value "red" -MemberType NoteProperty
# $knife

# 增加方法
# 同样使用Add-Member,不过-memberType 选项使用ScriptMethod。
# 增加一个新的方法
#Add-Member -MemberType ScriptMethod -InputObject $knife -Name cut -Value {"i am a knift"}
# 指定参数的类型增加一个新的方法
#Add-Member -InputObject $knife  ScriptMethod screw{"phew ... its in"}
# 通过管道增加方法
# $knife | Add-Member -MemberType ScriptMethod corker{"plp..."}

# $knife.cut()
# $knife.screw()
# $knife.corker()

#在调用方法时如果没有使用圆括号,方法不会执行,但是可以返回方法的基本信息。


# Powershell属性:描述对象是什么
# $host.Version

# 属性中包含对象
# $Host.UI.RawUI

#只读属性和读写属性
$host.ui.RawUI.BackgroundColor="white"
#$host.ui.RawUI.ForegroundColor = "white"

# RawUI的属性
#
# ForegroundColor:前景色
# BackgroundColor:背景色
# CursorPosition:光标的位置
# WindowPosition:窗口的位置
# CursorSize:光标的大小
# BufferSize:缓冲区的大小
# WindowSize:窗口的大小
# MaxWindowSize:允许窗口的最大值
# MaxPhysicalWindowSize:窗口可能的最大值
# KeyAvailable:是否存在按键
# WindowTitle:窗口的标题


# 属性的类型
# 控制台光标的大小,值域在0-100,
# 用来控制关闭大小的百分比。可以将光标设置为75%,但是不能超过100%,否则就会产生错误。

# 另一个属性ForegoundColor的类型为Color枚举值。
# 因此给ForegoundColor所赋的值必须是已经在System.ConsoleColor中定义过的。
# $Host.UI.RawUI.ForegroundColor="Black"

# 可以使用[System.Enum]::GetNames 方法查看ConsoleColor定义的所有颜色。
# [System.Enum]::GetNames([System.ConsoleColor])

# 有时一个属性期望的赋值必须是一个指定类型的对象。

#1.先读取属性,保存为临时变量,更改临时变量,将临时变量赋给WindowSize
#2.直接创建一个System.Management.Automation.Host.Size,赋给WindowSize

# $tmp=$host.UI.RawUI.WindowSize
# $tmp
# $host.UI.RawUI.WindowSize
# $Host.UI.RawUI.WindowSize=New-Object System.Management.Automation.Host.Size(60,40)


#查看所有属性
# 因为属性和方法都是对象的成员,可以使用Get-Member可以返回它们的成员的详细信息
# 如果只显示属性可以使用参数 memberType 为“Property”

#$host | Get-Member -MemberType Property
# 在Definition列首先列出属性的具体类型,然后列出构造器,如果一个构造器中只有Get方法,没有Set方法,表示该属性为只读属性。

#Powershell方法(对象能做什么)
# 列出一个对象的所有方法可是使用Get-Member命令,
# $host | Get-Member -MemberType Method

#过滤内部方法
# $host.Version

# 标准方法
# 几乎每个对象都有一些继承自父类的方法,这些方法并不是该对象所特有的方法,而是所有对象共有的方法。
# Equals 比较两个对象是否相同
# GetHashCode 返回一个对象的数字格式的指纹
# GetType 返回一个对象的数据类型
# ToString 将一个对象转换成可读的字符串

# 过滤包含了下划线的方法可是使用操作符 -notlike 和 通配符 *
# $Host.UI.RawUI | Get-Member -me method | where {$_.Name -notlike '*_*'}


# 多个方法的签(writeline是方法名)
# $method=$host.UI | Get-Member writeline
# $method.Definition


# Powershell使用真实的对象工作
# 在变量中存储结果

#$filelist=dir
#$filelist
#使用对象的属性
#$obj=(dir)[0]
#$obj | Get-Member -MemberType Property


#Powershell特殊属性
#Powershell中 可以给一个对象增加属性,增加的属性仍然可以通过Get-Member的标签辨别
# 因为对象的正常属性标签名为:Property,新增加的属性标签多了一个前缀,如ScriptProperty和NoteProperty。


# MemberType包括:
# AliasProperty:另外一个属性的别名
# CodeProperty:通过静态的.Net方法返回属性的内容
# Property:真正的属性
# NoteProperty:随后增加的属性
# ScriptProperty:通过脚本执行返回一个属性的值
# ParameterizedProperty:需要传递参数的属性


# 不同的方法类型
#
# 类似于属性,Powershell对象也可以增加方法,方法类型包括:
# CodeMethod:映射到静态的.NET方法
# Method:正常的方法
# ScriptMethod:一个执行Powershell脚本的方法


#Powershell调用静态方法
# Powershell将信息存储在对象中,每个对象都会有一个具体的类型
# GetType()方法返回它的类型,该类型中有一个FullName属性,可以查看类型的完整名称。

#每一个类型都 可以包含一些静态的方法,可以通过方括号和类型名称得到类型对象本身,然后通过Get-Memeber命令查看该类型支持的所有静态方法。
# [System.DateTime] | Get-Member -Static -MemberType *Method
# 用Parse方法将一个字符串转换成DateTime类:
# [System.DateTime]::Parse("2019/02/3 11:25:23")
# 判断是否是闰年
# [System.DateTime]::IsLeapYear(1988)


# 另一个常用的类为Math类
# 例如求绝对值,三角函数,取整:
# [Math]::Abs(-10.89)
# [Math]::Sin([Math]::PI/2)
# [Math]::Truncate(2012.7765)


#Powershell创建对象
# 通过New-Object创建新对象
# New-Object String(‘*’,100)
# [String].GetConstructors() | foreach {$_.tostring()}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章