课堂笔记.note


·查看 powershell 版本:
echo $PSVersionTable·powershell 的跨单位运算:
1gb
1tb
1kb
1gb + 1tb·powershell 的数学运算:
1 * 1
1 * 10 / 20· 一、powershell 的命令语法:
# 动词 + 名词;
get-service
Set-ExecutionPolicy
Remove-Variable
ls | Format-Table name,mode
powershell 中 能够直接打开 例如 notepad 等
get-command //查看能够使用的 powershell命令
# Cmdlet 是原生的命令get-help Get-ChildItem
获取某个命令的用法
get-history //查看当前 shell 运行过的命令查看系统中的别名:
get-alias二、查找:
get-alias | findstr /i "ls" //查看所有包含 ls 的命令,/i 表示不区分大小写
get-alias | where {$_.Name.StartsWith("g")}
# where 是一个变量,用于存储输出
$_.name //文件名
.startswith(" ... ") //以 ... 开头ls | where {$_.LastWriteTime.ToString().StartsWith("2023")}
.LastwriteTime //输入要筛选的内容
.ToString //将数据类型转换为 字符串·设置 别名:
# 只会对当前的 powershell 生效:
Set-Alias -name pas -value notepad
# 此时输入 pas 就会打开 notepad(记事本)
# 导出别名:
# 导入别名:
Import-Alias C:\myalias.ps1 -force
# -force 覆盖当前的别名
# 删除别名:
del alias:padpowershell 脚本的结尾 是 ps1,不是 psl
ls variable:$numl = 1234 //设置变量
$numl //查看变量
#
test-path variable:numl //测试某个变量是否存在
#
$num3 = $num2 = 123
$num3
$num2
$num2 = 456
$num3
$num2
# 改变一个变量:
$num1 = 234 //重新定义
$num1,$num2 = $num2,$num1 //将 num1 和 num2 的值替换
# 删除一个变量的值
$num1 = $null
DEL variable:num2 //删除变量(不会保留变量)
clear-variable num3 //清除变量的值,会保留变量
# 写保护变量,这种变量只能读取,不能修改
New-Variable test -Value 100 -Option ReadOnly -Force
-Option Readonly -force //设置变量为只读
# 该变量不能修改,普通方法不能删除
# 删除写保护变量
DEL variable:test -force
# 获取系统变量:
ls env:
$? //查看上一个命令是否执行成功
$env:TEMP
$env:testname="hello"
Win10 默认不允许执行 Powershell 脚本,需要编辑组策略才能允许:
Set-ExecutionPolicy RemoteSigned

1 -eq 2
1,3,5,7 -ne 0
1 -ne 0 //1 是否等于 0
2 -ne 0
0 -ne 0
1 -gt 0 //1 是否大于 0
2 -gt 2
(1,2,3,4,5) -contains 8 //8是否存在于这里面
$a = 1gb -1t 1tb //1GB 是否 小于 1TB
$a
-not %a //取反三、if、else、elseif 语法:
if(){}else{} //当 if() 表达式成立,就执行 if() 后面的 {},如果不成立,就执行 else 后面的 {}
if(){}eleif(){}else{}
$num = 0
if($num -gt 0){"$num 大于 0"}
elseif($num -eq 0){"$num等于0"}
else{"$num小于0"}四、switch 语法:
1、基础:
switch(){}
switch($num){
{$_ -lt 0}{"$_ 小于0"}
{$}{}
{}{}
}
# $_ 代表的是结果
$num = Read-Host //让用户进行输入值
2、switch 循环:
$num = 1..10
switch($num){
default{$_}
}五、powershell 的 foreach循环:
1、foreach :
$arr = 1..10 //1 ~ 10
foreach($num in $arr){mkdir "c:\$num"}foreach ($file in ls c:\){
if ($file.Length -gt 1kb){$file.name}
}foreach ($file in ls c:\){
if ($file. -gt 1kb){$file.name}
}-contains //全字匹配
-match //非全字匹配
2、for :
for($num=1;$num -lt 100;$num++){
$num
}六、while / do while:
while 直接执行循环
do while 先执行一个命令,再执行循环1、while:
$num = 15
whil($num -gt 10){
$num
$num = $num - 1
}2、do while:
# 语法:
do{}while($num -gt 10) //先执行一般 {} 的命令,再进行 while
#
$num = 15
do
{
$num = $num - 1
$num
}
while ($num -gt 10)3、black:
$num = 1
while ($num -lt 6)
$num
if($num -eq 4){
break}
else {
$num ++
}
}
# $num ++ //表示 变量$num + 14、continue:

七、数组类型:

int //整形
str //字符串
@() //对象
变量可以是 字符串、整数、浮点数、
$a.GetType() //查看变量中值的类型
$a = 1,2,3,4
$a[0..2]
$a[0..3]
$a.Count //计数
$a -join "-" //通过 - 作为连接符进行输出
$a -replace 1 9 //将 变量中的内容"1",替换为 9(替换出的值不会改变原来的变量)
$a += "test"
·可变长数组:
正常方法创建的数组,不能使用 app 等进行修改,只能够使用 +=、replace替换
# 创建可变长数组
$a = New-Object System.Collections.ArrayList
$Months.IsFixedSize八、函数:

函数可以理解为一堆命令的合集
1、编写无参数函数:
function checknetworkstate {
ping 127.0.0.1
ping 127.1.1.1
ping 127.2.1.1
}2、调用函数:
checknetworkstate3、有参数的函数:
function test($site){
ping $site
}
# 执行:
test("127.0.0.1")function add($one,$two){
return ($one + $two)
}
add -one 1 -two 2
# powershell 传参 与 python 不一样(powershell 传参不能使用括号)九、交互式脚本:
1、read-host:

十、格式化字符串 与 字符串对象:
1、字符串分割:
这里将字符串切割成了数组:

.contains 与 -contains 不一样
.contains 能够非全字匹配
-contains 必须全字匹配
.compareto("c") //c在该变量中出现的次数
.insert() //插入
.Length //查看长度
.remove(3) //删除索引下标,删除 下标 3 的字符十一、
powershell 能够直接操作注册表、证书
cd hklm:
get-ItemProperty 
