亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PowerShell > 正文

Windows Powershell方法(對象能做什么)

2020-10-29 21:02:30
字體:
來源:轉載
供稿:網友

方法定義了一個對象可以做什么事情。當你把一個對象輸出在控制臺時,它的屬性可能會被轉換成可視的文本。但是它的方法卻不可見。列出一個對象的所有方法可是使用Get-Member命令,給“MemeberType”參數 傳入“Method”:

復制代碼 代碼如下:

PS C:Powershell> $Host | Get-Member -MemberType Method

   TypeName: System.Management.Automation.Internal.Host.InternalHost

Name                     MemberType Definition
----                     ---------- ----------
EnterNestedPrompt       Method     System.Void EnterNestedPrompt()
Equals                   Method     bool Equals(System.Object obj)
ExitNestedPrompt        Method     System.Void ExitNestedPrompt()
GetHashCode             Method     int GetHashCode()
GetType                  Method     type GetType()
NotifyBeginApplication  Method     System.Void NotifyBeginApplication()
NotifyEndApplication    Method     System.Void NotifyEndApplication()
PopRunspace             Method     System.Void PopRunspace()
PushRunspace            Method     System.Void PushRunspace(runspace runspace)
SetShouldExit            Method     System.Void SetShouldExit(int exitCode)
ToString                 Method     string ToString()

過濾內部方法

Get-Memeber列出了一個對象定義的所有方法,但并不是所有的方法都有用,有些方法的的用處非常有限。

Get_ 和 Set_ 方法

所有名稱以”get_”打頭的方法都是為了給對應的屬性返回一個值。例如”get_someInfo()”方法的作用就是返回屬性someInfo的值,因此可以直接通過屬性調用。

復制代碼 代碼如下:

PS C:Powershell> $Host.Version

Major  Minor  Build  Revision
-----  -----  -----  --------
2      0      -1     -1

PS C:Powershell> $Host.get_Version()

Major  Minor  Build  Revision
-----  -----  -----  --------
2      0      -1     -1

類似的象”set_someinfo”一樣,該方法只是為了給屬性someinfo賦值,可以直接通過屬性賦值調用。如果一個對象中只有”get_someinfo”,沒有對應的”set_someinfo”,說明someinfo這個屬性為只讀屬性。

標準方法

幾乎每個對象都有一些繼承自父類的方法,這些方法并不是該對象所特有的方法,而是所有對象共有的方法。
Equals 比較兩個對象是否相同
GetHashCode 返回一個對象的數字格式的指紋
GetType 返回一個對象的數據類型
ToString 將一個對象轉換成可讀的字符串

過濾包含了下劃線的方法可是使用操作符 -notlike 和 通配符 *

復制代碼 代碼如下:

PS C:Powershell> $Host.UI.RawUI | Get-Member -me method | where {$_.Name -notlike '*_*'}

   TypeName: System.Management.Automation.Internal.Host.InternalHostRawUserInterface

