总第107篇
PowerShell
是Windows
平台下的脚本语言,它定义好了一堆命令用来与与操作系统、特别是与文件系统交互,能够启动并操控应用程序。PowerShell还可以通过管道
将几个命令组合起来放到文件里执行,实现文件级的重用。另外,PowerShell也能够充分利用.NET类型和COM对象与各种系统交互,完成各种复杂的、自动化的操作。Powershell
不区分大小写,其脚本后缀为.ps1
, 可以在磁盘上执行,也可直接在内存中运行。
1.Powershell
与CMD
的异同
Powershell
不能直接执行任何CMD
命令,这是因为Powershell
不是CMD
的加强版或新版本,只是有些命令从长相到功能与CMD
相似而已。 Powershell
可以作为一个应用程序在CMD
中运行, 相反CMD
也可以在Powershell
中作为应用程序运行。
Powershell
通过alias
这个特性,可以让使用者以CMD
风格来使用Powershell
的命令,可以用命令get-alias
命令来查看命令的别名对照,如下所示:
![39a74bc819d4aba473079d80169cac72.jpeg](https://i-blog.csdnimg.cn/blog_migrate/d80c0b779cc0601a9833ec8cc0b0a100.jpeg)
2.启动Powershell
及运行已有的脚本
可以直接在电脑上找到Powershell
程序,运行即可启动,也可以在CMD
窗口中输入Powershell
命令,以程序的方式启动。
1)若将一个脚本直接放在系统路径C:\Windows\System32
下,即可直接在控制台输入脚本文件的名字运行它,如下图所示:
![7e61c7956a7be5103d6d94f8112fa8d9.jpeg](https://i-blog.csdnimg.cn/blog_migrate/ece94c57c9fb84c48238c0c64f3be04e.jpeg)
2)运行当前目录下的命令,需要的文件名前加.\
;
3)当运行的文件名或目录名有空格时,要使用调用操作
,即要在最前面加&
,并用''
将带空格的路径包起来;
3.Powershell
基本命令
除了支持传统的Windows
可执行文件,Powershell
还推出一个功能强大的新的命令cmdlet
,其所有命令规则都遵循动词-名词
的语法结构,如Get-Command
、Get-Content
等。 如下展示Get-Command
的使用:
![5b9c4e73d153d20db93ea966139025ad.jpeg](https://i-blog.csdnimg.cn/blog_migrate/c08b0bf9044f99d9d2977e237bd23aa5.jpeg)
可以用Get-Help
命令获取某个命令的帮助信息,其使用方式为Get-Help 命令
。
由于Powershell
可以使用.NET Framework
的中的对象,要查看一个对象的属性和方法,可以使用Get-Member
命令,如下图所示
![1268d173fb7644f82f62b77b96aff034.jpeg](https://i-blog.csdnimg.cn/blog_migrate/9897f0cb6bcc3c0f0a950b491863dd1b.jpeg)
4.从外部调用Powershell
脚本
有时候可能需要从批处理文件、定时任务或者其它非Powershell
程序中调用Powershell
脚本,这时使用的语法为:
Powershell "& '[脚本路径] [参数]' "
这里要注意,若脚本是当前目录,要加上.\
。
5.Powershell
获取最后执行命令的状态
Powershell
提供了两个变量可以检测最后执行命令是否成功:$lastExitCode
和$?
。
1)$lastExitCode
:数字型变量,返回脚本最后或应用程序执行返回的退出码或出错级别;
2)$?
:布尔型变量,返回最后执行命令是成功还是失败。一般在应用程序发生错误时,比如应用程序退出码非零 、脚本输出错误信息、脚本捕获到终止错误或异常时,变量$?
的值为False
;当命令执行没有错误时,变量$?
的的值为True
。
6.Powershell
计算命令执行时间
可以用命令Measure-Command
来计算执行时间,如下示例:
![f2319d2b247b33e39924177dfdd4d5e9.jpeg](https://i-blog.csdnimg.cn/blog_migrate/1bd9dc1b166ab327ea04f224561bfc68.jpeg)
7.Powershell
管理控制台历史命令
在Powershell
窗口中,按上下方向键可以寻找历史命令进行调用,也可以运行Get-History
命令查找,并用Invoke-History ID
的方式进行调用,如下示例:
![12d45594f153156411d6d6aaf0b61e1d.jpeg](https://i-blog.csdnimg.cn/blog_migrate/c20d3de5f2dff16785105f6319bdcb9a.jpeg)
8.重定向输入内容
若想将脚本得到的结果输出到文件中,可以使用Out-File
命令或重定向操作符
将输出结果保存到文件中。示例如下:
![33c0fb277f55f8b962c75772c94994fe.jpeg](https://i-blog.csdnimg.cn/blog_migrate/453a5d478c4af5ce06dcb296951ab881.jpeg)
9.将Powershell
会话记录保存到文件
若想将当前生成的会话记录到文件中,可以运行Start-Transcript
命令,它是基于当前系统时间的,若想停止,可以运行命令Stop-Transcript
命令。示例如下:
![cdd51ac468b38f1528799427290197ff.jpeg](https://i-blog.csdnimg.cn/blog_migrate/4a973fb0bd8d360733db85d79a119033.jpeg)
10.显示对象属性为列表或表格形式
可以使用Format-List
和Format-Table
命令实现,示例如下:
![0a7d1a08d2cabba95eddf650d4bd4100.jpeg](https://i-blog.csdnimg.cn/blog_migrate/d6d0a34e4cf8b2f406995c1ee09940cc.jpeg)
11.连接虚拟机中的系统
可以用ssh
的方式连接虚拟机中的系统。