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()}

 

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