Powershell


Windows不得不品的一环, CMD因为拓展性不好, 整出来一个powershell; 它可以利用.NET Framework的强大功能, 脚本编写更加容易

其实最重要的是贴近linux的使用方法, 支持部分linux命令

能力

简单一点的, 比如可以直接进行计算任务:

1024*1024
1gb
1gb/1mb
1gb -gt 1mb # 这个是大于号
(5*2+20)+2
9%2

获取计算机的服务详细信息

get-service

甚至可以和.net平台交互, 可以和cmd, vbs相互调用

快捷键

ALT+F7      # 清楚命令的历史记录
PgUp PgDn # 翻页
Enter # 执行当前命令
End # 将光标移动至当前命令的末尾
Del # 从右开始删除输入的命令字符
Esc # 清空当前命令行
F2 # 自动补充历史命令至指定字符处
F4 # 删除命令行至光标右边指定字符处
F7 # 对话框显示命令行历史记录
F8 # 检索包含指定字符的命令行历史记录
F9 # 根据命令行的历史记录编号选择命令,历史记录编号可以通过F7查看
左/右 # 左右移动光标
上/下 # 切换命令行的历史记录
Home # 光标移至命令行字符最左端
Backspace # 从右删除命令行字符
Ctrl+C # 取消正在执行的命令
Tab # 自动补齐命令或文件名

使用方法

管道和重定向

和linux相同, 都是管道符, 执行完再执行

ls | format-table name, mode
ls | ls

重定向更不用说了, >这是覆盖, >>这是追加

ls | format-table name, mode > demo.txt
type demo.txt

执行外部命令

可以执行cmd命令, 虽然我认为这是不用说的, 谁知道呢

netstat -ano    # 查看端口信息
ipconfig # 查看网络配置信息
route print # 打印路由信息
start code # 打开程序
$env:path # 输出系统变量

我这个vscode是写在了系统环境变量中的, 如果不行就是start cmd

命令集

不是很懂, 大部分都是可以被更简单的命令替换, 我就不展开了

get-command    # 获取所有命令

别名使用

主要是命令集不好写, 出现了别名: get-childitem的别名是lsdir

# 获取相关的帮助信息
get-help get-childitem
# 获取别名所对应真实的命令
get-alias -name ls
get-alias -name dir

自定义别名

比如设置code启动为vsc, 可以别名是临时生成的, 关掉powershell就会失效

set-alias -name vsc -value code

还能保存所有别名:

export-alias demo.ps

变量

和php比较类似, 只输入变量名称会输出变量内容

$age=28
$age

变量操作

可以给变量复赋值命令, 然后调用变量执行命令

$n=ls
$n

还有一些变量操作:

# 查看当前所有的变量
ls variable:
# 查找特定的变量值(通配符)
ls variable:num*
ls variable:num1
# 查找变量是否存在
test-path variable:num1
test-path variable:num0
# 删除变量
del variable:num1
test-path variable:num1
# 专用变量管理的命令
clear-variable
remove-variable
new-variable

自动化变量

powershell打开会自动加载变量, 例如: 窗口打开它会自动加载大小, 再比如程序的配置信息自动加载

和下面的环境变量有些类似, 但是自动化变量仅在PowerShell会话或脚本运行时有效; 但是内容确实是一样的, 就放在环境变量了

环境变量

给一些例子就行, 主要是自己创建和删除

$HOME
$PID
$env

环境变量操作

# 打印特定环境变量值
$env:windir
# 创建新的环境变量
$env:name='a'
ls env:na*
# 删除环境变量
del env:name
ls env:na*
# 更新临时生效的环境变量
$env:OS="Linux"
$env:OS
# 永久生效
[environment]::setenvironmentvariable("PATH","E:\","User")
[environment]::getenvironmentvariable("PATH","User")

脚本调用

首先这个功能是被禁止的, 你得先打开

# 管理员身份执行:
set-executionpolicy RemoteSigned

可能你安装过oh my push, 它是个命令行美化脚本

  1. 调用demo.bat文件, 完成以上设置直接运行即可: ./demo.bat
  2. 调用vbs文件同理, ./demo.vbs
  3. powershell脚本更不需赘述