课堂笔记.note

noteId: F9D9F1C9F8814639BC6A0D749AF41A91 · 原始路径:/ALL/Windows - B模块/服务配置/Windows Powershell/课堂笔记.note · 图片:15 · 附件待处理:0

 
 
 
·查看 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:pad
 
powershell 脚本的结尾 是 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 + 1
 
4、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、调用函数:
checknetworkstate
 
 
3、有参数的函数:
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