- 本笔记主要用于快速回顾知识点,请不要将其当做系统的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()}
- 如果你的变量名如上非常花里胡哨,最好加一个大括号括住你的变量名(当然,肯定是不建议使用这样的变量名的)
- $变量名=数学表达式
- $变量名=命令
- 可以同时为变量$num1和$num2赋值:35
- $num1=$num2=35
- $num1
- $num2
- 注意:
- powershell中对大小写不敏感,$a与$A是相同的
6. powershell变量操作
7. powershell自动化变量
- 所谓的“自动化变量”就是指:powershell一旦打开就会自动加载的变量
- $home:当前用户的根目录
- $pid:当前powershell会话的进程标识符(只读)
- $$:显示上一条所运行的命令
- $?:显示上一条命令是否成功运行
8. powershell环境变量
- 查看当前的环境变量
- 查找以na开头的环境变量
- 打印环境变量的OS的值
- 自定义/更新环境变量的值(临时生效)
- 删除环境变量
- 设置和获取【用户环境变量】(只对当前用户生效)
9. powershell脚本执行策略
- 获取powershell当前执行的脚本策略
- 设置powershell当前执行的脚本策略
- set-executionpolicy 策略
- set-executionpolicy RemoteSigned
10. powershell与其他脚本程序的互相调用
- 执行bat脚本/vbs脚本/powershell脚本
- 在cmd中执行powershell脚本
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条件判断
13. powershell循环结构
- 【foreach】
- 【while】
- 【for】
- 【switch循环】
- break和continue关键字的使用
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
- 函数的返回值
function add($num1,$num2){
$sum=$num1+$num2
return $sum
}
add 1 3
function add($num1,$num2){
$sum=$num1+$num2
$sum.gettype().fullname -->返回值的类型全名
return $sum
}
add 3 4
function add($num1,$num2){
return $num1,$num2 -->可以返回多个值
}
add 3 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