Name                 MemberType Definition
----                 ---------- ----------
Equals               Method     bool Equals(System.Object obj)
FlushInputBuffer      Method     System.Void FlushInputBuffer()
GetBufferContents    Method     System.Management.Automation.Host.BufferCell[,] GetBufferCo
GetHashCode           Method     int GetHashCode()
GetType               Method     type GetType()
LengthInBufferCells  Method     int LengthInBufferCells(string str), int LengthInBufferCell
NewBufferCellArray  Method     System.Management.Automation.Host.BufferCell[,] NewBufferCe
ReadKey               Method     System.Management.Automation.Host.KeyInfo ReadKey(System.Ma
ScrollBufferContents Method     System.Void ScrollBufferContents(System.Management.Automati
SetBufferContents    Method     System.Void SetBufferContents(System.Management.Automation.
ToString              Method     string ToString()

調用方法

一定要注意,在調用一個方法前,必須知道這個方法的功能。因為有的命令可能比較危險,例如錯誤地修改環境變量。調用一個方法,通過圓點加圓括號:
$Host.GetType()

調用帶參數的方法

UI對象有很多實用的方法,可以通過get-member預覽

復制代碼 代碼如下:

PS C:Powershell> $Host.UI | Get-Member -MemberType method

   TypeName: System.Management.Automation.Internal.Host.InternalHostUserInterface

Name                   MemberType Definition
----                   ---------- ----------
Equals                 Method     bool Equals(System.Object obj)
GetHashCode            Method     int GetHashCode()
GetType                Method     type GetType()
Prompt                 Method     System.Collections.Generic.Dictionary[string,psob
PromptForChoice        Method     int PromptForChoice(string caption, string messag
PromptForCredential    Method     System.Management.Automation.PSCredential PromptF
ReadLine                Method     string ReadLine()
ReadLineAsSecureString Method     System.Security.SecureString ReadLineAsSecureStri
ToString                Method     string ToString()
Write  Method     System.Void Write(string value), System.Void Writ
WriteDebugLine        Method     System.Void WriteDebugLine(string message)
WriteErrorLine          Method     System.Void WriteErrorLine(string value)
WriteLine               Method     System.Void WriteLine(), System.Void WriteLine(Sy
WriteProgress           Method     System.Void WriteProgress(long sourceId, System.M
WriteVerboseLine      Method     System.Void WriteVerboseLine(string message)
WriteWarningLine      Method     System.Void WriteWarningLine(string message)

哪一個參數是必須的
從列表中篩選出一個方法,再通過Get-Member得到更多的信息。

復制代碼 代碼如下:

PS C:Powershell> $info=$Host.UI |  Get-Member WriteDebugLine
PS C:Powershell> $info

   TypeName: System.Management.Automation.Internal.Host.InternalHostUserInterface

Name           MemberType Definition
----           ---------- ----------
WriteDebugLine Method     System.Void WriteDebugLine(string message)

PS C:Powershell> $info.Definition
System.Void WriteDebugLine(string message)

Definition屬性告訴你怎樣調用一個方法,每一個方法的定義都會返回一個Objec對象,System.Void 是一個特殊的類型,代表什么都沒有,即返回值為空。
接下來就可以根據函數的定義,給它傳進合適的參數調用了。

復制代碼 代碼如下:

PS C:Powershell> $Host.UI.WriteDebugLine("Hello 2012 !")
調試: Hello 2012 !

低級函數

上述的WriteDebugLine()函數并沒有什么特別。事實上所謂的$Host中的很多方法只不過是一些簡單的Cmdlets命令。例如使用如下cmdlet輸出一條調試通知

復制代碼 代碼如下:

PS C:Powershell> Write-Debug "Hello 2012 !"
PS C:Powershell> Write-Debug -Message "Hello 2012 !"

上述的命令并沒有輸出黃色的調試信息,這和$DebugPreference配置有關,因為$DebugPreference的默認值為:SilentlyContinue。
當$DebugPreference為Stop,Continue,Inquire時就會輸出調試消息:

復制代碼 代碼如下:

PS C:Powershell> [System.Enum]::GetNames([System.Management.Automation.ActionPreference])
SilentlyContinue
Stop
Continue
Inquire
PS C:Powershell> $DebugPreference="stop"
PS C:Powershell> Write-Debug "Hello 2012"
調試: Hello 2012
Write-Debug : 已停止執行命令,因為首選項變量“DebugPreference”或通用參數被設置為 Stop。
所在位置 行:1 字符: 12
+ Write-Debug <<<<  "Hello 2012"     + CategoryInfo          : OperationStopped: (:) [Write-Debug], ParentContainsErrorRecordException     + FullyQualifiedErrorId : ActionPreferenceStop,Microsoft.PowerShell.Commands.WriteDebugCommand PS C:Powershell> $DebugPreference="continue"
PS C:Powershell> Write-Debug "Hello 2012"
調試: Hello 2012

WriteErrorLine,WriteVerboseLine,WriteWarningLine的情況也類似。如果你不想受$DebugPreference配置的依賴,輸出錯誤消息可以直接使用 $host.UI.WriteDebugLine()方法。

多個方法的簽名

有些方法名相同,可以接受不同類型或者不同個數的參數,如何查看一個方法支持的所有簽名 ,使用Get-Member獲取方法對象,然后查看Definition屬性。

復制代碼 代碼如下:

PS C:Powershell> $method
PS C:Powershell> $method=$Host.UI | Get-Member WriteLine
PS C:Powershell> $method.Definition
System.Void WriteLine(), System.Void WriteLine(System.ConsoleColor foregroundColor, System.ConsoleColor backgroundColor
, string value), System.Void WriteLine(string value)

但是Definition的輸出閱讀不方便,可是稍加潤色。

復制代碼 代碼如下:

PS C:Powershell> $method.Definition.Replace("),",")`n")
System.Void WriteLine()
System.Void WriteLine(System.ConsoleColor foregroundColor, System.ConsoleColor backgroundColor, string value)
System.Void WriteLine(string value)

創建選擇菜單

這里需要使用$host.UI.PromptForChoice()方法,先查看方法的定義:

復制代碼 代碼如下:

PS C:Powershell> $host.ui.PromptForChoice

MemberType          : Method
OverloadDefinitions : {int PromptForChoice(string caption, string message, System.Collections.ObjectModel.Collection[Sy
                      stem.Management.Automation.Host.ChoiceDescription] choices, int defaultChoice), System.Collection
                      s.ObjectModel.Collection[int] PromptForChoice(string caption, string message, System.Collections.
                      ObjectModel.Collection[System.Management.Automation.Host.ChoiceDescription] choices, System.Colle
                      ctions.Generic.IEnumerable[int] defaultChoices)}
TypeNameOfValue     : System.Management.Automation.PSMethod
Value               : int PromptForChoice(string caption, string message, System.Collections.ObjectModel.Collection[Sys
                      tem.Management.Automation.Host.ChoiceDescription] choices, int defaultChoice), System.Collections
                      .ObjectModel.Collection[int] PromptForChoice(string caption, string message, System.Collections.O
                      bjectModel.Collection[System.Management.Automation.Host.ChoiceDescription] choices, System.Collec
                      tions.Generic.IEnumerable[int] defaultChoices)
Name                : PromptForChoice
IsInstance          : True

下面的腳本演示如何創建選擇菜單:

復制代碼 代碼如下:

$SwitchUser = ([System.Management.Automation.Host.ChoiceDescription]"&Switchuser")
$LoginOff = ([System.Management.Automation.Host.ChoiceDescription]"&LoginOff")
$Lock= ([System.Management.Automation.Host.ChoiceDescription]"&Lock")
$Reboot= ([System.Management.Automation.Host.ChoiceDescription]"&Reboot")
$Sleep= ([System.Management.Automation.Host.ChoiceDescription]"&Sleep")

$selection = [System.Management.Automation.Host.ChoiceDescription[]]($SwitchUser,$LoginOff,$Lock,$Reboot,$Sleep)
$answer=$Host.UI.PromptForChoice('接下來做什么事呢?','請選擇:',$selection,1)
"您選擇的是:"
switch($answer)
{
0 {"切換用戶"}
1 {"注銷"}
2 {"鎖定"}
3 {"重啟"}
4 {"休眠"}
}

復制代碼 代碼如下:

PS C:PowerShell> .test.ps1
接下來做什么事呢?
請選擇:
[S] Switchuser  [L] LoginOff  [L] Lock  [R] Reboot  [S] Sleep  [?] 幫助 (默認值為“L”): Reboot
您選擇的是:
重啟

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品第一区| 欧美裸身视频免费观看| 久久男人的天堂| 庆余年2免费日韩剧观看大牛| www.xxxx精品| 欧美一区深夜视频| 国产精品专区h在线观看| 日韩电影免费观看在线观看| 久久99精品久久久久久噜噜| 欧美在线性视频| 俺也去精品视频在线观看| 国产精自产拍久久久久久| 亚洲欧美成人一区二区在线电影| 亚洲成人av在线| 国产999在线观看| 成人av番号网| 久久久欧美一区二区| 欧美精品免费在线观看| 久久在线免费观看视频| 热久久视久久精品18亚洲精品| 在线观看欧美日韩| 亚州欧美日韩中文视频| 欧美激情成人在线视频| 97激碰免费视频| 国产精品狠色婷| 亚洲精品成人久久电影| 九九热精品在线| 色爱精品视频一区| 亚洲精品一区二区久| 国产精品女主播| 久久免费在线观看| 91超碰caoporn97人人| 黄色精品在线看| 欧美成人高清视频| 日韩av在线直播| 日韩成人av一区| 成人h片在线播放免费网站| xvideos国产精品| 久久成人免费视频| 青青久久aⅴ北条麻妃| 成人免费看吃奶视频网站| 亚洲成人性视频| 久久久久久久久91| 国产在线视频不卡| 26uuu另类亚洲欧美日本老年| 欧美亚洲视频一区二区| 亚洲人高潮女人毛茸茸| 91国产高清在线| 欧美激情喷水视频| 亚洲国产精品成人av| 国产裸体写真av一区二区| 国产视频精品自拍| 日韩综合视频在线观看| 中文字幕一区二区三区电影| 日韩中文字幕在线精品| 国产精品丝袜久久久久久高清| 久久久亚洲天堂| 欧美日韩国产区| 国产精品你懂得| 日韩欧美中文字幕在线播放| 亚洲视频在线观看免费| 亚洲精品成a人在线观看| 国产精品久久久久久av福利| 中文字幕亚洲一区二区三区五十路| 中文字幕亚洲一区| 国产日韩在线播放| 欧美一级高清免费播放| 国产精品999999| 色噜噜狠狠狠综合曰曰曰| 日韩中文理论片| 精品国产一区二区三区久久| 久久精品人人爽| 中文字幕欧美精品日韩中文字幕| 国产91精品久久久| 亚洲欧美日韩中文在线| 色偷偷av一区二区三区乱| 久久久久久网站| 综合136福利视频在线| 美女国内精品自产拍在线播放| 亚洲网站在线观看| 美女久久久久久久久久久| 亚洲美女www午夜| 久久久亚洲欧洲日产国码aⅴ| 久久精品美女视频网站| 亚洲香蕉在线观看| 亚洲国产精品人人爽夜夜爽| 国产精品日韩在线观看| 在线日韩精品视频| 亚洲欧美中文日韩在线| 亚洲一区美女视频在线观看免费| 国产精品视频在线播放| 亚洲国产成人久久综合一区| 91av网站在线播放| 国产福利视频一区二区| 欧美亚洲免费电影| 91欧美精品午夜性色福利在线| 国产精品1区2区在线观看| 国产精品欧美风情| 国产精品27p| 国产精品久久久久久网站| 国产精品视频网| 国产精品国语对白| 国产区亚洲区欧美区| 亚洲香蕉成人av网站在线观看| 亚洲亚裔videos黑人hd| 国产91在线播放九色快色| 亚洲国产免费av| 97久久久免费福利网址| 日韩av在线电影网| 亚洲天堂影视av| 色综合色综合网色综合| 国产精品视频白浆免费视频| 久久精品2019中文字幕| 美女999久久久精品视频| 亚洲丁香婷深爱综合| 久久九九全国免费精品观看| 亚洲精品一区av在线播放| 国产精品va在线播放我和闺蜜| 欧美精品免费看| 久久精品国产久精国产一老狼| 久久精品亚洲国产| 欧美一级片免费在线| 久久亚洲国产精品| 热久久这里只有精品| 91久久精品国产91久久| 亚洲综合第一页| 国产成人综合亚洲| 亚洲片在线观看| 成人中文字幕在线观看| 精品中文字幕在线2019| 91国产美女视频| 欧美性色视频在线| 亚洲肉体裸体xxxx137| 国产精品成人观看视频国产奇米| 精品亚洲一区二区三区在线播放| 欧美美女18p| 91av免费观看91av精品在线| 亚洲www视频| 亚洲欧美中文日韩在线v日本| 欧美性猛交xxxx免费看| 国产精品久久电影观看| 欧美一级片久久久久久久| 亚洲国产欧美久久| 欧美色道久久88综合亚洲精品| 色中色综合影院手机版在线观看| 欧美精品做受xxx性少妇| 国产精品欧美亚洲777777| 国产精品夜色7777狼人| 久久久久久久国产| 欧美日韩中文字幕综合视频| 97精品欧美一区二区三区| 57pao国产精品一区| 国产美女精品视频免费观看| 91精品国产成人www| 国产亚洲视频在线| 亚洲国产第一页| 欧美黄色片在线观看| 国产精品十八以下禁看| 国产精品欧美日韩一区二区| 久久综合伊人77777| 亚洲男人的天堂在线| 草民午夜欧美限制a级福利片| 久久久久久久爱| 久久久久久久久久久91|