PowerShell命令与脚本(1)——PowerShell的认识

PowerShell的介绍

PowerShell(包括Windows PowerShell和PowerShell Core)是微软公司开发的任务自动化和配置管理框架,由.NET Framework和.NET Core是构建的命令行界面壳层相关脚本语言组成,最初仅仅是Windows组件,后于2016年8月18日开源并跨平台支持。
在PowerShell中,管理任务通常由cmdlets(发音为command-lets)执行,这是执行特定操作的专用.NET类。可以将cmdlet集合至脚本、可执行文件(一般是独立应用程序)中,或通过常规.NET类(或WMI / COM对象)实例化。通过访问不同数据存储中的数据由PowerShell运行,如资源管理器或注册表。
 
PowerShell 是运行在windows机器上实现系统和应用程序管理自动化的命令行脚本环境。你可以把它看成是命令行提示符cmd.exe的扩充,不对,应当是颠覆。 powerShell需要.NET环境的支持,同时支持.NET对象。微软之所以将PowerShell 定位为Power,并不是夸大其词,因为它完全支持对象。其可读性,易用性,可以位居当前所有Shell之首。 
 
  • 如果您的系统是window7或者Windows Server 2008,那么PowerShell 2.0已经内置了,可以升级为3.0,4.0。
  • 如果您的系统是Windows 8 或者Windows server 2012,那么PowerShell 3.0已经内置了,可以升级为4.0。
  • 如果您的系统为Windows 8.1或者Windows server 2012 R2,那默认已经是4.0了。
 

选择PowerShell

微软提供了两种(如果你是个严谨的人,可以认为是四种)使用PowerShell的方式。如下图所示:
在32位操作系统中,只有2个PowerShell图标。在64位系统中,最多有4个。它们分别是:
Windows PowerShell —— 64位系统上的64位控制台和32位系统上的32位控制台。
Windows PowerShell(x86) —— 64位系统上的32位控制台。
Windows PowerShell ISE —— 64位系统上的64位图形化控制台和32位系统上的32位图形化控制台。
Windows PowerShell(x86) —— 64位系统上的32位图形化控制台。
 

打开PowerShell

方法一:在运行中打开
 
方法二:在搜索框中搜索
 
方法三:在win10系统中的文件资源管理器中选中任意一个文件点击左上角的"文件"菜单
 
方法四:在cmd命令提示符中输入powershell,回车进入
 

自定义PowerShell控制台

右击标题栏选择”属性”弹出powerShell控制台对话框。在这里有四个选项卡:选项、字体、布局和颜色。
1、“选项”设置光标,历史记录,编辑模式的切换。
 
2、“字体”设置字体的名称和大小
 
3、“布局”设置窗口的缓冲区、窗口的大小、窗口起始坐标
 
4、“颜色”设置屏幕和对话框的背景色和前景色。
 

PowerShell快捷键

PowerShell的快捷键和cmd,linux中的Shell,都比较像。
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(别名)
描述
Get-ChildItem
gci, dir, ls
列出当前或给定文件夹中的所有文件和文件夹
Test-Connection[a]
从当前计算机向指定计算机发送互联网控制消息协议回显请求,或指示另一台计算机这样做
Get-Content
gc, type, cat
获取文件内容
Get-Command
gcm
列出可用的命令
Get-Help
help, man
在控制台上打印命令的文档
Clear-Host
cls, clear
清除屏幕
Copy-Item
cpi, copy, cp
将文件和文件夹复制到另一个位置
Move-Item
mi, move, mv
将文件和文件夹移动到新位置
Remove-Item
ri, del, erase, rmdir, rd, rm
rm, rmdir
删除文件或文件夹
Rename-Item
rni, ren, mv
重命名单个文件,文件夹,硬链接或符号链接
Get-Location
gl, cd, pwd
显示工作路径(当前文件夹)
Pop-Location
popd
popd
将工作路径更改为最近推送到堆栈上的位置
Push-Location
pushd
pushd
将工作路径存储到堆栈中
Set-Location
sl, cd, chdir
cd
改变工作路径
Tee-Object
tee
不适用
将输入管道传输到文件或变量,并沿管道传递输入
Write-Output
echo, write
echo
将字符串或其他对像打印到标准流
Get-Process
gps, ps
列出所有正在运行的进程
Stop-Process
spps, kill
kill[e]
停止正在运行的进程
Select-String
sls
打印与模式匹配的行
Set-Variable
sv, set
env, export, set, setenv
创建或更改环境变量的内容
Invoke-WebRequest
iwr, curl, wget[f]
wget, curl
获取因特网上的网页内容
 

集成脚本环境(ISE)

下图展示了PowerShell集成脚本环境,即图形化界面的PowerShell,也称ISE
提示:如果你不经意打开了普通控制台PowerShell,可以输入”ise“并按回车键,从而打开PowerShell ISE
 
ISE的优缺点:
优点
缺点
ISE界面友好,且支持双字节字符集
ISE要求Windows Presentation Foundation(WPF),意味着不能在没有GUI的服务器上运行ISE
在后续章节可以看到ISE能在你创建Powershell命令和脚本时提供更多帮助
启动和运行需要较长时间,但通常这只是几秒的差异
ISE使用常规的复制、粘贴按键
ISE不支持转录
 

重新认识代码输入

PowerShell是个命令行接口,意味着你需要大量输入代码。然而输入命令就意味着可能出现错误,例如拼写错误。幸运的是,所有PowerShell应用程序都提供了最小化错别字的方式。
控制台应用程序支持四种“Tab键补全”
  1. 输入"Get-S"然后按几下"Tab"键,再按Shift+Tab组合键。Powershell会循环地显示以Get-S开头的所有命令。然后不停按Shift+Tab键,直到出现你期望的命令为止。
  2. 输入"Dir",按空格键,然后输入C:\,再按"Tab"键,PowerShell会从当前文件夹开始循环遍历所有可用的文件和文件夹名。
  3. 输入"Set-Execu",按"Tab"键,再输入一个空格和横杠(-),再开始按"Tab"键,可以看到PowerShell循环显示当前命令的所有可用参数名。按"Esc"键可以清空命令行。
  4. 再次输入"Set-Execu",按"Tab",再按空格键,然后输入-E,再次按"Tab"键,然后按一次空格键,再按"Tab"键。PowerShell会循环显示关于这些参数的合法值。这个功能仅对那些已经预设了可用值(称为枚举)的参数有效。按"Esc"键同样可以清空命令行。
PowerShell ISE 提供了类似功能,甚至可以说比"Tab补全"功能更好的功能——智能提示。这个功能在前面四个情况都能运作。下图演示了如何通过弹出菜单来实现你在使用"Tab"键时完成的功能。可以使用上下箭头按钮来滚动菜单,找到你想要的选项,然后按"Tab"或者"Enter"键来选择,再继续输入剩余代码。
智能提示可以在工作在ISE的控制台窗格和脚本编辑器窗格中。
 

查看当前PowerShell的版本信息

在PowerShell命令行中输入$PSVersionTable,按回车键。可以看到每个PowerShell相关技术的版本号,包括PowerShell自身的版本号。如果命令不能运行,则最少需要PowerShell3.0版本。
注:在之后的实验中的PowerShell版本都是在3.0以上版本操作,如果不是,请升级到最少3.0版本。
 
posted @ 2021-06-24 20:19  Ulysses~  阅读(514)  评论(0编辑  收藏  举报