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

首頁 > 開發 > PowerShell > 正文

Windows Powershell調用靜態方法

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

Powershell將信息存儲在對象中,每個對象都會有一個具體的類型,簡單的文本會以System.String類型存儲,日期會以System.DateTime類型存儲。任何.NET對象都可以通過GetType()方法返回它的類型,該類型中有一個FullName屬性,可以查看類型的完整名稱。

復制代碼 代碼如下:

PS C:Powershell> $date=get-date
PS C:Powershell> $date

2012年1月11日 15:19:49

PS C:Powershell> $date.GetType().FullName
System.DateTime

每一個類型都 可以包含一些靜態的方法,可以通過方括號和類型名稱得到類型對象本身,然后通過Get-Memeber命令查看該類型支持的所有靜態方法。

復制代碼 代碼如下:

PS C:Powershell> [System.DateTime] | Get-Member -static -memberType *Method

   TypeName: System.DateTime

Name            MemberType Definition
----            ---------- ----------
Compare          Method     static int Compare(System.DateTime t1, System.Dat...
DaysInMonth Method     static int DaysInMonth(int year, int month)
Equals  Method     static bool Equals(System.DateTime t1, System.Dat...
FromBinary Method     static System.DateTime FromBinary(long dateData)
FromFileTime Method     static System.DateTime FromFileTime(long fileTime)
FromFileTimeUtc  Method     static System.DateTime FromFileTimeUtc(long fileT...
FromOADate       Method     static System.DateTime FromOADate(double d)
IsLeapYear       Method     static bool IsLeapYear(int year)
Parse            Method     static System.DateTime Parse(string s), static Sy...
ParseExact       Method     static System.DateTime ParseExact(string s, strin...
ReferenceEquales Method     static bool ReferenceEquals(System.Object objA, S...
SpecifyKind      Method     static System.DateTime SpecifyKind(System.DateTim...
TryParse         Method     static bool TryParse(string s, System.DateTime&, ...
TryParseExact    Method     static bool TryParseExact(string s, string format...

System.DateTime類支持的靜態方法非常實用
使用Parse方法將一個字符串轉換成DateTime類:

復制代碼 代碼如下:

PS C:Powershell> [System.DateTime]::Parse("2012-10-13 23:42:55")

2012年10月13日 23:42:55

使用isLeapYear方法判斷閏年

復制代碼 代碼如下:

#1988年是閏年嗎?
[System.DateTime]::IsLeapYear(1988)
#打印1988到2000年的所有閏年
for($year=1988;$year -le 2000;$year++)
{
    if( [System.DateTime]::IsLeapYear($year) ){$year}
}

True
1988
1992
1996
2000


另一個常用的類為Math類,在Math類中定義了很多實用的靜態方法:
例如求絕對值,三角函數,取整:
復制代碼 代碼如下:

PS C:Powershell> [Math]::Abs(-10.89)
10.89
PS C:Powershell> [Math]::Sin([Math]::PI/2)
1
PS C:Powershell> [Math]::Truncate(2012.7765)
2012

查看感興趣的.NET類型

.NET支持成千上萬的類型,有了這些類型可以做許多事情,幸運的是Powershell恰好支持這些類型。

對象類型轉換

例如使用System.Net.IPAddress類將字符串IP地址轉換成一個IPAddress實例

復制代碼 代碼如下:

PS C:Powershell> [Net.IPAddress]'10.3.129.71'

Address            : 1199637258
AddressFamily      : InterNetwork
ScopeId            :
IsIPv6Multicast    : False
IsIPv6LinkLocal : False
IsIPv6SiteLocal : False
IPAddressToString : 10.3.129.71

調用靜態的方法

同樣是System.Net.IPAddress類,根據IP地址查看主機名,8.8.8.8是谷歌的免費DNS服務器

復制代碼 代碼如下:

PS C:Powershell> [system.Net.Dns]::GetHostByAddress('8.8.8.8') | fl

HostName    : google-public-dns-a.google.com
Aliases     : {}
AddressList : {8.8.8.8}

根據類型創建實例

下面演示通過$webClient類的DownloadFile方法下載文件:

復制代碼 代碼如下:

PS C:Powershell> $localName="C:Powershellindex.php"
PS C:Powershell> Test-Path $localName
False
PS C:Powershell> $add="http://www.mossfly.com/index.php"
PS C:Powershell> $webClient=New-Object Net.WebClient
PS C:Powershell> $webClient.DownloadFile($add,$localName)
PS C:Powershell> Test-Path $localName
True

查看程序集

.NET中的類型定義在不同的程序集中,首先得知道當前程序已經加載了那些程序集。AppDomain類可以完成這個需求,因為它有一個靜態成員CurrentDomain,CurrentDomain中有一個GetAssemblies()方法。

復制代碼 代碼如下:

PS C:Powershell> [AppDomain]::CurrentDomain

FriendlyName           : DefaultDomain
Id                     : 1
ApplicationDescription :
BaseDirectory          : C:WINDOWSsystem32WindowsPowerShellv1.0
DynamicDirectory       :
RelativeSearchPath     :
SetupInformation       : System.AppDomainSetup
ShadowCopyFiles        : False

PS C:Powershell> [AppDomain]::CurrentDomain.GetAssemblies()

GAC    Version        Location
---    -------        --------
True   v2.0.50727     C:WindowsMicrosoft.NETFrameworkv2.0.50727mscorlib...
True   v2.0.50727     C:WindowsassemblyGAC_MSILMicrosoft.PowerShell.Cons...
True   v2.0.50727     C:WindowsassemblyGAC_MSILSystem2.0.0.0__b77a5c561...
True   v2.0.50727     C:WindowsassemblyGAC_MSILSystem.Management.Automat...
True   v2.0.50727     C:WindowsassemblyGAC_MSILMicrosoft.PowerShell.Comm...
True   v2.0.50727     C:WindowsassemblyGAC_MSILSystem.Core3.5.0.0__b77a...
True   v2.0.50727     C:WindowsassemblyGAC_MSILSystem.Configuration.Inst...
True   v2.0.50727     C:WindowsassemblyGAC_MSILMicrosoft.WSMan.Managemen...
True   v2.0.50727     C:WindowsassemblyGAC_32System.Transactions2.0.0.0...
True   v2.0.50727     C:WindowsassemblyGAC_MSILMicrosoft.PowerShell.Comm...
True   v2.0.50727     C:WindowsassemblyGAC_MSILMicrosoft.PowerShell.Comm...
True   v2.0.50727     C:WindowsassemblyGAC_MSILMicrosoft.PowerShell.Secu...
True   v2.0           C:WindowsassemblyGAC_MSILMicrosoft.PowerShell.Cons...
True   v2.0.50727     C:WindowsassemblyGAC_MSILSystem.Xml2.0.0.0__b77a5...
True   v2.0.50727     C:WindowsassemblyGAC_MSILSystem.Management2.0.0.0...
True   v2.0.50727     C:WindowsassemblyGAC_MSILSystem.DirectoryServices...
True   v2.0           C:WindowsassemblyGAC_MSILSystem.Management.Automat...
True   v2.0           C:WindowsassemblyGAC_MSILMicrosoft.WSMan.Managemen...
True   v2.0.50727     C:WindowsMicrosoft.NETFrameworkv2.0.50727mscorlib...
True   v2.0           C:WindowsassemblyGAC_MSILMicrosoft.PowerShell.Secu...
True   v2.0.50727     C:WindowsassemblyGAC_32System.Data2.0.0.0__b77a5c...
True   v2.0           C:WindowsassemblyGAC_MSILMicrosoft.PowerShell.Comm...
True   v2.0.50727     C:WindowsassemblyGAC_MSILSystem.Configuration2.0....
True   v2.0.50727     C:WindowsassemblyGAC_MSILMicrosoft.JScript8.0.0.0...

搜索指定類型

查詢每個程序集中的方法可是使用GetExportedTypes() 方法。因為許多程序集中包含了大量的方法,在搜索時最好指定關鍵字。下面的代碼演示如何查找包含”environment”關鍵字的類型。

復制代碼 代碼如下:

PS C:Powershell>  [AppDomain]::CurrentDomain.GetAssemblies() | ForEach-Object { $_.GetExportedTypes() } | Where-Object { $_ -like $searchtext } | ForEach-Object { $_.FullName }

System.EnvironmentVariableTarget
System.Environment
System.Environment+SpecialFolder
System.Runtime.InteropServices.RuntimeEnvironment
System.Security.Permissions.EnvironmentPermissionAccess
System.Security.Permissions.EnvironmentPermission
System.Security.Permissions.EnvironmentPermissionAttribute
Microsoft.PowerShell.Commands.EnvironmentProvider

上面搜索到的類型有一個為:System.Environment類,System.Environment類可以做很多事情,可以先查看以下System.Environment類的所有靜態方法。

復制代碼 代碼如下:

PS C:Powershell> [Environment] | Get-Member -Static

   TypeName: System.Environment

Name                        MemberType Definition
----                         ---------- ----------
Equals                       Method     static bool Equals(System.Object objA,
Exit                         Method     static System.Void Exit(int exitCode)
ExpandEnvironmentVariables Method     static string ExpandEnvironmentVariabl
FailFast                     Method     static System.Void FailFast(string mes
GetCommandLineArgs          Method     static string[] GetCommandLineArgs()
GetEnvironmentVariable      Method     static string GetEnvironmentVariable(s
GetEnvironmentVariables     Method     static System.Collections.IDictionary
GetFolderPath               Method     static string GetFolderPath(System.Env
GetLogicalDrives            Method     static string[] GetLogicalDrives()
ReferenceEquals             Method     static bool ReferenceEquals(System.Obj
SetEnvironmentVariable      Method     static System.Void SetEnvironmentVaria
CommandLine                 Property   static System.String CommandLine {get;
CurrentDirectory            Property   static System.String CurrentDirectory
ExitCode                    Property   static System.Int32 ExitCode {get;set;
HasShutdownStarted          Property   static System.Boolean HasShutdownStart
MachineName                 Property   static System.String MachineName {get;
NewLine                     Property   static System.String NewLine {get;}
OSVersion                   Property   static System.OperatingSystem OSVersio
ProcessorCount              Property   static System.Int32 ProcessorCount {ge
StackTrace                  Property   static System.String StackTrace {get;}
SystemDirectory             Property   static System.String SystemDirectory {
TickCount                   Property   static System.Int32 TickCount {get;}
UserDomainName              Property   static System.String UserDomainName {g
UserInteractive             Property   static System.Boolean UserInteractive
UserName                    Property   static System.String UserName {get;}
Version                      Property   static System.Version Version {get;}
WorkingSet                  Property   static System.Int64 WorkingSet {get;}

例如System.Environment中的屬性輸出當前登錄域、用戶名、機器名:

復制代碼 代碼如下:

PS C:Powershell> [Environment]::UserDomainName
MyHome
PS C:Powershell> [Environment]::UserName
xiaoming
PS C:Powershell> [Environment]::MachineName
LocalHost

搜索方法

下面的例子演示如何根據指定關鍵字”Address”,搜索方法。

復制代碼 代碼如下:

[AppDomain]::CurrentDomain.GetAssemblies() | ForEach-Object { $_.GetExportedTypes() } | ForEach-Object { $_.getmembers() } | Where-Object { $_.isStatic} | Where-Object { $_ -like $searchtext } | ForEach-Object { "[{0}]::{1} --> {2}" -f  $_.declaringtype, $_.toString().SubString($_.toString().IndexOf(" ")+1), $_.ReturnType }

[System.Net.IPAddress]::Parse(System.String) --> System.Net.IPAddress
[System.Net.IPAddress]::IsLoopback(System.Net.IPAddress) --> System.Boolean
[System.Net.IPAddress]::Any -->
[System.Net.IPAddress]::Loopback -->
[System.Net.IPAddress]::Broadcast -->
[System.Net.IPAddress]::None -->
[System.Net.IPAddress]::IPv6Any -->
[System.Net.IPAddress]::IPv6Loopback -->
[System.Net.IPAddress]::IPv6None -->
[System.Net.Sockets.AddressFamily]::Unknown -->
[System.Net.Sockets.AddressFamily]::Unspecified -->
[System.Net.Sockets.AddressFamily]::Unix -->
[System.Net.Sockets.AddressFamily]::InterNetwork -->
[System.Net.Sockets.AddressFamily]::ImpLink -->
[System.Net.Sockets.AddressFamily]::Pup -->
[System.Net.Sockets.AddressFamily]::Chaos -->
[System.Net.Sockets.AddressFamily]::NS -->
[System.Net.Sockets.AddressFamily]::Ipx -->
[System.Net.Sockets.AddressFamily]::Iso -->
[System.Net.Sockets.AddressFamily]::Osi -->
[System.Net.Sockets.AddressFamily]::Ecma -->
[System.Net.Sockets.AddressFamily]::DataKit -->
[System.Net.Sockets.AddressFamily]::Ccitt -->
[System.Net.Sockets.AddressFamily]::Sna -->
[System.Net.Sockets.AddressFamily]::DecNet -->
[System.Net.Sockets.AddressFamily]::DataLink -->
[System.Net.Sockets.AddressFamily]::Lat -->
[System.Net.Sockets.AddressFamily]::HyperChannel -->
[System.Net.Sockets.AddressFamily]::AppleTalk -->
[System.Net.Sockets.AddressFamily]::NetBios -->
[System.Net.Sockets.AddressFamily]::VoiceView -->
[System.Net.Sockets.AddressFamily]::FireFox -->
[System.Net.Sockets.AddressFamily]::Banyan -->
[System.Net.Sockets.AddressFamily]::Atm -->
[System.Net.Sockets.AddressFamily]::InterNetworkV6 -->
[System.Net.Sockets.AddressFamily]::Cluster -->
[System.Net.Sockets.AddressFamily]::Ieee12844 -->
[System.Net.Sockets.AddressFamily]::Irda -->
[System.Net.Sockets.AddressFamily]::NetworkDesigners -->
[System.Net.Sockets.AddressFamily]::Max -->
[System.Net.Sockets.IOControlCode]::GetBroadcastAddress -->
[System.Net.Sockets.IOControlCode]::AddressListQuery -->
[System.Net.Sockets.IOControlCode]::AddressListChange -->
[System.Net.Sockets.IOControlCode]::AddressListSort -->
[System.Net.Sockets.SocketError]::DestinationAddressRequired -->
[System.Net.Sockets.SocketError]::AddressFamilyNotSupported -->
[System.Net.Sockets.SocketError]::AddressAlreadyInUse -->
[System.Net.Sockets.SocketError]::AddressNotAvailable -->
[System.Net.Sockets.SocketOptionName]::ReuseAddress -->
[System.Net.Sockets.SocketOptionName]::ExclusiveAddressUse -->
[System.Net.NetworkInformation.DuplicateAddressDetectionState]::Invalid -->
[System.Net.NetworkInformation.DuplicateAddressDetectionState]::Tentative -->
[System.Net.NetworkInformation.DuplicateAddressDetectionState]::Duplicate -->
[System.Net.NetworkInformation.DuplicateAddressDetectionState]::Deprecated -->
[System.Net.NetworkInformation.DuplicateAddressDetectionState]::Preferred -->
[System.Net.NetworkInformation.NetworkChange]::add_NetworkAddressChanged(System
.Net.NetworkInformation.NetworkAddressChangedEventHandler) --> System.Void
[System.Net.NetworkInformation.NetworkChange]::remove_NetworkAddressChanged(Sys
tem.Net.NetworkInformation.NetworkAddressChangedEventHandler) --> System.Void
[System.Net.NetworkInformation.PhysicalAddress]::Parse(System.String) --> Syste
m.Net.NetworkInformation.PhysicalAddress
[System.Net.NetworkInformation.PhysicalAddress]::None -->
[System.Net.NetworkInformation.SuffixOrigin]::LinkLayerAddress -->
[System.DirectoryServices.ActiveDirectory.ActiveDirectorySyntax]::PresentationA
ddress -->
[Microsoft.JScript.JSError]::DoesNotHaveAnAddress -->
[Microsoft.JScript.JSError]::WrongUseOfAddressOf -->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91亚洲永久免费精品| 国产精品爽爽爽爽爽爽在线观看| 日韩在线一区二区三区免费视频| 精品久久久久久亚洲国产300| 亚洲精品视频在线观看视频| 欧美极品少妇xxxxⅹ裸体艺术| 日韩av电影手机在线观看| 国产一区二区三区日韩欧美| 国产99久久精品一区二区 夜夜躁日日躁| 国产成人精品日本亚洲| 日本伊人精品一区二区三区介绍| 久久精品电影一区二区| 欧美第一黄色网| 欧美特黄级在线| 亚洲自拍偷拍一区| 国产精品自产拍在线观看| 日韩免费在线免费观看| 成人av番号网| 韩国日本不卡在线| 久久影院中文字幕| 亚洲黄色有码视频| 欧美中文在线字幕| 欧美精品激情视频| 国产日韩在线看| 亚洲精品电影网在线观看| 日韩欧美一区二区三区| 亚洲va国产va天堂va久久| 亚洲色图13p| 国产日韩精品在线播放| 国产视频在线观看一区二区| 日韩av片永久免费网站| 一区二区三区回区在观看免费视频| 九九视频直播综合网| 亚洲新中文字幕| 成人国内精品久久久久一区| 国产成人aa精品一区在线播放| 久久久精品999| 久热99视频在线观看| 久久久久成人精品| 精品久久久视频| 91香蕉嫩草神马影院在线观看| 日韩高清电影免费观看完整| 精品久久国产精品| 午夜精品久久久99热福利| 最近2019中文字幕在线高清| 久久天天躁日日躁| 91午夜理伦私人影院| 国产精品久久久久久五月尺| 欧美激情精品久久久久久免费印度| 久青草国产97香蕉在线视频| 国产精品久久久久久av福利| 亚洲精品一区久久久久久| 精品久久久一区| 欧美性猛交xxxx乱大交3| 亚洲mm色国产网站| 亚洲一区二区久久久久久| 综合136福利视频在线| 热re91久久精品国99热蜜臀| 97香蕉超级碰碰久久免费的优势| 最近2019年好看中文字幕视频| 欧美成人免费小视频| 亚洲福利在线播放| 亚洲人午夜精品免费| 国产精品成人一区二区三区吃奶| www.久久久久久.com| 欧美亚洲伦理www| 亚洲伊人成综合成人网| 性色av一区二区三区红粉影视| xvideos国产精品| 亚洲va男人天堂| 日韩av电影在线网| 亚洲天堂视频在线观看| 精品亚洲一区二区三区在线播放| 黑丝美女久久久| 中文字幕久久精品| 国模极品一区二区三区| 国产97免费视| 亚洲一区二区三区在线免费观看| 亚洲男人天堂九九视频| 国产精品1区2区在线观看| 久久99亚洲精品| 日韩av影视在线| 成人性生交大片免费观看嘿嘿视频| 欧美日韩一区二区免费在线观看| 91久久精品国产91久久| 91香蕉国产在线观看| 欧美性高跟鞋xxxxhd| 亚洲综合中文字幕在线| 日韩在线观看免费av| 国产成人精品一区| 国产成人拍精品视频午夜网站| 国产一区二区三区在线免费观看| 国产精品对白刺激| 精品日韩视频在线观看| 亚洲电影免费观看| 一区二区亚洲欧洲国产日韩| 午夜精品一区二区三区在线视频| 日本午夜人人精品| 福利一区福利二区微拍刺激| 亚洲mm色国产网站| 国产一区二区三区18| 国产精品va在线播放我和闺蜜| 国产91久久婷婷一区二区| 国产最新精品视频| 欧美电影免费看| 欧美日韩美女在线观看| 亚洲一区二区三| 欧美怡红院视频一区二区三区| 亚洲精品之草原avav久久| 伊人久久免费视频| 美女视频久久黄| 欧美日韩加勒比精品一区| 日韩小视频网址| 狠狠躁夜夜躁久久躁别揉| 日韩美女在线播放| 国产精品亚洲视频在线观看| 欧美高清激情视频| 国产精品国产三级国产专播精品人| 国产精品视频999| 久久国产精品99国产精| 国产欧美最新羞羞视频在线观看| 欧美激情一级欧美精品| 国产精品69精品一区二区三区| 亚洲va久久久噜噜噜| 成人福利在线观看| 亚洲第一级黄色片| 久久久免费在线观看| 成人做爰www免费看视频网站| 亚洲精品少妇网址| 亚洲欧美综合另类中字| 日韩欧美一区视频| 夜夜嗨av色综合久久久综合网| 亚洲第一精品久久忘忧草社区| 91色视频在线观看| 欧洲亚洲女同hd| 最近2019中文字幕一页二页| 欧美亚洲视频在线看网址| 成人午夜激情免费视频| www.亚洲免费视频| 久久亚洲国产精品| 精品在线小视频| 国产视频一区在线| 欧美猛交免费看| 亚洲男人天堂古典| 亚洲精品电影网在线观看| 色综久久综合桃花网| 久久久久国产视频| 亚洲最新av在线| 国产精品高潮呻吟视频| 亚洲人成电影网站色www| 成人午夜在线观看| 亚洲电影成人av99爱色| 欧美乱妇40p| 国产精品国产三级国产aⅴ浪潮| 欧美久久久精品| 中文国产成人精品久久一| 亚洲91精品在线观看| 久久久午夜视频| 在线成人一区二区| 亚洲xxxx3d| 日韩欧美亚洲范冰冰与中字| 成人春色激情网| 久久精品在线播放| 久久影院中文字幕|