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 -->
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 雨林唱片《赏》新曲+精选集SACD版[ISO][2.3G]
- 罗大佑与OK男女合唱团.1995-再会吧!素兰【音乐工厂】【WAV+CUE】
- 草蜢.1993-宝贝对不起(国)【宝丽金】【WAV+CUE】
- 杨培安.2009-抒·情(EP)【擎天娱乐】【WAV+CUE】
- 周慧敏《EndlessDream》[WAV+CUE]
- 彭芳《纯色角3》2007[WAV+CUE]
- 江志丰2008-今生为你[豪记][WAV+CUE]
- 罗大佑1994《恋曲2000》音乐工厂[WAV+CUE][1G]
- 群星《一首歌一个故事》赵英俊某些作品重唱企划[FLAC分轨][1G]
- 群星《网易云英文歌曲播放量TOP100》[MP3][1G]
- 方大同.2024-梦想家TheDreamer【赋音乐】【FLAC分轨】
- 李慧珍.2007-爱死了【华谊兄弟】【WAV+CUE】
- 王大文.2019-国际太空站【环球】【FLAC分轨】
- 群星《2022超好听的十倍音质网络歌曲(163)》U盘音乐[WAV分轨][1.1G]
- 童丽《啼笑姻缘》头版限量编号24K金碟[低速原抓WAV+CUE][1.1G]