目录
一、PowerShell是什么
二、PowerShell的安装
三、快捷键
四、数学运算
五、执行外部命令
六、powershell命令集
七、别名
八、执行脚本和文件
一、PowerShell是什么
powershell是一个跨平台的任务自动化和配置管理框架,也就是运行在windows机器上实现系统和应用程序管理自动化的命令行脚本环境。powershell需要.NET环境的支持,同时也支持.NET对象。
powershell和windows的cmd、linux的bash很相似,但是又有些许不同。它可以跨平台,传递的是.net对象而不是raw字符串,有面向对象的管道,也能调用.NET的许多功能,听起来很强大吧,所以power呢~
二、PowerShell的安装
https://www.pstips.net/powershell-introduction-and-install.html
查看powershell当前版本
$PSVersionTable.PSVersion
三、快捷键
ALT+F7 清除命令的历史记录 PgUp PgDn 显示当前会话的第一个命令和最后一个命令 Enter 执行当前命令 End 将光标移至当前命令的末尾 Del 从右开始删除输入的命令字符 Esc 清空当前命令行 F2 自动补充历史命令至指定字符(例如历史记录中存在Get-Process,按F2,提示"Enter char to copy up to",键入‘s’,自动补齐命令:Get-Proce) F4 删除命令行至光标右边指定字符处 F7 对话框显示命令行历史记录 F8 检索包含指定字符的命令行历史记录 F9 根据命令行的历史记录编号选择命令,历史记录编号可以通过F7查看 左/右方向键 左右移动光标 上/下方向键 切换命令行的历史记录 Home 光标移至命令行最左端 Backspace 从右删除命令行字符 Ctrl+C 取消正在执行的命令 Ctrl+左/右方向键 在单词之间移动光标 Ctrl+Home 删除光标最左端的所有字符 Tab 自动补齐命令或者文件名
四、数学运算
powershell支持数学运算,可以在其中进行加减乘除等运算,回车后powershell会将结果输出(+,-,*,/,%)
同时,powershell还能识别计算机容量单位
五、执行外部命令
内部命令是随每次启动的command.com装入du并常驻内存,而外部命令是一条单独的可执行文件。在操作时要记住的是,内部命令在任何时候都可以使用,而外部命令需要保证命令文件在当前的目录中,或已经被加载了路径。
powershell可以像cmd一样很好的执行外部命令,如ipconfig、route print(打印路由表)、netstat、nc等
可以输入cmd或cmd.exe来打开cmd程序
当在powershell中输入一串字符串时,powershell会原样输出,但如果这个字符串是一个程序的名字,那么在字符串前加一个&符号,powershell会执行这个程序
六、powershell命令集
cmdlets是Powershell的内部命令
cmdlet是command-let的缩写,这相当于命令提示符窗口的命令行,所有cmdlet都以标准的“动词-名词”格式命名的,方便我们理解和记忆,如Get-Command命令,就是获得(动词)—命令(名词),输入该命令回车后,Windows PowerShell会为我们显示所有的命令,一共263条哦
常用cmdlet命令:
1、Get-Command
用于检索所有可用cmdlet的列表。
2、Get-Help
用于显示有关cmdlet和概念的帮助信息。
3、Get-WMIObject
用于通过WMI来检索管理信息。
4、Get-EventLog
用于检索Windows事件日志。
5、Get-Process
用于检索单个活动进程或活动进程的列表。
6、Get-Service
用于检索 Windows 服务。
7、Get-Content
用于读入文本文件,将每行视为一个子对象。
8、Add-Content
用于将内容附加到文本文件。
9、Copy-Item
用于复制文件、文件夹和其他对象。
10、Get-Acl
用于检索访问控制列表(ACL)。
七、别名
cmdlet 的名称由一个动词和一个名词组成,其功能对用户来讲一目了然。但是对于一个经常使用powershell命令的人每天敲那么多命令也很麻烦啊。能不能把命令缩短一点呢?于是“别名”就应运而生了。Powershell内部也实现了很多常用命令的别名。例如Get-ChildItem,列出当前的子文件或目录。它有两个别名:ls 和 dir,这两个别名来源于unix 的shell和windows的cmd。
因此别名有两个作用:
- 继承:继承unix-shell和windows-cmd。
- 方便:方便用户使用。
查看别名所指的真实cmdlet命令
Get-Alias -name 命令
查看可用的别名:
dir alias: | where {$_.Definition.Startswith("Get")} //查看Get开头的cmdlet命令的别名
dir alias:获取的是别名的数组,通过where对数组元素进行遍历,$_代表当前元素,alias的Definition为String类型,因为powershell支持.net,.net中的string类有一个方法Startswith。通过where过滤集合在powershell中使用非常广泛。
查看所有别名和指向cmdlet的别名的个数
ls alias: | Group-Object definition | sort -Descending Count
创建自己的别名,但是这样创建的别名会在powershell退出时自动删除
删除内置别名
del alias:命令
八、执行脚本和文件
Powershell运行文件和脚本必须使用绝对路径或者相对路径,或者要运行的文件必须定义在可受信任的环境变量中。
脚本和批处理都属于伪可执行文件,它们只是包含了若干命令行解释器能够解释和执行的命令行代码。
批处理是扩展名为”.bat”的文本文件,它可以包含任何cmd控制台能够处理的命令。当批处理文件被打开,Cmd控制台会逐行执行每条命令。
首先保存这段代码作为ping.bat文件
@echo off
echo batch File Test
pause
Dir %windir%/system
以下左边为cmd执行ping命令,右边为powershell执行ping命令,可以看到区别,在cmd中直接执行了ping.bat文件,这是十分危险的,如果有人入侵电脑,并在这个ping.bat文件内写入有害代码,那么在无意中,受害者输入了ping命令,恶意代码就会被直接执行。而在powershell中,输入ping则还是ping命令,这个机制就比较安全。
在powershell中只有这样才会运行批处理文件
运行vbs文件
直接运行
PS C:\Users\OO\Desktop\powershell> & ‘.\test .vbs‘
在powershell中运行
PS C:\PS> cscript.exe .test.vbs
运行powershell文件
PS C:\Users\OO\Desktop\powershell> .\test.ps1
参考:https://www.pstips.net/powershell-online-tutorials