更好的批处理脚本语言 PowerShell

微软在 2006 年推出首款 PowersShell 1.0 版本,适用于 Windows Server 2008 操作系统,并作为 PowersShell 2.0 被正式预装在之后的 Windows 7 操作系统中。在 Windows 8 中,内置的 PowerShell 更进一步,升级为 PowerShell 3.0,Windows 8.1 则对应着 PowerShell 4.0 版本。在我写下本段文字,PowerShell 已经迎来了它的另一个新版本 PowerShell 6.0。这些变化背后,离不开它强大的开源支持。你可以在 Github 找到它的开源代码。

PowerShell 跨平台,这意味着你可以将编写好的代码用来管理 Windows、Macintosh,甚至是 Linux 操作系统。这一点是 Windows 下的原始批处理文件(batch file)所不能比拟的。

cmdlet

cmdlet(中译名 “短命令”)是 PowerShell 命令体系的基础。

动词-名词

这是 cmdlet 的基本语法结构。cmdlet 是一个内置到 shell 中的简单的单一功能命令行工具。可以就像使用传统的命令和实用工具那样使用 cmdlet。首先在 Windows PowerShell 命令提示符下键入 cmdlet 的名称。Windows PowerShell 命令不区分大小写,因此可以用任意大小写键入。

在这里插入图片描述

0x00:兼容 Linux 命令

PowerShell 将一些命令做了别名处理,以取悦那些 Linux 专家的习惯。常见的如 ls 命令,你也可以用 dirgci 命令进行调用。

在这里插入图片描述

当然,你还可以使用 tree 命令将结果以文件树的形式输出。

在这里插入图片描述

0x01:查看帮助文档

类似 Linux 的 man 命令,PowerShell 有一个名为 get-help 的命令。

在这里插入图片描述

0x02:列出所有进程或服务

使用 get-process 段命令列出本地机器上的所有进程。它是 ps 命令的别名。

在这里插入图片描述

使用 get-service 短命令列出本地机器上的所有服务,包括停止和正在运行的。

在这里插入图片描述

0x03:输出结果筛选

类似 Linux 的 grep 命令,PowerShell 有一个 select-string 命令。

在这里插入图片描述

0x04:清屏

使用 clear-host 短命令、cls 命令,或 clear 命令进行终端清屏。

在这里插入图片描述

0x05:新建项目

这是 PowerShell 的一个特色命令。它不仅可以在制定路径创建文件、文件夹,还可以创建制定类型的文件系统;在注册表中,New-Item 创建注册表项和条目。

在这里插入图片描述

编写并运行 PowerShell 脚本

PowerShell 脚本的钦定的文件后缀名为 .ps1,s 后面跟的是数字 1。

在这里插入图片描述

保存为后缀为 .ps1 的脚本文件即可。只要你的操作主机安装了 PowerShell,就可以执行运行。如果直接 .\文件名 会报错。因为 PowerShell 默认禁止在终端运行脚本程序。对此我们有一条命令用来绕过执行该脚本。

powershell.exe -ExecutionPolicy Bypass -File 文件名.ps1

在这里插入图片描述

在 CMD 下执行亦可。注意命令前缀 powershell.exe 必不可少。

在这里插入图片描述

如果嫌麻烦,可以永久的改变本机的 PowerShell 执行策略。

Set-ExecutionPolicy Bypass

和上面的单独绕过不同,该操作必须具有管理员权限,否则会报错。

在这里插入图片描述

和注册表愉快的玩耍

PowerShell 的另一个吸引人的特性是,它允许你直接在终端里,像访问普通的文件系统那样访问 Windows 注册表。记住,我们直接访问的是键,它相当于普通文件系统的目录,而它其下包含的值和普通意义上的文件有一些区别,所谓的值显示在属性栏,与其他属性一同组成一个完整的值。

我们知道,文件系统的文件对象具有三大属性:所谓读、写、执行权限。只要是和键的读取有关的,在 PowerShell 的注册表交互中都可以像普通文件一样的交互。读的属性,比如:列出某键下的所有子键,这时候你就应该想到 ls 命令。当然更规范的写法应该是 get-childitem 短命令。

短命令 作用 别名
Get-ChildItem 列出某键的所有子键 ls, dir
Get-ItemProperty 列出某键的所有属性 -
Set-Location 更改当前操作的键 cd
Set-ItemProperty 更改某键的某值 -
New-ItemProperty 给某键新建一个值 -
Clear-ItemProperty 删除某键的值的内容 -
Remove-ItemProperty 删除某键的值 -
New-Item 创建一个新键 md
Remove-Item 删除一个键 del
Test-Path 验证某键是否存在 -

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/abc_12366/article/details/82942627