Windows PowerShell
- 一、PowerShell使用
- 二、PowerShell常用命令:
- 1、 Get类
- 2、Set类
- 3、Write类
- 三、PowerShell 类型 变量 数组 字符串:
- 四、PowerShell运算符用法:
- 1.算术二元运算符:
- 2.赋值运算符
- 3.逻辑运算符
- 4.比较运算符
- 5.字符串运算符
- 五、PowerShell条件控制的用法:
- 1.循环类
- 2.分支类
- 六 、课堂练习
一、PowerShell使用
Windows PowerShell 是一种命令行外壳程序和脚本环境.
启动PowerShell
方法一: 直接在cmd中执行powershell,切换为powershell
方法二: 开始菜单中输入powershell启动powershell
方法三: 开始菜单----附件----powershell启动带x86的是32位的,不带的是64位的;带ies的是简单的ide
二、PowerShell常用命令:
1、 Get类
1.Get-Command : 得到所有PowerShell命令,获取有关 cmdlet 以及有关 Windows PowerShell 命令的其他元素的基本信息。
包括Cmdlet、Alias、Function。
2.Get-Process : 获取所有进程
3.Get-Help : 显示有关 Windows PowerShell 命令和概念的信息
4.Get-History : 获取在当前会话中输入的命令的列表
5.Get-Job : 获取在当前会话中运行的 Windows PowerShell 后台作业
6.Get-FormatData : 获取当前会话中的格式数据
7.Get-Event : 获取事件队列中的事件
8.Get-Alias : 获取当前会话的别名
9.Get-Culture :获取操作系统中设置的当前区域性
10. Get-Date :获取当前日期和时间
11. Get-Host : 获取表示当前主机程序的对象
12.Get-Member : 获取对象的属性和方法。
13.Get-Random : 从集合中获取随机数或随机选择对象
14.Get-UICulture : 获取操作系统中当前用户界面 (UI) 区域性设置
15.Get-Unique : 从排序列表返回唯一项目
16.Get-Variable :获取当前控制台中的变量
17.Get-EventLog : 获取本地或远程计算机上的事件日志或事件日志列表中的事件
18.Get-ChildItem : 获取一个或多个指定位置中的项和子项
19.Get-Content : 获取指定位置的项的内容
20.Get-ItemProperty :获取指定项的属性
21.Get-WmiObject : 获取 Windows Management Instrumentation (WMI) 类的实例或可用类的相关信息
22.Get-Location :获取当前工作位置的相关信息(如:F:\Users\TaoMin )
23.Get-PSDrive:获取当前会话中的 Windows PowerShell 驱动器
24.Get-Item:获取位于指定位置的项
25.Get-Process :获取在本地计算机或远程计算机上运行的进程
26.Get-Service : 获取本地或远程计算机上的服务
27.Get-Transaction :获取当前(活动)事务
28.Get-ExecutionPolicy :获取当前会话中的执行策略
2、Set类
(set类命令一般都含有参数)
1.Set-Alias : 在当前 Windows PowerShell 会话中为 cmdlet 或其他命令元素创建或更改别名(替代名称)
如:如:Set-Alias aaa Get-Command
2.Set-PSDebug :打开和关闭脚本调试功能,设置跟踪级别并切换 strict 模式
3.Set-StrictMode :建立和强制执行表达式、脚本和脚本块中的编码规则
4.Set-Date :将计算机上的系统时间更改为指定的时间
5.Set-Variable :设置变量的值,如果该变量还不存在,则创建该变量
6.Set-PSBreakpoint :在行、命令或者变量上设置断点
7.Set-Location :将当前工作位置设置为指定的位置
8.Set-Item :将项的值更改为命令中指定的值
9.Set-Service :启动、停止和挂起服务并更改服务的属性
10.Set-Content :在项中写入内容或用新内容替换其中的内容
11.Set-ItemProperty :创建或更改某一项的属性值
12.Set-WmiInstance :创建或更新现有 Windows Management Instrumentation (WMI) 类的实例
13.Set-ExecutionPolicy :更改 Windows PowerShell 执行策略的用户首选项
3、Write类
1.Write-Host : 将自定义输出内容写入主机。类似于.net的 write()或者writeline()功能
2.Write-Progress :在 Windows PowerShell 命令窗口内显示进度栏
3.Write-Debug :将调试消息写入控制台
4.Write-Verbose:将文本写入详细消息流
5.Write-Warning :写入警告消息
6.Write-Error : 将对象写入错误流
7.Write-Output : 将指定对象发送到管道中的下一个命令;如果该命令是管道中的最后一个命令,则在控制台上显示这些对象
8.Write-EventLog :将事件写入事件日志
三、PowerShell 类型 变量 数组 字符串:
类型
弱类型:数据类型根据值的类型定义
强类型:强行规定数据类型,值的类型必须符合数据类型
常量
不能改变的量
常量的申明中不需要加 $ ,但在使用时需要加上。
Set-Variable -name 常量名 -Value 常量值 -Option Constant
常量,存储在栈里
Set-Variable -name 常量名 -Value 常量值 -Option readonly
只读变量,存储在方法区里
变量
变量
可以改变的量
变量名:$+任意字母
赋值格式:变量名 = 值
数组
一个容器、一个相同数据类型的容器
$数组名=元素1,元素2,元素3
$数组名[下标]
-1 < 下标 <=下
数组长度-1
$array_name=value1,value2,value3 #定义数组,用 逗号 隔开 $array_name=value0…valueN #连续数字用 …
$array_name=@() #定义 空数组
字符串
所有用双引号引上的就是字符串
任意字符串 + 任意数据类型 --> 结果为字符串
任意数据类型 + 任意字符串 --> 结果为前面的数据类型,(a + s )结果为a的数据类型
1 2 3 4 5 | PowerShell注释用法: 注释符号:# 用法如下(一般在.ps1脚本文件中使用): Get-Process #此处写注释 sort ws |
四、PowerShell运算符用法:
1.算术二元运算符:
1 2 3 4 5 | + 加、串联 - 减 * 乘 / 除 % 模 |
2.赋值运算符
1 | = += -= *= /= %= |
3.逻辑运算符
1 2 3 4 | ! 不等于 not 非 and 且 or 或 |
4.比较运算符
(可在运算符前加上 i 或者 c ,以指定是否区分大小写)
-eq 等于 -ceq 区分大小写
-ne 不等于
-gt 大于
-ge 大于等于
-lt 小于
-le 小于等于
-contains 包含
5.字符串运算符
1 2 3 4 5 6 | + 连接两个字符串 * 按指定次数重复字符串 -f 设置字符串格式 -replace 替换运算符 用法:"abcd" -replace "bc","TEST" 返回结果: aTESTd -match 正则表达式匹配 -like 通配符匹配 |
.Contains(str) — 验证是否 包含 关系,大小写敏感
.Equals(str) — 判断两个字符串是否 相等
.EndsWith(str) — 判断此字符串是否是以指定字符串 结束
.StartsWith(str) — 判断此字符串是否是以指定字符串 开始
Split() — 字符串 拆分,以空格 拆分; 或以指定子串 拆分
.SubString(start,end) — 截取 字符串子串
.ToUperInvariant() — 当前字符串全部转 大 写
. ToUper() 亦可
.ToLowerInvariant() — 当前字符串全部转 小 写
.ToLower() 亦可 Insert(int,str) — 在指定位置 插入 子串,下标从1 开始
. Remove(start,length) — 删除 从指定位置开始到指定长度的子串,下标从1 开始
.Trim() — 去掉字符串前后 空白格
–数字型
–整数型 --字节型 (byte)(1字节) --短整型 (short)(2字节) --整型 (int)(4字节) --长整型 (long)(8字节)
–浮点数型 --单精度浮点型 (float) --双精度浮点型 (double)
–非数字型 - -字符型(char) --字符串型 (string) --布尔型 (boolean)
五、PowerShell条件控制的用法:
1.循环类
1.foreach的用法用法一如下:
KaTeX parse error: Expected 'EOF', got '#' at position 10: var=1..6 #?定义数组 …i in $var)
{
n++Write?Host"i"
}
Write-Host “there were $n record”
执行结果:
1
2
3
4
5
6
there were 6 records
用法二如下:直接获取管道数据
$n = 0
“a”,“b”,“c”,“d” | foreach{
$n++
Write-Host $_
}
Write-Host “there were $n record”
执行结果: a b c d there were 4 records
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | 2.while的用法用法一如下: $n = 0 while($n -le 5) #当$n小于等于5时进行下面操作 { write-host $n $n++ }执行结果: 0 1 2 3 4 5 3. do...while的用法用法一如下: $n = 0 do { write-host $n $n++ } while($n -ne 3) #当$n<>3时进行循环操作 执行结果: 0 1 2 4. do...until的用法用法一如下: $n = 0 do { write-host $n $n++ } until($n -gt 3) #当$n>3时停止操作执行结果: 0 1 2 |
2.分支类
1.if用法
if语法结构如下:
if(条件1)
{处理1}
elseif(条件2)
{处理2}
…elseif 可多次重复
else
{处理3}
switch语法结构如下:
switch(表达式)
a=3switch(a)
{
1
{“It’s one”;break} #break:表示若匹配跳出swith语句
2
{“It’s two”;break}
3
{“It’s three”;break}
4
{“It’s four”;break}
5
{“It’s five”;break}
default
{“It’s unknown”;break}
}
执行结果:
It’s three
若 $a = 8 执行结果为:It’s unknown
中时,break语句将使windows powershell立即退出整个循环。在不循环的switch结构中,powershell将退出switch代码块。
用法如下:
var=0while(var -lt 10)
{
var+=1if(var -eq 5)
{
break #当var=5时,终止while循环
}
write-host $var
}
执行结果:
1
2
3
4
2.continue用法:continue语句出现在foreach、for、while等循环结构中时,continue语句将使windows powershell立即退出某一次轮循环,并继续下一轮循环。
用法如下:
var=0while(var -lt 10)
{
var+=1if(var -eq 5)
{
continue #当var=5时,跳出本轮循环,继续下一轮循环
}
write-host $var
}执行结果:
1
2
3
4
6
7
8
9
10
PowerShell抛出异常的Throw用法:
用法如下:
Throw 字符串|异常|ErrorRecord
如:throw “danger”
返回结果:danger 及详细错误信息
PowerShell获取出错信息的用法:
用法如下:
function one
{
get-process -ea stop #-ea定义错误发生以后该如何继续执行,意同-ErrorAction
get-childitem ada -ErrorAction stop #此处有错误 路径ada不存在
get-process -ErrorAction stop
}
one
返回结果:报出错误信息
PowerShell单步调试的用法:
用法如下:
#单步调试
首先设置调试可用 set-psDebug -step ;若要设置为非调试状态 可用 set-psDebug -off
for(
i=1;i -le 10 ; $i++)
{
write-host “loop number $i”
}执行结果:会出现逐步调试的对话框
六 、课堂练习
[String]$str=“Windows PowerShell”
在字符串最后加上”v 5.1.1“
在字符串最后加上“8362752”
找到752的位置,在前面加上“.”
找到PowerShell的位置,并将其裁剪下来
将“18362.752”替换为2
在“v 5.1.2”前面添加“PSVersion”
删除“PSVersion”
判断版本是否是“5.1.2”,给出true或false的结果
判断是否包含“Power”这个字符串,给出true或false的结果
str是否以WIN开头?是否以v 5.1结尾
在str中查找第一次出现o和最后一次出现o的位置
将str转成大写
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | [String]$str="Windows PowerShell" Write-Output($str) $str=$str + "v 5.1.1" Write-Output($str) $str=$str + "8362752" Write-Output($str) $a=$str.IndexOf("752") $str=$str.Insert($a,".") Write-Output($str) $b=$str.IndexOf("PowerShell") $l="PowerShell".Length $str_2=$str.SubString($b,$l) Write-Output($str_2) $str=$str.Replace("18362.752","2") Write-Output($str) $block=$str.IndexOf(" ") $str=$str.Insert(1+$block,"PSVersion") Write-Output($str) $l_2="PSVersion".Length $str=$str.Remove(1+$block,$l_2) Write-Output($str) Write-Output($str.Contains("5.1.2")) Write-Output($str.Contains("Power")) Write-Output($str.StartsWith("Win")) |
结果如下: