Open yzdily opened 3 years ago
一.Powershell操作符 常见的比较运算符包括:
-eq 等于 -ne 不等于 -gt 大于 -lt 小于 -le 小于等于 -contains 包含 -notcontains 不包含
67 -eq 50 50 -eq 50 1gb -gt 1tb (1,2,3) -contains 1 (1,2,3) -contains 2 (1,2,3) -contains 4
求反运算符:
-not
$a=89 -gt 50 $a -not $a
逻辑运算:
-and 与运算 -or 或运算 -not 非运算 -xor 异或运算
$true -and $true $true -and $false $true -or $false $false -or $false -not $true $true -xor $true
比较数组和集合,从中筛选出不等于0的数字。
1,5,8,0,9 -ne 0
二.Powershell条件语句 1.if条件判断 if-elseif-else条件判断,执行操作用大括号表示。
$num=100 if($num -gt 90) {"大于90"} else {"小于等于90"} if($num -gt 100) {"大于100"} else {"小于等于100"}
注意,if-else中间可以增加新的判断elseif,如下所示:
if($num -gt 100) {"大于100"} elseif ($num -eq 100) {"等于100"} else {"小于100"}
2.switch语句 Switch语句主要用于多种情况的判断,这里在本地创建一个test01.ps1文件,并执行该代码。
传统的if判断如下:
$num=56 if($num -gt 50 -and $num -lt 60) { "大于50并且小于60" } elseif ($num -eq 50) { "等于50" } else { "小于50" }
去到桌面1019文件夹,输入“.\test01.ps1”执行代码,再打印该文件的源代码。
switch语句如下:$_表示对变量取值。
$num=56 switch($num) { {$_ -lt 50} {"此数值小于50"} {$_ -eq 50} {"此数值等于50"} {$_ -gt 50} {"此数值大于50"} }
三.Powershell循环语句 1.foreach循环 这里定义数组采用“$arr=1…10”实现,表示1到10的数字,在调用foreach循环输出。
$arr=1..10 foreach ($n in $arr){ $n*$n }
定义文件“test03.ps1”,只输出偶数内容。
$arr=1..10 foreach ($n in $arr) { if (($n%2) -eq 0 ) { $n } }
接着利用foreach操作文件目录,将C盘python34文件夹下的路径全部提取出来,赋值到file中输出。
foreach ($file in dir c:\python34) { if($file.length -gt 1kb) { $file.name $file.length } }
原始文件内容如下所示:
也可以定义变量来指定路径
$path_value = dir c:\python34 foreach ($file in $path_value) { if($file.length -gt 1kb) { $file.name $file.length } }
2.while循环 while循环需要注意循环的终止条件,防止出现死循环,而do_while循环是先执行一次循环体,再进行判断。
下面这段代码是经典运算:1+2+3+…+99,文件名为“test05.ps1”。
$i=1 $s=0 while($i -lt 100) { $s = $s + $i $i = $i + 1 } $s $i
do_whlie先执行循环体,再进行条件判断,如下所示:
$num=15 do { $num $num=$num-1 } while($num -gt 10)
3.break和continue关键词 break跳出整个循环,停止执行;continue跳出当前循环一次,继续执行下一个判断。
break: 下面这个代码当数值小于6继续执行,当其等于4停止循环。
$i=1 while($i -lt 6) { if($i -eq 4) { break } else { $i $i++ } }
continue: 跳过了中间等于4的内容。
$i=1 while($i -lt 6) { if($i -eq 4) { $i++ continue } else { $i $i++ } }
4.for循环 利用for循环实现1+2+…+100的代码如下(test09.ps1)。
$sum=0 for($i=1;$i -le 100;$i++) { $sum=$sum+$i } $sum
学习Powershell基础语法之后,更重要的是解决实际问题,后续作者将继续深入学习。
5.switch循环 使用switch循环实现输出数组1到10,并进行奇数和偶数判断。
$num=1..10 switch($num) { default{"number=$_"} } $num=1..10 switch($num) { {($_ % 2) -eq 0} {"$_ 数值是偶数"} {($_ % 2) -ne 0} {"$_ 数值是奇数"} }
四.Powershell数组 1.数组定义 数组定义一种方法是逗号隔开不同的元素,另一种是通过两个点来定义数组。
$arr=1,2,3,4,5 $arr=1..5
$arr -is [array]
数组可以接受不同的数值。
$arr=1,3.14,"yangxiuzhang" $arr $arr -is [array]
空数组定义如下:
$arr=@() $arr $arr -is [array]
下面简单比较只有一个元素数组和变量的对比。
$arr=,"hello" $arr $arr -is [array] $arr=1 $arr $arr -is [array]
数组也可以是一个变量或命令,此时它仍然是一个数组。
$arr=ipconfig $arr $arr -is [array]
2.访问数组 首先定义一个多钟类型的数组。
$arr=1,"hello world",(get-date) $arr
访问数组特定元素,第一个元素,获取两个元素,获取最后一个元素。
$arr[0] $arr[0,1] $arr[-1]
//提取部分元素 $arr[0..2]
$arr[0..2]
获取数组元素大小调用count实现。
$num = $arr[0..2] $num.count
如何将数组倒序输出呢?如下所示。
$arr[($arr.count)..0]
数组添加一个元素代码如下:
$arr=1,"hello world",(get-date) $arr+="csdn" $arr $arr.count
更多数组操作,推荐读者结合实际应用进行学习。
五.Powershell函数 1.自定义函数及调用 函数通常包括函数名、参数、函数体,下面是定义及调用一个myping函数的代码(test11.ps1)。
function myping() { ping www.baidu.com } myping
同样,上面的代码可以修改为指定参数。
function myping($site) { ping $site } myping www.baidu.com
下面这个代码是接收两个参数并显示的功能。
function myinfo($name,$age) { $info="I am $name, and i am $age years old." write-host $info } myinfo yxz,28
2.函数返回值 函数返回值通过return实现,可以返回多个值。下面是test13.ps1例子。
function add($num1,$num2) { $sum=$num1+$num2 return $sum } add 2 4 function fun($num1,$num2) { $sum=$num1+$num2 $sum.gettype() $sum.gettype().fullname return $sum } fun 2.2 4.3 //多个返回值 function other($num1,$num2,$num3) { $value=$num1,$num2,$num3 return $value } other 2.2 4 6
六.Powershell字符串及交互 1.定义文本及转义字符 表达式中可以定义只,如下所示。同时,单引号和双引号可以相互嵌套,这和JAVA、PHP、Python中的变量套接类似。
"hello world $(get-date)" "hello world $(5*7)" "hello, my name is 'yangxiuzhang'"
输出结果:
在Powershell中,转义字符不再是斜杠(\)而是(`),如下所示。
n 换行 r 回车符 t tab键 b 退格符 `’ 单引号
n 换行
t tab键
"hello,n my name is 'yangxiuzhang'"`
"hello,
'yangxiuzhang
2.用户交互 read-host 读取用户的输入。
$input = read-host "请输入您的姓名" "您好!您输入的姓名是:$input"
3.格式化字符串 传统的多个变量输出方法:
$name="yangxiuzhang" $age=25 $body="strong" $height=1.72 "My name is $name, i am $age years old, and my body is $body, my height is $height"
格式化字符串输出方法:
"My name is {0}, i am {1} years old, and my body is {2}, my height is {3}" -f $name,$age,$body,$height
4.字符串操作 任何编程语言,都绕不过字符串操作,在网络安全领域,获取ip地址、URL拼接、图片或脚本文件获取等都涉及字符串操作,下面进行简单分享。
字符串分割
$str="c:\windows\system32\demo.txt" $str.split("\") //数组类型,可以通过数组下标访问 $str.split("\").gettype()
获取图片名称
$str="https://blog.csdn.net/Eastmount/102781411/logo.png" $str.split("/")[-1]
是否以某个字符结尾和是否包含某个字符。
$str.endswith("png") $str.contains("csdn")
字符串比较,-1表示两个字符串不一样,相等输出0。
$str="https://blog.csdn.net/Eastmount/102781411/logo.png" $str.compareto("window") $str.compareto("https://blog.csdn.net/Eastmount/102781411/logo.png")
其他操作如下:
//获取下标 $str.indexof("s") //字符插入 $str.insert(4,"yxz") //字符串替换 $str.replace("n","N")
七.Powershell注册表操作 注册表(Registry,繁体中文版Windows操作系统称之为登录档)是Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息。早在Windows 3.0推出OLE技术的时候,注册表就已经出现。随后推出的Windows NT是第一个从系统级别广泛使用注册表的操作系统。但是,从Microsoft Windows 95操作系统开始,注册表才真正成为Windows用户经常接触的内容,并在其后的操作系统中继续沿用至今。
在CMD中输入regedit即可打开注册表,
注册表图形化界面显示如下,包括各种程序的配置信息,不能随便修改它,很容易造成系统故障。
HKEY_CLASSES_ROOT:定义文档的类型\类以及与类型关联的信息以及COM组件的配置数据 HKEY_CURRENT_USER:包含当前登录到Windows的用户的配置信息 HKEY_LOCAL_MACHINE:包含与计算机相关的配置信息,不管用户是否登录 HKEY_USERS:包含有关默认用户配置的信息 HKEY_CURRENT_CONFIG:包含有关非用户特定的硬件的配置信息
在Powershell中显示注册表指令如下:
cd hkcu: dir
对应注册表图形界面。
cd system dir
对应图形界面。
其他访问也类似。
cd HKLM:
对应图形界面:
读取键值
get-itemproperty
设置键值
set-itemproperty
由于注册表不能随便修改,很容易造成系统故障
一.Powershell操作符 常见的比较运算符包括:
-eq 等于 -ne 不等于 -gt 大于 -lt 小于 -le 小于等于 -contains 包含 -notcontains 不包含
求反运算符:
-not
逻辑运算:
-and 与运算 -or 或运算 -not 非运算 -xor 异或运算
比较数组和集合,从中筛选出不等于0的数字。
1,5,8,0,9 -ne 0
二.Powershell条件语句 1.if条件判断 if-elseif-else条件判断,执行操作用大括号表示。
注意,if-else中间可以增加新的判断elseif,如下所示:
if($num -gt 100) {"大于100"} elseif ($num -eq 100) {"等于100"} else {"小于100"}
2.switch语句 Switch语句主要用于多种情况的判断,这里在本地创建一个test01.ps1文件,并执行该代码。
传统的if判断如下:
去到桌面1019文件夹,输入“.\test01.ps1”执行代码,再打印该文件的源代码。
switch语句如下:$_表示对变量取值。
三.Powershell循环语句 1.foreach循环 这里定义数组采用“$arr=1…10”实现,表示1到10的数字,在调用foreach循环输出。
定义文件“test03.ps1”,只输出偶数内容。
接着利用foreach操作文件目录,将C盘python34文件夹下的路径全部提取出来,赋值到file中输出。
原始文件内容如下所示:
也可以定义变量来指定路径
2.while循环 while循环需要注意循环的终止条件,防止出现死循环,而do_while循环是先执行一次循环体,再进行判断。
下面这段代码是经典运算:1+2+3+…+99,文件名为“test05.ps1”。
do_whlie先执行循环体,再进行条件判断,如下所示:
3.break和continue关键词 break跳出整个循环,停止执行;continue跳出当前循环一次,继续执行下一个判断。
break: 下面这个代码当数值小于6继续执行,当其等于4停止循环。
continue: 跳过了中间等于4的内容。
4.for循环 利用for循环实现1+2+…+100的代码如下(test09.ps1)。
学习Powershell基础语法之后,更重要的是解决实际问题,后续作者将继续深入学习。
5.switch循环 使用switch循环实现输出数组1到10,并进行奇数和偶数判断。
四.Powershell数组 1.数组定义 数组定义一种方法是逗号隔开不同的元素,另一种是通过两个点来定义数组。
$arr -is [array]
数组可以接受不同的数值。
空数组定义如下:
下面简单比较只有一个元素数组和变量的对比。
数组也可以是一个变量或命令,此时它仍然是一个数组。
2.访问数组 首先定义一个多钟类型的数组。
访问数组特定元素,第一个元素,获取两个元素,获取最后一个元素。
//提取部分元素
$arr[0..2]
获取数组元素大小调用count实现。
如何将数组倒序输出呢?如下所示。
$arr[($arr.count)..0]
数组添加一个元素代码如下:
更多数组操作,推荐读者结合实际应用进行学习。
五.Powershell函数 1.自定义函数及调用 函数通常包括函数名、参数、函数体,下面是定义及调用一个myping函数的代码(test11.ps1)。
同样,上面的代码可以修改为指定参数。
下面这个代码是接收两个参数并显示的功能。
2.函数返回值 函数返回值通过return实现,可以返回多个值。下面是test13.ps1例子。
六.Powershell字符串及交互 1.定义文本及转义字符 表达式中可以定义只,如下所示。同时,单引号和双引号可以相互嵌套,这和JAVA、PHP、Python中的变量套接类似。
输出结果:
在Powershell中,转义字符不再是斜杠(\)而是(`),如下所示。
n 换行
r 回车符t tab键
b 退格符 `’ 单引号"hello,
n my name is'yangxiuzhang
'"`2.用户交互 read-host 读取用户的输入。
3.格式化字符串 传统的多个变量输出方法:
格式化字符串输出方法:
"My name is {0}, i am {1} years old, and my body is {2}, my height is {3}" -f $name,$age,$body,$height
4.字符串操作 任何编程语言,都绕不过字符串操作,在网络安全领域,获取ip地址、URL拼接、图片或脚本文件获取等都涉及字符串操作,下面进行简单分享。
字符串分割
获取图片名称
是否以某个字符结尾和是否包含某个字符。
字符串比较,-1表示两个字符串不一样,相等输出0。
其他操作如下:
七.Powershell注册表操作 注册表(Registry,繁体中文版Windows操作系统称之为登录档)是Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息。早在Windows 3.0推出OLE技术的时候,注册表就已经出现。随后推出的Windows NT是第一个从系统级别广泛使用注册表的操作系统。但是,从Microsoft Windows 95操作系统开始,注册表才真正成为Windows用户经常接触的内容,并在其后的操作系统中继续沿用至今。
在CMD中输入regedit即可打开注册表,
注册表图形化界面显示如下,包括各种程序的配置信息,不能随便修改它,很容易造成系统故障。
HKEY_CLASSES_ROOT:定义文档的类型\类以及与类型关联的信息以及COM组件的配置数据 HKEY_CURRENT_USER:包含当前登录到Windows的用户的配置信息 HKEY_LOCAL_MACHINE:包含与计算机相关的配置信息,不管用户是否登录 HKEY_USERS:包含有关默认用户配置的信息 HKEY_CURRENT_CONFIG:包含有关非用户特定的硬件的配置信息
在Powershell中显示注册表指令如下:
对应注册表图形界面。
对应图形界面。
其他访问也类似。
cd HKLM:
对应图形界面:
读取键值
get-itemproperty
设置键值
set-itemproperty
由于注册表不能随便修改,很容易造成系统故障