powershell基础.note

noteId: WEB36aa0883c1bd3455cbfebd1366c77276 · 原始路径:/ALL/Windows - B模块/服务配置/Windows Powershell/powershell基础.note · 图片:19 · 附件待处理:0

 
1、基础命令:
# 命令格式:动词 + 名词
例如:get-process,start-service,remove-item
# 获取命令简介:
get-command    //查看当前powershell可用的所有命令
 
 
2、查看、过滤对象:
get-process    //查看所有进程
 
(get-process)[0]    //过滤第一行
 
(get-process)[0] | select-object id    //过滤指定字段
 
 
3、执行策略:
# set-executionpolicy
restricted    //(windows客户端)默认设置,禁止所有脚本运行
remotesigned    //(windowsserver)默认设置,本地脚本可运行,远程脚本需签名
unrestricted    //所有脚本都可运行
bypass    //不限制
 
 
4、管道:
# 将前面的命令执行的结果交给后面的命令来处理:
## 前面命令的输出结果会被保存到 $_ 变量中:
例如:get-process | where-object {$_.id -gt 100}
 
 
5、常用过滤工具:
 
·直接获取参数值:
get-service dns
 
# 将前面的命令使用括号包起来,然后使用 . 来进行获取
 
·select-object 过滤一列字段的内容:
#Select-Object    //过滤指定对象下的一列内容
get-process | select-object id    //过滤Id这一字段
 
 
 
·where-object 过滤指定对象的所有内容:
# Where-Object    //过滤对象,类似linux的 grep
## 新语法:<命令> | Where-Object <属性> <比较运算符> <值>
## 旧语法:<命令> | Where-Object { $_.<属性> <比较运算符> <值> }
 
get-process | where-object {$_.id -gt 6000}    //过滤 Id 大于 6000的项
或另一种写法:
get-process | where-object Id -gt 6000
 
 
 
·fl 格式化输出:
format-list    //用于格式化输出,它不改变数据本身,只是控制显示格式
## 简写 fl
get-service spooler | fl
# fl 显示常用属性
# fl * 显示所有属性
# fl [名称] 显示指定属性
 
 
measure-object    //将输出计数
 
·group-object 将输出分组统计:
# group-object    //将输出分组统计
get-service | group-object status
 
 
6、使用powershell访问、管理文件系统:
 
·powershell能够自动解析大小:
1kb
1GB
 
(1)查看文件:
ls
ls c:\windows
 
# 只查看文件:
ls c:\windows\system32 -file
 
# 只查看目录:
ls c:\windows\system32 -directory
 
# 递归查找文件:
ls c:\windows -recurse
 
# 查找指定文件:
ls c:\windows -recurse | where-object {$_.Length -gt 500MB}    //查找大于500MB的文件
 
(2)创建文件、文件夹:
new-item -path c:\123 -itemtype file
new-item -path c:\321 -itemytpe directory
new-item -path c:\321\666 -itemytpe directory
 
 
(3)复制、移动文件:
# 复制文件:
copy-item c:\321\666 -destination c:\ -recurse
 
# 移动文件:
mv c:\666 c:\dir
 
 
7、变量与数据类型:
powershell会自动推断变量的类型
所有变量以 $ 开头
 
# 自定义变量:
$arr = 123
 
$a = 1,2,3,4,5
 
# 创建字典变量:
$user = @{name='alice';age=18}
 
 
·创建只读变量:
# 创建只读变量:
new-variable -name test -value 12345 -option readonly
 
 
默认变量:
$?    //上一个命令是否执行成功
$$    //上一个命令的原命令
$_    //当前管道对象的值(在 ForEach-Object 或 Where-Object 中)
 
 
# 系统变量:
ls ENV:
 
8、比较符:
 
 
9、if条件判断:
 
 
 
 
·练习:
 
# 获取服务运行状态:
 
# 获取 CPU使用率: