关于powershell的个人总结

PowerShell 可以看做是弱类型语言。所谓弱类型语言可以是指不用区分数据类型,不用对数据类型进行转型,数据类型根据赋予它的值确定。
 
1.变量的命名规范: $ + 其他字符     
 
2.常量的命名规范:Set-Variable 来申明常量,-name 参数用于申明常量名,-value 参数用于申明常量值,-option constant 变示申明当前量为一个常量,常量的申明中常量名不需要加“$”,但使用时需要加上“$”符号
例如:
Set-Variable -name jay -value 2 -option constant
 
 
3.PowerShell 可以利用$env:环境变量名来检查这些变量
例如: $env:JAVA_HOME  ,也可以通过这个来检查变量是否存在  ----  [String::IsnNullOrEmpty($env:JAVA_HOME)]
 
PS:  在环境变量不存时,可以创建新的环境变量$env:环境变量名=值的格式用于生成新的环境变量,当这种方式生成的环境变量是临时的,仅在当前的 PowerShell 中有效,重新打开 PowerShell 就没有了
 
如果需要写入环境变量时,还可以使用
[System.Environment]::SetEnvironmentVariable("testPath","d:/test","machine") 的方法写入到系统环境变量中或者使用
[environment]::SetEnvironmentvariable("Path", ";c:\powershellscript", "User")的方法写入到用户环境变量
 
4.运算符
+ 加运算  -减运算   *乘运算   /除运算   %求模运算   +=相加并赋值   -=相减并赋值   ++自增运算   --自减运算
 
5. 数组
所谓数组,是有序的元素序列。
在数组的使用过程中需要提前定义数组,也就是申明数组
$array_name=value0,value1,value2 #定义数组,用逗号分开
$array_name=value0..valuen #连续数字用..
$array_name=@() #定义空数组
 
6.强类型
PowerShell 的数据类型包括:byte(无符号整数),int(有符号整数),short(有符号短整数),long(有符号长整数),char(字符类型),double(双精度浮点数),float(单精度浮点数),string(字符串)
 
7.关于字符串的一些方法
*   代表一个字符串
 
+   合并两个字符串
 
-replace,-ireplace   替换字符串,大小写不敏感
 
-creplace    替换字符串,大小写敏感
 
-eq, -ieq      验证是否相等,大小写不敏感
 
-ceq    验证是否相等,大小写敏感
 
-like,-ilike   验证字符串包含关系,允许模式匹配,大小写不敏感
 
-clike         验证字符串包含关系,允许模式匹配,大小写敏感
 
-notlike,-inotlike          验证字符串不包含关系,允许模式匹配,大小写不敏感 
 
-cnotlike               验证字符串不包含关系,允许模式匹配,大小写敏感
 
.Contains()    验证是否包含关系,大小写敏感
 
.Split()   字符串拆分,以空格分隔
 
.Split(str)   字符串拆分,以指定子串分隔
 
.CompareTo(str)   字符串比较
 
.Length   获取字符串长度
 
.Insert(int,str)    在指定位置插入子串,下标从 1 开始
 
.Remove(start,length)   删除从指定位置开始到指定长度的子串,下标从 1开始
 
.Trim()  去掉字符串前后白空格
 
.Substring(start,end)   截取字符串子串
 
.IndexOf(str)   查找指定字符串在此字符串中第一次出现的位置 
 
.LastIndexOf(str)  查找指定字符串在此字符串中最后一次出现的位置 
 
.StartWith(str)   判断此字符串是以指定字符串开始
 
.EneWith(str)    判断此字符串是以指定字符串结束
 
.Equals()   判断两个字符串是否相等
 
字符串格式化是在字符串后加上-f 参数,并引入占位符和变量的方法。 
例如: "hello-world {0}" -f $data
 
8.逻辑控制语句
if-else  :  当分支只有两种时,我们可以使用此结构
 
if-elif-else   :   当分支超过两个,仅仅使用 if-else 结构明显不能满足要求了,这个时候可以在中间加上一个或多个 elif 的条件来满足需求
 
if-if   :    多个 if 放在一起,这种结构有个特点,它不会像前面的结构那样,只要满足其中一个条件,执行相应的代码后就跳出整个分支结构,而此结构不但会执行首个满足条件的分支,它甚至会到每一个 if 分支里都去验证一下条件是否为 True,如果条件依然满足,程序将继续运行该条件中的语句。
 
