前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PS常用.NET类型记录和使用命令

PS常用.NET类型记录和使用命令

作者头像
全栈工程师修炼指南
发布2022-09-29 19:18:42
9130
发布2022-09-29 19:18:42
举报
文章被收录于专栏:全栈工程师修炼之路

[TOC]

Powershell调用静态方法 https://www.cnblogs.com/micro-chen/p/5941659.html

在PowerShell中是否有类似于 IsNullOrEmpty 的内置函数,用于检查字符串是否为空或空 PS C:\Users\WeiyiGeek> [string]::IsNullOrEmpty(“ss”) False

[DateTime]类

代码语言:javascript
复制
#时间加减
PS D:\> [DateTime]"2019-11-28 15:16:20" - ([DateTime]::Now)
Days              : 0
Hours             : 23
Minutes           : 59
Seconds           : 37
Milliseconds      : 373
Ticks             : 863773731705
TotalDays         : 0.999738115399305
TotalHours        : 23.9937147695833
TotalMinutes      : 1439.622886175
TotalSeconds      : 86377.3731705
TotalMilliseconds : 86377373.1705


#时间累加
([DateTime]::Now).AddHours(1)
2019年11月27日 16:15:33

#将一个字符串转换成DateTime类
[System.DateTime]::Parse("2012-10-13 23:42:55")


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


[System.IO.DriveInfo]::GetDrives() | Format-Table
Name DriveType DriveFormat IsReady AvailableFreeSpace TotalFreeSpace    TotalSize RootDirectory VolumeLabel
---- --------- ----------- ------- ------------------ --------------    --------- ------------- -----------
C:\      Fixed NTFS           True        23552114688    23552114688 160457101312 C:\           OS

[Math] 类

描述: 这是.NET中的一个数学类里面定义很多实用的静态方法,其类路径是System.Math; 参考路径: https://docs.microsoft.com/zh-cn/dotnet/api/system.math?view=net-5.0

可用静态方法列表:

代码语言:javascript
复制
# 字段
E	   #表示自然对数的底,它由常数 e 指定。
PI	 #表示圆的周长与其直径的比值,由常数 π 指定。
Tau	 #表示一转中的弧度数,由常量 τ 指定。

