1.PowerShell
人的一生,没有一味的苦,没有永远的痛;没有迈不过的坎,没有闯不过的关!
-
PowerShell是微软面向对象的一门语言
-
我现在虚拟机、宿主机都是Windows2019的版本,内置了PowerShell5.1
-
两种进入方式:1.类似进入命令行CMD;2.PowerShell的ISE内有提示、《颜色显示
-
PoweShell的注释:
- 单行注释
#注释内容
- 注释块
<# 注释内容 #>
-
PoweShell的if、function块等自动识别开闭,但是可以使用
#region #endregion
-
Power Shell可以识别{}、[]、()
- 放在一半,另一半变亮;
- 快捷键
-
Power Shell内置了代码块。调用
-
右键
-
ctrl+j
-
-
Power Shell的On the line 搜索命令
PowerShell的基本命令
-
除了支持本身命令,还支持其他的如cmd的ping、ipconfig;但是powershell本身有相似对应的命令
ipconfig Get-NetIPAddress
ping test-connection
推荐使用PowerShell 的Cmdlet
-
Cmdlet的组成:
- Command Name Command Paramenters
- Remove-Item -Path C:\TEmp -Force
-
get -command :获取命令的信息
-
注意命令缩写,自己设定命令的缩写(不推荐,要跨平台,其他人误解)
-
查奇怪命令的用法 $? | {}
Get-Alias -Name ?
-
PowerShell的命令参数类型
- 样式 内容 是否要求必写
- [] 否
- 没有标志 开关(输入开不输入关) 是
-
PowerShell的参数集 不能混用
-
参数集 多个参数集不能混用
-
Data 所有数据存储在一个对象里
-
$a=1 $a
-
$a =Get-Service 变为PowerShell的对象
-
$a =Get-Service 特有Start stop
-
$a[0].name
-
New-Variable c -Value 3 定义一个值为3的对象
-
Get-Variable -name c 获取c的值 大小写不敏感;空格敏感
-
Clear-Variable -name c 清空c 的值
- $c 为空
- Get-Variable -name c Value为空
-
Remove-Variable -name c 删除c变量
- c 变 为 c 变为 c变为ConfirmPreference
- Get-Variable -name c Get-Variable : 找不到名为“c”的变量。
-
PowerShell内置了一些变量(自己命名不要和内置变量重名)
- $Error 数组 保存了出错的问题
- $PSVersionTable 查询PowerShell的版本
- $true 命令行回复 True
- $false 命令行回复 False
-
PowerShell从键盘读命令:$intputa=Read-Host “please input”
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GOz6CFtn-1606888097373)(C:\Users\11988\AppData\Roaming\Typora\typora-user-images\image-20201201222308014.png)]
-
PowerShell映射了其他命令行的命令如cd ls(都是命令的缩写)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q5tnhoHt-1606888097376)(C:\Users\11988\AppData\Roaming\Typora\typora-user-images\image-20201201223427873.png)]
-
什么是Provider
实际上是一个动态链接库(.dll),在PowerShell中也称为”管理单元”, MSDNS上定义的类库:http://msdn.microsoft.com/en-us/library/cc136763(VS.85).aspx
-
Teat-Path测试的路径
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4WcFtcAn-1606888097380)(C:\Users\11988\AppData\Roaming\Typora\typora-user-images\image-20201201224036228.png)]
-
管道(|)的作用:把管道(|)左边的输出作为右边的输入
- Get-Service -Name Schedule ,BITS | start-Service
-
管道常见的命令
-
Get-service |Sort-object -Property status \ \获取管道并根据status排序(视频38‘)
gci C:*.txt |sort-Object -Property @{Expression ={ . C r e a t i o n T i m e − _.CreationTime - .CreationTime−__.LastWriteTime};Descending=$true} |ft CreationTime,LastwriteTime,FullName
-
Get-service |Sort-object status \排序方式根据需要设定
-
Get-service |Group-Object -Property statue
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yAqvQaus-1606888097385)(C:\Users\11988\AppData\Roaming\Typora\typora-user-images\image-20201201225228050.png)]
-
-
数组的定义
- [email protected](1,2,3,4)
- [email protected](1,2,3)
-
比较数组
[email protected](1,2,4)
[email protected](1,2,3)
Compare-Object -ReferenceObject $a -DifferenceObject $b -IncludeEqual[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MxWo9wOk-1606888097388)(C:\Users\11988\AppData\Roaming\Typora\typora-user-images\image-20201201230806066.png)]
=> DifferenceObject 只有的对象
<=ReferenceObject 只有的对象
-
常用的Object Cmdlets
- Sort-objec
- Select-objec
-
输出格式化
- Get-Service | Format-List \ \List方式展示
- Get-Service | Format-Table \ \Table方式展示
- Get-Services |Export-CVS
-
$Services=Get-Service
$Services | Export-CSV c:\temp\test.csv
$fromCsv = import-CSV c:\temp\test.csv -
$Service[0].GetType(): 获取变量的类型
-
对象的层
-
Services | Out-File c:\temp\test.txt 输出到文件
-
gc : get-comant 获取一条命令
gc C:\temp\testservicesJson2.txt |convertFrom-Json
-
PowerShell 会自动识别数据类型
- $a=1 $a.GetType() Int 32
- $a=1pb $a.GetType() Int 64
- 强制定义数据类型
- $a=[String]1 $a.GetType() String
- 强制定义变量类型
- [int]$inta=1 $inta.GetType() int 能转成字符转为字符;否则报错
-
字符串
$stringa="aaa" $inta=1 $stringa="inputa vlue is $inputa"
字符串单引号、双引号赋值区别 :双引号解析;单引号直接赋值
s t r i n g a = " i n p u t a v l u e i s ‘ stringa="inputa vlue is ‘ stringa="inputavlueis‘inputa" 不解析$inputa
-
PowerShell 的转义符号
-
’ 将命令换行
-
管道里操作缩写
- -eq
- -ne
- -gt
- -ge
- -lt
- -le
- -match 字符串的匹配
-
Where object 和foreach object
-
Where object 筛选某些变量 KaTeX parse error: Expected '}', got 'EOF' at end of input: service |? {_.statu -eq ‘stopped’}
- ?Where object
- _ $service.Count $PSItem
-
foreach object 遍历某些变量
-
$a=1
-
$service |%{
echo “$a ( ( (_.name)”
-
}
-
-
-
filter过滤
-
数组的定义
- [email protected](1,2,3)
-
hash表的定义以及使用
推荐阅读