PowerShell 使用
Practice
常用命令
vim $PROFILE # 编辑配置文件
Get-ChildItem *> $null # 抛弃所有输出
whoami
Remove-Item -Recurse -Force <dir> # rm -rf
Start-Process <dir> # macOS 中的 open,alias start
Get-Help <string> -Online
Get-Command <string> # sh 中的 which
Get-Command pwsh | Select-Object Source # 只输出 Get-Command 返回对象的 Source 属性;Select-Object 也可以用 select 代替
Get-Service sshd
Start-Service sshd
Set-Service -StartupType Automatic sshd
Update-Help -UICulture en-US # 更新 PowerShell 帮助文档
Unblock-File course.ps1 # 取消阻止从 Internet 下载的文件
Get-Content命令也可以显示变量值:Get-Content Env:PATH
常用环境变量
$env:http_proxy="http://127.0.0.1:7890";$env:https_proxy="http://127.0.0.1:7890" # 设置环境变量
$env:http_proxy="";$env:https_proxy="" # 清除环境变量
$env:Path -split ';' | sls python # 查看环境变量并筛选 python
$env:Path += ';C:\Tools'
$env:USERNAME
配置文件位置:$PROFILE
关于脚本:about_Scripts
PowerShell 101
什么是 101 课程
我们常说的 "101课程",通常是指 XXXX 的入门级课程。在美国,数字 "101" 是大学课程中普遍使用的介绍性课程编号,是对某一个主题的综览课程。因为许多教程的第一章或者导论部分都会用 "101" 做标注,这个词汇渐渐的就被引申了出来,用来表示基础入门级课程,变成了一个代号,也就是基础课程的同义词。
注释
$a = 1 # 单行注释
<#
多行注释
$b = 2
#>
变量
变量名以 $ 开始,不区分大小写:
$a = 1
$b = 2
$result = $a * $b
$result # 输出变量
自动变量
| 变量名 | 描述 |
|---|---|
$? |
上一个命令的退出状态,如果上一个命令执行成功,则 $? 的值为 True,否则为 False |
$args |
传递给脚本的参数,是一个数组 |
$HOME |
用户主目录 |
$PWD |
当前工作目录 |
字符串
$s1 = '$a * $b = $result' # 单引号字符串中的变量不会被解析
$s2 = "$a * $b = $result" # 双引号字符串中的变量会被解析
$s3 = "line1`nline2" # PowerShell 使用 ` 作为转义符
$s4 = $(Get-Date) # 命令替换
cmdlet
PowerShell 命令被称作 cmdlet (发音 command-let),每个 cmdlet 的名字由一个动词-名词对组成,例如 Get-Process。当你要查找一个 cmdlet 时,可以指定筛选 cmdlet 的动词或者名词。
cmdlet是原生 PowerShell 命令
PowerShell 命令不区分大小写
帮助系统
PowerShell 中的三个核心 cmdlet:
Get-CommandGet-HelpGet-Member
Get-Help
help *process* # help process
help Get-Help -Full
help Get-Help -Online
help Get-Help -Parameter Name
help Get-Help -Examples
Update-Help
函数
help的使用体验要比 cmdletGet-Help更好,help一次只显示一页内容,使用空格键翻页。
Update-Help 失败
Update-Help -UICulture en-US
解决 powershell 7.1 的 Get-Help 找不到对应的详细帮助 | CSDN
Get-Command
Get-Command 用来定位命令
Get-Command -Verb Get
Get-Command -Noun Process
Get-Command -Name Get-Process
Get-Command -Name *service* -CommandType Cmdlet, Function, Alias # 使用通配符搜索时最好限制一下命令类型
# 更好的做法是指定 Verb 或 Noun 或同时指定
Get-Command | Get-Random | Get-Help -Full # Learn a PowerShell command a day
Microsoft Docs: PowerShell 101
Reference
语法
方括号表示可选项
尖括号是内容占位符,表示参数的 .NET 类型
类型后面的 [] 表示该参数可以接受多个值,用逗号分隔:
Get-Process [-Name] <string[]>
Get-Process -Name Explorer, Winlogon, Services
花括号表示枚举,表示参数的可选值:
-Option {None | ReadOnly | Constant | Private | AllScope}
-Option ReadOnly
Microsoft Docs: about_Command_Syntax
参数
Microsoft Docs: about_Parameters
参数名和参数值可以用空格分隔,也可以用冒号分隔:
-<parameter_name> <parameter_value>
-<parameter_name>:<parameter_value>
使用 Get-Help cmdlet 获取命令参数信息:
Get-Help Get-ChildItem
Get-Help Get-Member -Parameter * # 获取关于 Get-Member 的所有参数的信息

浙公网安备 33010602011771号