# 方法
Abs(Decimal)	
返回 Decimal 数字的绝对值。
Abs(Double)	
返回双精度浮点数字的绝对值。
Abs(Int16)	
返回 16 位有符号整数的绝对值。
Abs(Int32)	
返回 32 位有符号整数的绝对值。
Abs(Int64)	
返回 64 位有符号整数的绝对值。
Abs(SByte)	
返回 8 位有符号整数的绝对值。
Abs(Single)	
返回单精度浮点数字的绝对值。
Acos(Double)	
返回余弦值为指定数字的角度。
Acosh(Double)	
返回双曲余弦值为指定数字的角度。
Asin(Double)	
返回正弦值为指定数字的角度。
Asinh(Double)	
返回双曲正弦值为指定数字的角度。
Atan(Double)	
返回正切值为指定数字的角度。
Atan2(Double, Double)	
返回正切值为两个指定数字的商的角度。
Atanh(Double)	
返回双曲正切值为指定数字的角度。
BigMul(Int32, Int32)	
生成两个 32 位数字的完整乘积。
BigMul(Int64, Int64, Int64)	
生成两个 64 位数的完整乘积。
BigMul(UInt64, UInt64, UInt64)	
生成两个无符号 64 位数的完整乘积。
BitDecrement(Double)	
返回小于 x 的下一个最小值。
BitIncrement(Double)	
返回大于 x 的下一个最大值。
Cbrt(Double)	
返回指定数字的立方根。
Ceiling(Decimal)	
返回大于或等于指定的十进制数的最小整数值。
Ceiling(Double)	
返回大于或等于指定的双精度浮点数的最小整数值。
Clamp(Byte, Byte, Byte)	
返回限制在 min 和 max 范围内(含首尾)的 value。
Clamp(Decimal, Decimal, Decimal)	
返回限制在 min 和 max 范围内(含首尾)的 value。
Clamp(Double, Double, Double)	
返回限制在 min 和 max 范围内(含首尾)的 value。
Clamp(Int16, Int16, Int16)	
返回限制在 min 和 max 范围内(含首尾)的 value。
Clamp(Int32, Int32, Int32)	
返回限制在 min 和 max 范围内(含首尾)的 value。
Clamp(Int64, Int64, Int64)	
返回限制在 min 和 max 范围内(含首尾)的 value。
Clamp(SByte, SByte, SByte)	
返回限制在 min 和 max 范围内(含首尾)的 value。
Clamp(Single, Single, Single)	
返回限制在 min 和 max 范围内(含首尾)的 value。
Clamp(UInt16, UInt16, UInt16)	
返回限制在 min 和 max 范围内(含首尾)的 value。
Clamp(UInt32, UInt32, UInt32)	
返回限制在 min 和 max 范围内(含首尾)的 value。
Clamp(UInt64, UInt64, UInt64)	
返回限制在 min 和 max 范围内(含首尾)的 value。
CopySign(Double, Double)	
返回一个值,它具有 x 的大小和 y 的符号。
Cos(Double)	
返回指定角度的余弦值。
Cosh(Double)	
返回指定角度的双曲余弦值。
DivRem(Int32, Int32, Int32)	
计算两个 32 位有符号整数的商,并通过输出参数返回余数。
DivRem(Int64, Int64, Int64)	
计算两个 64 位有符号整数的商,并通过输出参数返回余数。
Exp(Double)	
返回 e 的指定次幂。
Floor(Decimal)	
返回小于或等于指定小数的最大整数值。
Floor(Double)	
返回小于或等于指定双精度浮点数的最大整数值。
FusedMultiplyAdd(Double, Double, Double)	
返回 (x * y) + z,舍入为一个三元运算。
IEEERemainder(Double, Double)	
返回一指定数字被另一指定数字相除的余数。
ILogB(Double)	
返回指定数字以 2 为底的整数对数。
Log(Double)	
返回指定数字的自然对数(底为 e)。
Log(Double, Double)	
返回指定数字在使用指定底时的对数。
Log10(Double)	
返回指定数字以 10 为底的对数。
Log2(Double)	
返回指定数字以 2 为底的对数。
Max(Byte, Byte)	
返回两个 8 位无符号整数中较大的一个。
Max(Decimal, Decimal)	
返回两个十进制数中较大的一个。
Max(Double, Double)	
返回两个双精度浮点数字中较大的一个。
Max(Int16, Int16)	
返回两个 16 位有符号的整数中较大的一个。
Max(Int32, Int32)	
返回两个 32 位有符号的整数中较大的一个。
Max(Int64, Int64)	
返回两个 64 位有符号的整数中较大的一个。
Max(SByte, SByte)	
返回两个 8 位有符号的整数中较大的一个。
Max(Single, Single)	
返回两个单精度浮点数字中较大的一个。
Max(UInt16, UInt16)	
返回两个 16 位无符号整数中较大的一个。
Max(UInt32, UInt32)	
返回两个 32 位无符号整数中较大的一个。
Max(UInt64, UInt64)	
返回两个 64 位无符号整数中较大的一个。
MaxMagnitude(Double, Double)	
返回两个双精度浮点数字中的较大值。
Min(Byte, Byte)	
返回两个 8 位无符号整数中较小的一个。
Min(Decimal, Decimal)	
返回两个十进制数中较小的一个。
Min(Double, Double)	
返回两个双精度浮点数字中较小的一个。
Min(Int16, Int16)	
返回两个 16 位有符号整数中较小的一个。
Min(Int32, Int32)	
返回两个 32 位有符号整数中较小的一个。
Min(Int64, Int64)	
返回两个 64 位有符号整数中较小的一个。
Min(SByte, SByte)	
返回两个 8 位有符号整数中较小的一个。
Min(Single, Single)	
返回两个单精度浮点数字中较小的一个。
Min(UInt16, UInt16)	
返回两个 16 位无符号整数中较小的一个。
Min(UInt32, UInt32)	
返回两个 32 位无符号整数中较小的一个。
Min(UInt64, UInt64)	
返回两个 64 位无符号整数中较小的一个。
MinMagnitude(Double, Double)	
返回两个双精度浮点数字中的较小值。
Pow(Double, Double)	
返回指定数字的指定次幂。
Round(Decimal)	
将小数值舍入到最接近的整数值,并将中点值舍入到最接近的偶数。
Round(Decimal, Int32)	
将小数值舍入到指定数量的小数位,并将中点值舍入到最接近的偶数。
Round(Decimal, Int32, MidpointRounding)	
将小数值舍入到指定数量的小数位,并为中点值使用指定的舍入规则。
Round(Decimal, MidpointRounding)	
将小数值舍入到最接近的整数,并为中点值使用指定的舍入规则。
Round(Double)	
将双精度浮点值舍入到最接近的整数值,并将中点值舍入到最接近的偶数。
Round(Double, Int32)	
将双精度浮点值舍入到指定数量的小数位,并将中点值舍入到最接近的偶数。
Round(Double, Int32, MidpointRounding)	
将双精度浮点值舍入到指定数量的小数位,并为中点值使用指定的舍入规则。
Round(Double, MidpointRounding)	
将双精度浮点值舍入到最接近的整数,并为中点值使用指定的舍入约定。
ScaleB(Double, Int32)	
返回有效计算的 x * 2^n。
Sign(Decimal)	
返回表示十进制数符号的整数。
Sign(Double)	
返回一个整数,该整数表示双精度浮点数字的符号。
Sign(Int16)	
返回表示 16 位带符号整数的整数。
Sign(Int32)	
返回表示 32 位带符号整数的整数。
Sign(Int64)	
返回一个整数,该整数指示 64 位带符号整数的符号。
Sign(SByte)	
返回一个整数,该整数指示 8 位带符号整数的符号。
Sign(Single)	
返回一个整数,该整数表示单精度浮点数字的符号。
Sin(Double)	
返回指定角度的正弦值。
Sinh(Double)	
返回指定角度的双曲正弦值。
Sqrt(Double)	
返回指定数字的平方根。
Tan(Double)	
返回指定角度的正切值。
Tanh(Double)	
返回指定角度的双曲正切值。
Truncate(Decimal)	
计算一个数字的整数部分。
Truncate(Double)	
计算指定双精度浮点数的整数部分。

