- 本笔记主要用于快速回顾知识点,请不要将其当做系统的powershell教程
1. 数学运算符
- 1gb/1mb
-
1gb/1mb*18kb
- 1gb -gt 1mb ->-gt用于判断是否相等
- 0xabc ->会自动转换为十进制
2. powershell执行外部命令
- 输入&"notepad" 或 输入:notepad均可 -> 打开notepad
- &"绝对路径"
- 题外话:使用$env:path ->可以查看系统变量
- $env:path=$env:path+"绝对路径" ->使用命令添加环境变量(只生效一次)
3. powershell命令集
- powershell的目录基本上都采用:动词+名词 的形式
- get-command:可以查看所有命令
- get-help:查看命令帮助
- get-process:获取进程信息
- get-alias:获取当前会话的别名
- get-history:浏览历史命令
- get-date:获取当前时间
4. powershell别名
- get-help 命令 :也可以用来查看该命令是否有别名
- get-alias -name 命令:可以用来查看该命令的真实名称
- get-alias | where {$_.definition.startswith("Remove")}$_:表示当前的元素
get-alias | group-object definition | sort -descending Count:将别名最多的排在最前面
set-alias -name 别名 -value 被命名别名的命令(自定义别名,临时生效)
set-alias -name pad -value notepad
del alias:别名(删除别名)
export-alias demo.ps1(导出别名信息)
import-alias -force demo.ps1(导入别名信息)
5. powershell变量基础
- 定义一个字符串变量:$name="xiaoming"(字符串型)
- 打印$name变量:$name
定义一个数字型变量:
定义一个花里胡哨的变量:
${"i am a" var()}="hello"
打印:${"i am a" var()}
如果你的变量名如上非常花里胡哨,最好加一个大括号括住你的变量名(当然,肯定是不建议使用这样的变量名的)
$变量名=数学表达式
$n
$变量名=命令
$n
可以同时为变量$num1和$num2赋值:35
$num1
$num2
注意:
powershell中对大小写不敏感,$a与$A是相同的
6. powershell变量操作
- 交换变量值~~~$num1=10$num2=20$num1,$num2=$num2,$num1~~~
- 判断变量是否存在test-path variable:变量名
- test-path variable:num1(查看变量num1是否存在)
查看变量
ls variable:(查看当前正在使用的变量)
ls variable:num*(查看以num开头的变量)
ls vatiable:变量名(查看指定变量名的变量)
删除变量
当然也可以使用一下命令来操作变量,可以达到与上面命令相同的效果:
remove-variable 变量名(删除变量)
new-variable 变量名(将变量变为只读)
7. powershell自动化变量
- 所谓的“自动化变量”就是指:powershell一旦打开就会自动加载的变量$home:当前用户的根目录
- $pid:当前powershell会话的进程标识符(只读)
- $?:显示上一条命令是否成功运行
8. powershell环境变量
查找以na开头的环境变量
打印环境变量的OS的值
自定义/更新环境变量的值(临时生效)
删除环境变量
设置和获取【用户环境变量】(只对当前用户生效)
9. powershell脚本执行策略
- 获取powershell当前执行的脚本策略get-executionpolicy
设置powershell当前执行的脚本策略
set-executionpolicy RemoteSigned
10. powershell与其他脚本程序的互相调用
- 执行bat脚本/vbs脚本/powershell脚本直接绝对路径/相对路径进行运行
在cmd中执行powershell脚本
powershell "&\’demo.ps1\’"
11. powershell条件操作符
- -eq:等于
- -ne:不等于
- -gt:大于
- -lt:小于
- -le:小于等于
- -not:取反
- -and:与
- -or:或
- -xor:异或
- -contains:包含(1,2,3) -contains 1 返回true
-notcontains:不包含
筛选出不等于1的值:1,2,3,4 -ne 1
12. powershell条件判断
- 【if】实例:~~~$num=100if($num -gt 90) {"1"} else {"-1"}if($num -gt 100) {"1"} elseif($num -eq 100) {"0"} else{"-1"}~~~
【switch】
实例(if)~~~$number=55if($number -gt 50 -and $number -lt 60){"此数值大于50小于60"}elseif($number -eq 50){"此数值等于50"}else{"此数字小于50"}~~~
实例(switch)~~~$number=50switch(number){{(_ -lt 50) -and (_ -gt 40)} {"此数字小于50且大于40"}{_ -eq 50} {"此数值等于50"} 这行代码也可以写为:50 {"此数字等于50"}{$_ -gt 50} {"此数值大于50"}}~~~
13. powershell循环结构
- 【foreach】
实例1:~~~$arr=1..10foreach($n in $arr){$n*$n+10}~~~
- 实例2:~~~$path_value=dir f:\\all –将命令的执行结果赋值给 $path_value变量foreach($file in $path_value){if($file.length -gt 1kb){$file.name}}~~~
- 【while】
实例1:(while)~~~$num=15while($num -gt 10){$num$num=$num-1}~~~
- 实例2:(do while)~~~$num=15do{$num$num=$num-1}while($num -gt 10)~~~
- 【for】
实例1:~~~$sum=0for($i=1;$i -le 100;$i++){$sum=$num+$i}$sum~~~
- 【switch循环】
实例1:~~~$num=1..10switch(num){default{"number=_"}}~~~
- 实例2:~~~$num=1..10switch(num){{(_ % 2) -eq 0} {"_是偶数"}{(_ % 2) -ne 0} {"$_是奇数"}}~~~
- break和continue关键字的使用
实例1:(break)~~~$num=1while($num -lt 6){if($num -eq 4){$num++break}else{$num$num++}}~~~
- 实例2:(continue)~~~$num=1while($num -lt 6){if($num -eq 4){$num++continue}else{$num$num++}}~~~
14. powershell数组的创建与访问
- 定义数组:$arr1 -is [array] -用来判断是否是数组~~~$arr1=1,2,3,4$arr2=1..5$arr3=1,"hello world"$arr4=@() –>空数组$arr4=@(1,2,3,4)$arr5=,"nicai",1$arr6=ipconfig~~~
访问数组:~~~$arr=1,"hello world",(get-date)$arr[0] –>访问第一个元素$arr[0,1] –>访问第一个和第二个元素$arr[-1] –>访问最后一个元素$arr[0..2] –>访问第1,2,3元素$arr[0..2].count –>访问元素的个数$arr[($arr.count)..0] –>逆序访问~~~
为数组添加元素:~~~$arr=1,"nicai",(get-date)$arr.count$arr+="hahaha"$arr.count~~~
15. powershell自定义函数和调用
- 函数的定义与调用:
实例1:~~~function myping($site){ping $site}myping www.baidu.com –>调用~~~
- 实例2:~~~function my($name,$age){$content="i am $name, and i am $age years old"write-host $content}my "nicai" 25~~~
- 函数的返回值
实例1:~~~function add($num1,$num2){$sum=$num1+$num2return $sum}add 1 3~~~
- 实例2:~~~function add($num1,$num2){$sum=$num1+$num2$sum.gettype().fullname –>返回值的类型全名return $sum}add 3 4~~~
- 实例3:~~~function add($num1,$num2){return $num1,$num2 –>可以返回多个值}add 3 4~~~
- 实例4:~~~function add($num1,$num2,$num3){$value=$num1,$num2,$num3$value.gettype() –>返回的结果为:数组类型return $value}add 1 2 3~~~
16. powershell定义文本
"hello world $(get-date)""hello my name is \'nicai\'" -->这样写可以将单引号显示出来"hello my name is `"nicai`"" -->powershell中将反引号作为转义符号"你好`n朋友" -->powershell的换行符:`n
17. powershell实现用户交互
- 接收用户输入:
$input=read_host "请输入您的姓名""您好,您输入的姓名是:$input"
18. powershell格式化字符串
$name="nicai"$age=25$body="strong""My name is $name, i am $age years old, and my body is $body""My name is {0}, i am {1} years old, and my body is {2},{3}" -f $name,$age,$body,(3*6) -->格式化输出(效果与上面的相同)
19. powershell字符串对象方法
$str="c:\\windows\\system32\\demo.txt"$str.split("\\").gettype()$str.split(".")[-1] -->返回字符串“txt”$str.endwith("txt") -->判断该字符串是否是以字符串来结尾的$str.contains("window") -->判断该字符串是否包含“window”$str.compareto("nicai") -->判断两字符串是否相同(相同返回0,不同返回-1)$str.indexof("w") -->查出“w”字母的下标$str.insert(3,"hahaha") -->在索引3之后插入字符串“hahaha”$str.replace("c","d") -->将c替换成d