一、基础
查看powershell版本.通过内置变量可以查看
$PSversionTable
1.模糊查询命令
help *service* : 查询包含关键字得命令
2.获取所有命令
get-command
3.获取命令帮助信息
get-help 命令
或者
help 命令
4.查看别名命令得全称
get-alias -name ls
5.powershell脚本
默认策略,不允许执行powershell脚本
PS C:\Users\Administrator> Get-ExecutionPolicy
Restricted
设置允许windows运行powershell脚本.
set-executionpolicy RemoteSigned
6.powershell中的打印
在powershell 脚本中中打印任何内容,不需要使用echo或者pront的打印任何动作。
打印字符串直接使用 “打印内容”。
如果要打印的话可以使用
Write-Host "123"
7.比较运算符
7.1 特点:
在比较运算符号中,不区分大小写。可能有些特殊的地方需要区分
1.-eq:等于
PS C:\Users\Administrator\Desktop> 1 -eq 1
True
PS C:\Users\Administrator\Desktop> "hello" -eq "HELLo"
True2. -ne: 不等于
PS C:\Users\Administrator\Desktop> 1 -ne 1
False
PS C:\Users\Administrator\Desktop> 1 -ne 2
True
PS C:\Users\Administrator\Desktop> "hello" -ne "HELLO"
False3.-lt: 小于
PS C:\Users\Administrator\Desktop> 1 -lt 2
True省略
-le:小于等于
-gt: 大于
-ge:大于等于4.-and: 并且
PS C:\Users\Administrator\Desktop> 1 -eq 1 -and 2 -eq 2
True
PS C:\Users\Administrator\Desktop> 1 -eq 1 -and 2 -eq 3
False-or: 或
PS C:\Users\Administrator\Desktop> 1 -eq 2 -or 2 -eq 2
True-not: 取反
PS C:\Users\Administrator\Desktop> -not (1 -eq 2)
True-in: 是否在范围内
PS C:\Users\Administrator\Desktop> $list=@(1,2,3,4)
PS C:\Users\Administrator\Desktop> 1 -in $list
True
PS C:\Users\Administrator\Desktop> 3 -in $list
True
PS C:\Users\Administrator\Desktop> 33 -in $list
False
二、变量基础
1.定义变量
$name="zhangsan"
2.打印变量
打印变量,不需要使用print或者echo等关键字
$name
3.常用内置变量
3.1 $home
显示家目录
3.2 $?
上一条命令得发执行结果,成功是True 失败是False
4.数组
4.1 定义
方法1:
$arr=1,2,3,4,5方法2:
$arr=1..10方法3:定义空数组
$arr=@()
4.2 访问数组
访问数组依然使用下边的方法,下边从0开始
4.3 数组添加成员
$list=1,2,3
$list
"-"*100
$list+=10
$list
4.3 统计数组元素个输
$arr.count
5.引用命令的执行结果
在linux中使用反撇号或者 ( ) ,在 p s 中使用 ( ) 或者 (),在ps中使用()或者 (),在ps中使用()或者()
三、powershell概念
1.集合
在powershell中,显示的结果被称为一个集合
2.对象
执行powershell命令后,在显示的结果中,每一行就是一个对象
3.属性
执行powershell命令后,在显示的结果中,每一列 就是 属性
4.方法
方法是对 对象 的操作行为
5.查看命令的属性和方法
命令如下:Get-Service 是查看所有系统服务的命令,Get-Member是查看这条命令的的所有属性和方法
PS C:\Users\Administrator\Desktop> Get-Service|Get-Member
简写为
Get-Service | gm
结果如下:
Name MemberType Definition
---- ---------- ----------
...... ......
Close Method void Close()
...... ......
Start Method void Start(), void Start(string[] args)
Stop Method void Stop()
WaitForStatus Method void WaitForStatus(System.ServiceProcess.ServiceControllerStatus desiredStat...
CanPauseAndContinue Property bool CanPauseAndContinue {get;}
CanShutdown Property bool CanShutdown {get;}
CanStop Property bool CanStop {get;}
...... ......
ToString ScriptMethod System.Object ToString();
其中
property就是 属性(列)
method就是 方法
6.实例
6.1 查看"打印"服务
PS C:\Users\Administrator\Desktop> Get-Service -Name "*spooler*"Status Name DisplayName
------ ---- -----------
Running Spooler Print Spooler
或者使用where也可以,下边会写where的用法
PS C:\Users\Administrator\Desktop> Get-Service|where {$_.name -eq "spooler"}Status Name DisplayName
------ ---- -----------
Stopped Spooler Print Spooler
6.2 操作服务
方法1:stop()
$ser=$(Get-Service -Name "*spooler*")$ser.stop()
方法2:Stop-Service
Get-Service -Name "*spooler*" |Stop-Service
四、判断和循环
1.判断
$num = 1000if($num -lt 60){"成绩不合格"
}
elseif($num -ge 60 -and $num -lt 90){"成绩良好"
}
elseif($num -ge 90){"成绩优秀"
}
2.循环
$port_list = 1..10
foreach($i in $port_list){"-" * 100$i
}
五、where过滤
1.语法:
这里的$_是固定写法,代码当前行。
where {$_ 比较运算符 "匹配对象"}
2.实例
匹配所有tcp协议中 处于listen状态的行。 state是列名
Get-NetTCPConnection | where {$_.State -eq "listen"}
3.不显示header
ft -HideTableHeaders 隐藏了header. 而且只显示LocalPort字段
ft是格式化命令
Get-NetTCPConnection | where {$_.State -eq "listen"} |ft -HideTableHeaders LocalPort