基础示例:

代码语言:javascript
复制
# 1.简单使用求绝对值,三角函数,
[Math]::PI # 3.14159265358979
[Math]::Abs(-10.89)  # 10.89
[Math]::Sin([Math]::PI/2)  # 1
[Math]::Pow(2, 10) # 1024

# 四舍五入取整,向上、向下取整
[Math]::Round("3.495")  # 3
[Math]::Round("3.595")  # 4
[Math]::Round("3.5956485",3)  # 3.596  (指定小数点后的几位)
[Math]::Ceiling("3.199999") # 4
[Math]::floor("3.999999")   # 3
# - 计算一个数字的整数部分。
[Math]::Truncate(2012.7765) # 2012

[NET] 类

描述:.NET支持成千上万的类型,有了这些类型可以做许多事情,幸运的是Powershell恰好支持这些类型。

代码语言:javascript
复制
#1.例如使用System.Net.IPAddress类将字符串IP地址转换成一个IPAddress实例
PS C:\Users\WeiyiGeek\Desktop>  [Net.IPAddress]'10.3.129.71'
Address            : 1199637258
AddressFamily      : InterNetwork
ScopeId            :
IsIPv6Multicast    : False
IsIPv6LinkLocal    : False
IsIPv6SiteLocal    : False
IsIPv6Teredo       : False
IsIPv4MappedToIPv6 : False
IPAddressToString  : 10.3.129.71


#2.根据IP地址查看主机名,8.8.8.8是谷歌的免费DNS服务器
PS > [system.Net.Dns]::GetHostByAddress('8.8.8.8') | fl
HostName    : google-public-dns-a.google.com
Aliases     : {}
AddressList : {8.8.8.8}

[AppDomain] 类

.NET中的类型定义在不同的程序集中,首先得知道当前程序已经加载了那些程序集; AppDomain类可以完成这个需求,因为它有一个静态成员CurrentDomain,CurrentDomain中有一个GetAssemblies()方法。

代码语言:javascript
复制
PS > [AppDomain]::CurrentDomain

PS > [AppDomain]::CurrentDomain.GetAssemblies()
GAC    Version        Location
---    -------        --------
True   v4.0.30319     C:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscorlib.dll
搜索指定类型
查询每个程序集中的方法可是使用GetExportedTypes() 方法。因为许多程序集中包含了大量的方法,在搜索时最好指定关键字。下面的代码演示如何查找包含”environment”关键字的类型。
PS > [AppDomain]::CurrentDomain.GetAssemblies() | ForEach-Object { $_.GetExportedTypes() } | Where-Object { $_ -like $searchtext } | ForEach-Object { $_.FullName }

搜索方法
下面的例子演示如何根据指定关键字”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 }

[Environment] 类

代码语言:javascript
复制
查看以下System.Environment类的所有静态方法。
[Environment] | Get-Member -Static
PS > [Environment]::UserDomainName #当前登录域
MyHome
PS > [Environment]::UserName #当前用户名
xiaoming
PS > [Environment]::MachineName #当前机器名
LocalHost
代码语言:javascript
复制
# 方式1.根据类型创建实例
$LocalName="c:\PS\Index.php"
$DownUrlFile="https://weiyigeek.com/Index.php"
if(!-Path $LocalName){
  $webClient=New-Object Net.WebClient;$webClient.DownloadFile($DownUrlFile,$LocalName)
  if(-Path $LocalName){
    Write-Ouput "下载完成"
  }
}

# 方式2.一句话搞定
(New-Object Net.WebClient).DownloadFile($DownUrlFile,$LocalName)

dllByte=[System.IO.File]::ReadAllBytes(‘D:\Code\mosser\PStips.NET—dll′)[System.AppDomain]::CurrentDomain.Load(dllByte=[System.IO.File]::ReadAllBytes(‘D:\Code\mosser\PStips.NET—dll′)[System.AppDomain]::CurrentDomain.Load(dllByte)

代码语言:javascript
复制
新版的.NET 中有动态类型,不能直接通过GetExportedTypes()调用,把它屏蔽掉就行了

[AppDomain]::CurrentDomain.GetAssemblies() |
Where-Object { -not $_.IsDynamic } |
ForEach-Object {$_.GetExportedTypes() } | 
Where-Object { $_ -like '*environment*' } | 
ForEach-Object { $_.FullName }

描述:

统计指定目录下的文件数量 [System.IO.Directory]::GetFiles(“D:\Work\Data\Photo\gzkz-2019\1950”, ‘*’, ‘AllDirectories’).Count

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • [DateTime]类
  • [Math] 类
  • [NET] 类
  • [AppDomain] 类
  • [Environment] 类
相关产品与服务
NAT 网关
NAT 网关(NAT Gateway)提供 IP 地址转换服务,为腾讯云内资源提供高性能的 Internet 访问服务。通过 NAT 网关,在腾讯云上的资源可以更安全的访问 Internet,保护私有网络信息不直接暴露公网;您也可以通过 NAT 网关实现海量的公网访问,最大支持1000万以上的并发连接数;NAT 网关还支持 IP 级流量管控,可实时查看流量数据,帮助您快速定位异常流量,排查网络故障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档