嵌套 if 语句,可以把 if...elif...else 结构放在另外一个 if...elif...else 结构中
if(表达式 1){
语句
if(表达式 2){
语句
}elseif(表达式 3){
语句
}else{
语句
 
 
9.逻辑运算符
-not        非运算,表达式为 true 则返回 false,否则返回 true
-or          或运算,有一个表达式为 true 则返回 true
-and        与运算,两个表达式都为 true 才返回 true
-xor         逆或运算
 
10.关系运算符
-eq      检测两个数是否相等,相等返回 true。$a -eq $b
-ne      检测两个数是否不相等,不相等返回 true。$a -ne $b
-gt       检测左边的数是否大于右边的,如果是,则返回 true。$a -gt $b
-ge      检测左边的数是否大于等于右边的,如果是,则返回 true。$a -ge $b
-lt        检测左边的数是否小于右边的,如果是,则返回 true。$a -lt $b
-le       检测左边的数是否小于等于右边的,如果是,则返回 true。$a -le $b
[String]::IsNullOrEmpty(str)    判断字符串是否为空
-match 判断字符串是否匹配给定的正则表达式
 
11.正则表达式
^      在字符串的开始匹配
\B    不在单词的边界匹配
.       匹配除了换行符意外的任意字符
\Z    在字符串的结尾匹配(包含多行文本)
[^abc]      匹配除了包含在中括号的任意字符
\uFFFF     匹配 Unicode 字符的十六进制代码 FFFF。例如,欧元符号的代码 20AC
[abc]     匹配括号中指定的任意一个字符
\v         匹配纵向制表符(ASCII 11)
[a-z]     匹配括号中指定的任意区间中任意一个字符 \w 匹配字符,数字和下划线
[^a-z]   匹配除了包含在中括号指定区间字符的字符 \W 匹配匹配字符,数字和下划线意外的字符
\a        响铃字符(ASCII 7)
\xnn     匹配特殊字符,nn 代表十六进制的 ASCII 码
\c or \C 匹配 ASCII 中的控制字符,例如 Ctrl+C
.*          匹配任意数量的字符(包括 0 个字符)
\d         匹配数字字符,等同于[0-9]
*           匹配一个元素 0 次或者多次(最大限度地匹配)
\D         匹配数字以外的字符,等同于[^0-9]
*?         匹配前面的元素零次或者多次(最小限度地匹配)
\e         Esc (ASCII 9)
.*          匹配任意个数的任意字符(包括 0 个字符)
\f         换页符(ASCII 15)
?          匹配上一个元素 0 次或者 1 次(最大限度地匹配)
\n         换行符
??        匹配上一个元素 0 次或者 1 次(最小限度地匹配)
\r         回车符
{n,}       匹配上一个元素至少 n 次
\s
白空格(空格,制表符,新行)
{n,m}    匹配上一个元素 n 至 m 次
\S        匹配(空格,制表符,新行)意外的字符
{n}        匹配上一个元素 n 次
\t        制表符
+         匹配上一个元素一次或者多次
\A        在字符串的开始匹配(包含多行文本)
$         在字符串的结尾匹配
\b        在单词的边界匹配
 
一般校验的格式为:   $userinfo -match 正则
 
 
12.循环结构
while :
在 PowerShell 中如果需要做不定次数的循环,建议使用 while True 这种结构,while循环对条件控制非常有利
While(判断条件){}
 
Do-while:
While 循环会先进行条件判断在才开始循环,如果期望优先执行一次则 while 循环就比较吃力了,至少代码量会增加。例如:希望输入一个命令,如果这个命令不是 exit 则执行,如果这个命令不是 exit 则继续执行
 
for:在明确循环次数的时候建议使用 for 循环
for(变量;控制条件;变量自增){
循环执行
}
 
foreach 循环在 PowerShell 中是用于循环遍历同组多元素的循环方法,也可以理为循环遍历数组的方法
foreach(变量 in 组){
变量操作
}
 
循环跳出有两个关键字,continue 和 break,continue 用于表示退出本次循环继续下一次,break 表示退出整个循环。
 
 
 
 

关于powershell的个人总结

上一篇:格式化启动盘win10


下一篇:如何添加shell的自定义命令