Windows PowerShell 命令备忘单

如果您是 Windows 高级用户,您可能知道并理解如何在您的 PC 上执行各种操作,而不仅仅是一种方法,并且专用的 GUI 应用程序通常比在手动命令行。 当你看到那面文字墙在你面前展开时,就会有那种满足感,如果结果不是错误,那就更值得了。

在 Windows PC 上,只有两种方法可以实现此目的:通过 CMD 或 PowerShell。 尽管 CMD 比 PowerShell 更受欢迎,但它的功能也较弱,因为它的对应项允许您执行更多操作,包括可以通过 CMD 运行的操作。 您可以说 PowerShell 将旧 CMD 的强大功能与脚本和 cmdlet 功能相结合,为您可以使用它执行的操作提供大量可能性。

但是,即使对于经验丰富的用户来说,使用 PowerShell 可以执行的大量操作也可能令人生畏,更不用说以前从未听说过 CMD(更不用说 PowerShell)的用户了。 不过不用担心,我们会尝试教您一些简单的技巧,您可以使用 PowerShell 完成,甚至可以长期记住。 尽管我们的这个“速成课程”不能作为 PowerShell 的综合手册,但它希望通过给您一些提示和解释一堆命令来帮助您找到使用 PowerShell 的方法。 如果你准备好了,让我们开始吧。

什么是 PowerShell?

正如我们上面简要提到的,PowerShell 是一个功能强大的工具,您可以将其用于大量操作。 更重要的是,PowerShell 是一个任务自动化解决方案,它包含了几个强大的工具,包括但不限于命令行 shell(如 CMD)、脚本语言以及配置管理框架。

与只能接受和返回文本的其他 shell 不同,PowerShell 还可以接受和返回 .NET 对象,这要归功于它包含的大量功能。 PowerShell 的一些最重要的与 shell 相关的功能如下:

命令预测和制表符补全
参数和命令别名支持
全面的命令行历史
通过管道链接命令的能力
一个控制台内的帮助系统,类似于基于 Unix 的系统中的手册页

然而,这只是冰山一角,因为正如我们之前提到的,PowerShell 不仅仅是一个外壳;它还不仅仅是一个外壳。 您可以将它用作一种强大的脚本语言来自动化系统管理操作,也可以在您想在各种环境中构建、分析、测试和部署解决方案时使用。

鉴于 PowerShell 基于 .NET CLR(.NET 公共语言运行时),很容易看出为什么 PowerShell 使用的所有输入和输出都是 .NET 对象。 此外,完全不需要解析文本输出,因此 PowerShell 可以从中提取信息。 在 PowerShell 的脚本功能中,您 12月 找到以下内容:

一个全面的格式化系统,确保干净、简单的输出
通过广泛的类型系统创建动态类型
您可以通过类、函数、模块和脚本来扩展 PowerShell 的功能
对各种数据格式的原生支持,包括 XML、JSON 和 CSV

如果您对通过代码管理和配置企业基础架构更感兴趣,您会很高兴得知 PowerShell 还通过其所需状态配置 (DSC) 管理框架为您提供了这种可能性。 在您可以通过使用 PowerShell 的 DSC 轻松执行的操作中,我们提醒您:

使用推送或拉取模型部署各种配置方案
设计可用于环境中可重复部署的自定义脚本和声明性配置
执行各种配置方案
配置偏差报告

PowerShell 有一个专有的命令行,它带有一种类似于 Perl 的专有编程语言。 请注意,一开始,PowerShell 是为了帮助用户管理计算机上的对象而开发的,但是,正如您所想象的,它已经走过了漫长的道路,现在被用于更广泛、更复杂的工作。

例如,您可以利用 PowerShell 广泛的工作环境,不仅可以执行各种系统管理操作,还可以将它们自动化,这样您就不必时不时地从事乏味、重复的任务。 同样重要的是,您可以通过一个程序(即 PowerShell)访问大量资源,包括但不限于:

Windows 管理规范
.NET 框架 API
命令提示符
Windows 组件对象模型
PowerShell 命令

如今,PowerShell 最流行的用途之一是帮助最终用户自动执行系统管理任务,从而帮助他们避免从事一系列无聊、重复的操作。 从重复动作中消除人为因素已被证明可以提高效率并减少由于各种原因导致的人为错误,因此对每个人来说都是双赢的。

您可以使用 PowerShell 发出简单或更复杂的命令,但该程序还可以帮助您基于这些命令创建脚本,这些脚本将由 PowerShell 自动运行。 此外,您可以自定义和随后发出大量命令,称为 cmdlet。

值得一提的是,PowerShell 是跨平台和开源的,这意味着您也可以在 Mac 或 Linux 等其他系统上本地使用它,而无需借助 Wine 或 Boot Camp 等技巧和兼容性增强工具。

基本 PowerShell 命令列表

我们了解 PowerShell 12月 感觉有点吓人,尤其是现在您发现它不仅仅是计算机上的另一个命令提示符,它实际上包含 CMD 功能,而且还包含一种特定的编程语言和各种可用于自动化系统管理操作的脚本。

但是,如果您决心掌握 PowerShell 及其提供的所有功能,我们强烈建议您从其最基本的功能开始。 这样,当您发现自己不小心使用了错误的功能并且您在此期间执行的所有工作开始看起来更像是遥远的记忆时,您就不必回滚数月的进步。

这正是为什么我们准备了一个基本命令列表的原因,您可以在 PowerShell 会话中安全地使用这些命令来测试这个强大程序的功能,并看看哪个程序能做什么。 下面的列表包括命令名称、它们的别名以及每个命令的作用的简要说明。

请注意,您可以使用命令名称或它们的别名,结果将完全相同。 人们更喜欢使用别名的原因是它们键入起来要快得多,如果你能正确记住它们并将它们与相应的命令名称相关联,那么如果你想快速完成工作就更有意义了。

命令名称
别名
描述
添加内容
交流
允许您将内容(例如单词或数据)附加到文件
添加-PSSnapIn
asnp
帮助您将多个 Windows PowerShell 管理单元添加到
当前会话
内容清晰
clc
清除项目的内容而不删除实际项目
清除历史记录
氯气
清除命令历史记录中的所有条目
清除主机
清除
清除主机程序的显示
清除主机
分类
和 clear 做同样的事情
清除项目
cli
删除项目的内容而不删除实际项目
Clear-ItemProperty
clp
擦除属性的值而不实际删除属性本身
清除变量
clv
删除变量的值
比较对象
比较
让您比较两组对象
比较对象
差异
与比较做同样的事情
连接-PSSession
央视网
让您重新连接到已断开的会话
转换路径
cvpa
允许您将 Windows PowerShell 路径转换为 ​​Windows
PowerShell 提供程序路径
复制项目
复制
帮助您将项目从特定位置复制到另一个位置
复制项目
cp
与复制做同样的事情
复制项目
CPI
与copy和cp做同样的事情
Copy-ItemProperty
cpp
允许您将值和属性从给定位置复制到
不一样的
禁用-PSBreakpoint
分贝
帮助您禁用当前控制台中的断点
断开连接-PSSession
dnsn
断开您与当前会话的连接
启用-PSBreakpoint
ebp
允许您在当前控制台中启用断点
输入-PSSession
网信
帮助您启动与远程设备的交互式会话
退出-PSSession
外星人
终止与远程设备的交互会话
出口别名
伊帕尔
允许您导出有关当前定义的别名的信息
到输出文件
导出-CSV
epcsv
允许您将对象转换为多个逗号分隔 (CSV)
字符串并将字符串导出到 CSV 文档
导出-PSSession
每股收益
从不同的会话导入命令并将它们导出到
Windows PowerShell 模块
ForEach-对象
%
对包含的每个项目执行特定操作
在输入对象的集合中
ForEach-对象
前锋
与 % 做同样的事情
格式-自定义
fc
帮助您使用自定义视图来格式化输出
格式列表
佛罗里达州
允许您将输出格式化为属性列表,其中每个属性
放置在新行上
格式表
英尺
允许您将输出格式化为表格
格式范围
固件
帮助您将对象格式化为宽表,其中只有一个属性
显示每个对象
获取别名
加仑
获取当前会话的别名
获取子项
目录
获取文件系统驱动器中所有文件和文件夹的列表
获取子项
gci
和 dir 做同样的事情
获取子项
ls
与 dir 和 gci 做同样的事情
获取命令
厘米
获取您可以使用的所有命令的列表
获取内容

显示文件的内容
获取内容
GC
做和猫一样的事
获取历史

获取您在当前会话期间输入的所有命令的列表
获取历史
H
和ghy做同样的事情
获取历史
历史
与ghy和h做同样的事情
获取项目

让您获取文件和文件夹
获取项目属性
GP
获取您指定的项目的属性
找工作
gjb
检索所有 Windows PowerShell 后台作业的列表
当前在您的会话中运行
获取位置

获取有关您当前位置堆栈或工作位置的信息
获取位置
密码
和 gl 做同样的事情
获取会员
通用汽车
获取指定对象的所有属性和方法
获取模块
转基因
检索导入的模块或可以导入的模块列表
当前会话
获取进程
全球定位系统
获取在本地或远程运行的所有进程的列表
计算机
获取进程
ps
和gps做同样的事情
获取 PSBreakpoint
英镑
检索当前会话中设置的所有断点
获取 PSCallStack
气相色谱仪
显示您当前的调用堆栈
获取-PSDrive
gdr
获取当前会话中的驱动器
获取 PSSession
gsn
检索本地和远程 Windows PowerShell 会话的列表
获取 PSSnapIn
gsnp
获取计算机上所有 Windows PowerShell 管理单元的列表
获取服务
gsv
列出本地或远程计算机上的所有服务
获得唯一

从排序列表中检索唯一项目
获取变量
gv
显示当前控制台中所有变量的列表
获取 WmiObject
gwmi
获取 Windows Management Instrumentation (WMI) 类
有关可用类的实例或信息
组对象
团体
允许您对包含相同属性值的对象进行分组
您指定的
帮助
男子
显示有关 Windows PowerShell 命令和
概念
导入别名
伊帕尔
允许您从文件中导入别名列表
导入-CSV
ipcsv
使用其中包含的所有项目构建类似表格的自定义对象
CSV 文件
导入模块
ipmo
将模块导入当前会话
导入-PSSession
ipsn
将来自不同会话的命令导入当前会话
调用命令
icm
允许您在本地和远程计算机上执行命令
调用表达式

允许您在本地计算机上执行命令或表达式
调用历史
ihy
执行会话历史中的命令
调用历史
r
和 ihy 做同样的事情
调用项
ii
对指定项目执行默认操作
调用-RestMethod
公司
向 RESTful Web 服务发送 HTTP 或 HTTPS 请求
调用-WebRequest
卷曲
从 Internet 上的网页中检索内容
调用-WebRequest
iwr
和 curl 做同样的事情
调用-WMIMethod
伊维米
允许您调用 Windows Management Instrumentation (WMI)
方法
测量对象
措施
确定对象的数字属性,以及单词,
字符串对象中的行和字符
mkdir
MD
创建一个新项目(目录)
移动项目

允许您将项目从特定位置移动到另一个位置
移动项目
移动
和 mi 做同样的事情
移动项目
MV
与 mi 和 move 做同样的事情
移动项属性
mp
允许您将属性从特定位置移动到不同位置
新别名
最终
允许您创建新别名
新物品

让您创建一个新项目
新模块
纳米
生成仅存在于内存中的新动态模块
新PSDrive

允许您创建临时和持久的映射网络驱动器
新PSDrive
ndr
和 mount 做同样的事情
新PSSession
神经网络
建立与本地或远程计算机的持久连接
新 PSSessionConfigurationFile
npssc
创建会话配置文件
新变量
nv
允许您创建一个新变量
Out-GridView
OGV
允许您将输出发送到单独窗口中的交互式表格
主机外

将输出发送到命令行 (CMD)
输出打印机
LP
允许您将输出发送到打印机
流行位置
流行音乐
将您当前的位置修改为被推送到的位置
最近堆叠。 您可以使用 Push-Locationcmdlet (pushd) 来
从默认堆栈或您创建的堆栈中弹出该位置。
powershell_ise.exe
伊势
显示有关如何使用 PowerShell_ISE.exe 的说明
命令行工具
推送位置

将当前位置附加到位置堆栈的顶部
接收工作
rcjb
获取当前会话的结果 Windows PowerShell 背景
工作
接收-PSSession
rcsn
从断开的会话中检索命令的结果
除去项目
德尔
删除文件和文件夹
除去项目
擦除
和 del 做同样的事情
除去项目
rd
与 del 和 erase 做同样的事情
除去项目

与 del、erase 和 rd 做同样的事情
除去项目
R M
与 del、erase、rd 和 ri 执行相同的操作
除去项目
rmdir
删除文件夹
删除-ItemProperty
rp
允许您从给定项目中删除属性及其值
删除作业
rjb
允许您删除 Windows PowerShell 后台作业
移除模块
rmo
帮助您从当前会话中删除模块
删除-PSBreakpoint
rbp
允许您从当前控制台中删除断点
删除-PSDrive
rdr
删除临时 Windows PowerShell 驱动器以及断开连接
映射网络驱动器
删除-PSSession
rsn
允许您关闭一个或多个 Windows PowerShell 会话 (PSSessions)
删除-PSSnapin
回复
使您能够从当前的 Windows PowerShell 管理单元中删除
会议
移除变量
房车
清除变量及其值
删除-WMIObject
rwmi
允许您删除现有 Windows 管理的实例
仪表 (WMI) 类
重命名项目

帮助您重命名 Windows PowerShell 提供程序命名空间中的项目
重命名项目
rni
做和任一样的事
重命名-ItemProperty
核糖核酸
使您能够重命名项目的属性
解析路径
RVPA
解析路径中的通配符,并显示内容
路径的
简历-工作
鲁杰布
帮助您重新启动暂停的作业
选择对象
选择
允许您选择对象及其属性
设置别名
萨尔
允许您创建或更改 cmdlet 或命令元素的别名
(备用名称)在当前 Windows PowerShell 会话中
设置内容
sc
允许您将文件的内容替换为您指定的内容。
套装物品
西
将项目的值更改为命令中指定的值
设置位置
光盘
让您将当前工作位置设置为指定位置(更改
活动位置)
设置位置
目录
和 cd 做同样的事情
设置 PSBreakpoint
sbp
允许您在命令、变量或行上设置断点
集变量

使您能够设置变量的值或生成一个变量(如果有)
请求的名称不存在
显示命令
shcm
以图形方式显示 Windows PowerShell 命令列表
命令窗口
开始工作
sajb
在 Windows PowerShell 中启动后台作业
启动过程
树液
启动一个或多个本地进程
启动服务
萨斯夫
让您启动一项或多项已停止的服务
停止进程

帮助您停止一个或多个正在运行的进程
Where-对象
?
使您能够根据其从集合中选择某些对象
属性值
写输出
回声
允许您将对象发送到管道中的下一个命令。 如果它
到达管道中的最后一个命令,该命令将显示
控制台中的对象

  如何修复 Windows 10 上的“正在安装另一个程序”安装程序错误

不要让大量的基本 PowerShell 命令吓倒您。 尽管我们称它们为基础,但您绝对没有必要开始记住它们。 事实上,这就是我们创建上表的确切原因,这样您就可以继续您的工作,而不必担心必须记住我们上面提到的每一个命令。

您可以将其用作快速复习,甚至使用浏览器的搜索功能来查找特定命令、其别名以及在您感到困惑时它会做什么。 尽管我们已经在上表中包含了这条信息,但如果您在使用 PowerShell 时感到困惑,使用帮助命令将显示一些有用的详细信息,说明如何更有效地使用该程序及其命令。

如果您想了解有关该特定命令的更多详细信息,还可以将帮助命令与另一个命令或别名配对。 例如,这是 PowerShell 在您键入 help Add-Computer 时显示的内容:

但是,您可以对上表中的任何其他命令或其别名使用帮助。 确保您了解同一命令可以有多个别名,这意味着您可以通过使用各种别名来实现相同的结果。 虽然这 12月 听起来令人困惑,它实际上为您提供了很大的灵活性,以防您不记得一个命令别名,但您记得另一个可以帮助您实现相同目标的命令别名。

使用 PowerShell

自然,您要做的第一件事就是找到 PowerShell 并启动它。 从 PC 上的任何位置启动 PowerShell 的一种可靠方法是按住键盘上的 Shift 按钮,右键单击屏幕上的任何空白点(不是菜单、图标、按钮或类似对象),然后从上下文菜单中选择在此处打开 PowerShell 窗口。

除了让您在 PC 上的任何位置快速访问 PowerShell 控制台外,这样做还会自动将 PowerShell 的默认工作目录切换到您当前所在的目录。 如果您使用的是 Windows 10 PC,还可以通过按键盘上的 Win 键、在“开始”菜单中键入 PowerShell 并在结果列表中显示 PowerShell 时选择 PowerShell 来启动 PowerShell。

在旧版本的 Windows 上,您需要手动找到 PowerShell 可执行文件,您可以在“开始”菜单的“附件”或“系统”文件夹中找到该可执行文件。 此外,查看旧系统(例如 Windows 7)如何默认不为您提供 PowerShell,您还必须在您的计算机上安装它以及它的所有依赖项。

请注意,从“开始”菜单启动 PowerShell 将如何将您的活动工作目录设置为 C:Users[your username here]. 相比之下,使用我们上面介绍的 Shift + 右键单击​​方法会将 PowerShell 的活动目录设置为您在生成控制台时当前所在的目录。 例如,如果您使用 Shift + 右键单击​​并从桌面打开 PowerShell,您会注意到活动目录将是 C:Users[your username here]桌面。 由于显而易见的原因, [your username here] 部分将根据您的用户名而有所不同。

尽管您可以将 PowerShell 保留在家庭中使用,但如果您能充分利用它所提供的一切,那就更好了。 顺便说一句,这些功能使 PowerShell 非常适合企业使用,您需要在短时间内执行大量操作,并且很可能在大量设备上执行。

  Windows 10 无法启动 – 为什么我的电脑无法启动? (固定的)

因此,您无需在每台机器上手动运行每个命令,只需在 PowerShell 中创建一个自动化脚本并自动接收您需要的信息,而无需与设备进行物理交互以防万一甚至靠近它们。 与 CMD 一样,PowerShell 也可以通过命令行使用。 然而,与其更基本的对应物(即 CMD)不同,PowerShell 还允许您调用脚本和 cmdlet,这使得它更强大,但使用起来也更复杂。

如何使用 cmdlet

我们在指南中多次使用术语 cmdlet,因此您可能想知道它们的含义。 好吧,从头开始,有必要提醒您 CMD 与命令一起使用。 cmdlet,发音为 command-let,也是一个命令,但与传统的 CMD 命令不同,cmdlet 特定于 PowerShell,允许您执行单个特定操作,例如复制文件、将项目从一个地方移动到另一个地方、更改活动目录,或查看项目的内容。

简单地说,cmdlet 是可以直接在 PowerShell 命令行中键入的单功能命令。 如果您之前有任何使用 CMD 的经验,您会发现 PowerShell 使用起来有些直观。 PowerShell 的一件有趣的事情是它与 CMD 共享大量命令。 因此,使用带有 PowerShell 的 CD 仍会更改您的活动目录,DIR 仍将显示当前文件夹的内容,CP 仍将允许您将项目从一个地方复制到另一个地方。

值得一提的是,PowerShell 不区分大小写,这与许多其他 shell 不同,如果您在其中键入命令时没有使用正确的大小写,则会返回错误。 因此,copy-item 和 Copy-Item 一样有效,如果您不记得其中任何一个,您也可以使用 Copy、CP 和 CPI(也可以使用 copy、COPY、cp 或 cpi)。

大多数 PowerShell cmdlet 都是用 C# 编写的,专门用于执行将返回 .NET 对象作为其结果的操作。 目前,您可以在 PowerShell 中找到数百个可使用的 cmdlet,公平地说,就执行操作而言,它们不仅为您提供了一点肘部空间。

虽然很难记住你所有的 cmdlet 12月 必须使用(记住你可以使用上面的表格),有一些你会更频繁地使用,这将使它们非常容易记住。 更不用说它们中的一些足够直观以至于它们的名字实际上泄露了它们的用途(例如,copy 用于复制项目,move 可用于移动文件,compare 可帮助您比较对象集等)。

但是,如果您不打算将本文加入书签以供以后使用,也可以在 PowerShell 或 gcm 中键入 Get-Command cmdlet,如果您想保持简短。 这样做将显示您可用的命令的完整列表,您可以使用该列表提前计划您正在尝试执行的任何操作。

解锁自定义 cmdlet

不利的一面是,Microsoft 不仅让您可以完全访问默认情况下可以在 PowerShell 中使用的整个 cmdlet 数组,因此您必须跳过一堆额外的障碍才能解锁此功能并在您的应用程序中使用它闲暇。 好消息是解锁过程不会花很长时间,而且它也可以通过 PowerShell 完成,这将是您很好的练习。 事不宜迟,让我们看看如何在 PowerShell 中解锁自定义 cmdlet 权限。

登录到管理员帐户(没有管理员权限将无法使用)
以管理员权限启动 PowerShell(以管理员身份运行)
在 PowerShell 中键入以下命令并按 Enter:

如果操作正确,PowerShell 将通过一个对话框提示您,询问您新的 ExecutionPolicy 值
在 PowerShell 命令提示符中键入 RemoteSigned,然后按 Enter
PowerShell 将提醒您修改 ExecutionPolicy 值的风险
键入 Y 并按 Enter 键
如果您需要关闭自定义 cmdlet,只需执行步骤 1-4,当 PowerShell 要求您输入值时,输入 Restricted 并确认您的选择,就像您在步骤 7 中所做的那样

如果您想简化整个过程而不是浪费时间在 PowerShell 的命令提示符下键入所有内容,您会很高兴得知有一种更简单的方法可以实现相同的结果。 像在第一步中那样以管理员权限启动 PowerShell,而不是键入每个命令并等待提示符,您将通过输入以下命令将所有内容传输到确认之前:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

当然,您仍然需要通过在键盘上键入 Y 并按 Enter 来确认您的选择,但您只是跳过了一个步骤并同时执行了一系列操作。 这正是高级 PowerShell 用户创建自动化脚本以自动执行各种管理操作的原因:节省时间和麻烦。 如果需要,您可以使用上述相同的命令来禁用系统上的自定义 cmdlet,但您必须将 RemoteSigned 替换为 Restricted 并在最后确认您的选择。

在 Windows PowerShell 上运行可能不安全的脚本时,您还可以使用 AllSigned 和 Unrestricted 授予自己更多权限。 AllSigned 选项将允许您运行由受信任的发布者创建的所有脚本,而 Unrestricted 选项将使 PowerShell 能够运行任何脚本,无论其出处和可信度如何。 自然,无限制选项也是最危险的,因此请尽可能避免使用它,如果可能的话,尤其是如果您是 PC 新手。

看? PowerShell 已经开始看起来比几分钟前更易于访问。

如何在 PowerShell 中创建和使用脚本

正如我们之前提到的,我们确信您还记得,您可以使用 PowerShell 来运行自动化脚本。 但是,您不能只对 PowerShell 大喊“嘿,为我创建这个脚本!” 并期望它神奇地工作,所以你必须投入一些肘部油脂并自己完成它。 然而这不方便 12月 现在听起来不错,相信我们,考虑到您不再需要做的所有工作,从长远来看,您会心存感激。

尽管我们大多数人都依赖于诸如 IDE 之类的专用软件来创建特定编程语言的脚本或程序,但事实上,您可以使用任何文本编辑器,只要它可以将文件保存到正确的扩展名。 即使不能,您也可以导航到您创建的文件并通过重命名手动修改其扩展名,但让我们回到我们的羊身上。

如果你有兴趣创建一个可以在 PowerShell 中运行的脚本,你会很高兴得知这个你可能已经听过很多的脚本,它只是一个文本文档,它的扩展使其与 PowerShell、PS1 兼容. 因此,很容易理解为什么实际上可以在几乎任何文本编辑器中处理创建这些脚本,只要您使用正确的 (PS1) 扩展名保存它。

写主机“请输入您的姓名:”

$Name = 读取主机

“你好 $Name! 访问 wdzwdz.com 获取更多很棒的教程和指南!”

现在对于实际的创建部分:

启动记事本(或任何其他文本编辑器)
复制上面的代码(您将要创建和运行的脚本)
将其粘贴到新的记事本文档中
使用 CTRL + S 保存文档
键入 script.ps1 作为文件名
将文件保存在可访问的地方
以管理员权限打开 PowerShell 实例(非常重要)
确保您已在系统上启用自定义脚本(检查上面的部分)
导航到您保存脚本的位置
键入脚本的完整路径以运行它
例如,如果您的脚本位于 C 驱动器上的 Scripts 文件夹中,您的命令将为 C:Scriptsscript.ps1
或者,您可以简单地导航到脚本的位置并使用以下命令运行它:.script.ps1

如果您无法运行脚本并且 PowerShell 返回错误,请确保您已启用 PowerShell 以在您的系统上运行自定义脚本,并且您以管理员身份运行 PowerShell。 不执行我们在说明中指定的任何或两项操作很可能会导致错误,并且您将无法运行您的脚本。

请记住,这只是一个类似于经典“Hello, world!”的基本脚本。 一。 它通过与您互动(即询问您的姓名)并让您与之互动(即输入您的姓名将用于为您打印消息)来对其进行旋转。 然而,PowerShell 能够运行更复杂的脚本,从从一组机器收集数据到复杂的数据管理、高级系统配置操作,甚至在眨眼之间创建 SQL 数据库的备份。

如何使用 PowerShell 备份 SQL 数据库?

我们很高兴你问。 正如我们在指南中无数次提到的那样,PowerShell 可以帮助您执行的操作几乎有无限的可能性。 最流行的方法之一是备份 SQL 数据库,而无需花费大量精力或拥有非凡的数据库管理功能。 您所要做的就是启动一个提升的 PowerShell 实例(具有管理员权限)并使用 Backup-SqlDatabase 命令。 然而,事情比这要复杂一些,但我们会在一些情况下解决这个问题。

备份 SQL 数据库并不像简单地将文件从 PC 复制到安全位置那样简单,并希望它们在您的任何时候都保持安全 12月 需要他们执行数据恢复操作,但从好的方面来说,使用 PowerShell 可以让它看起来像在公园里散步。 虽然有几种方法可以实现这一点,但使用我们上面提到的命令是备份 SQL 数据库最快、最简单的方法。

在 Backup-SqlDatabase 命令的功能中,可以找到完整的数据库备份、数据库文件备份以及事务日志备份,因此您可以在单个命令行工具中获得完整的软件包。 默认情况下,使用此命令将执行完整的数据库备份,因此您需要使用 BackupFile 参数指定是否希望它遵循特定的规则集。

请注意,某些版本的 PowerShell 默认情况下不包含此命令,因此您必须导入或安装它。 好消息是安装 SQL 模块并不完全是火箭科学,即使是新手也可以完成。 如果您无法在 PowerShell 会话中使用 Backup-SqlDatabase 命令,您必须执行以下操作:

以管理员权限启动 PowerShell
键入以下命令:

当要求确认您的操作时,键入 Y 并按键盘上的 Enter
通过键入 Y 和 Enter 再次确认不受信任的存储库
安装完成后,键入以下命令:

  没有安装音频输出设备? FIX Windows 10 找不到音频设备

尝试通过在 PowerShell 命令行中键入来运行 Backup-SqlDatabase 命令
如果有效,您应该会看到 PowerShell 要求您为某些参数提供值
如果它不起作用,请确保您已设置 PowerShell 的权限以允许它运行自定义脚本

1.完成SQL数据库备份

备份-SqlDatabase -ServerInstance “ComputerInstance” -Database “wdzwdz”

我们上面示例的命令将生成一个名为 wdzwdz 的数据库的完整数据库备份,并将其保存到“ComputerInstance”服务器实例的默认备份位置为“wdzwdz.bak”。

2. 执行基于位置的数据库备份

设置位置“SQLSERVER:SQLComputerInstance”
PS SQLSERVER:SQLComputerInstance> 备份-SqlDatabase-数据库“wdzwdz”

上面的第一个命令会将您的位置更改为将发生备份的服务器实例中的活动目录。 从本质上讲,这种技术的工作方式几乎与我们在上面举例说明的完整数据库备份一样,但在此示例中,您可以更改工作目录以定位发生备份的服务器实例。

此操作还将创建名为 wdzwdz 的数据库的完整备份,并将其作为“wdzwdz.bak”文件导出到您连接到的服务器实例的默认位置。

3. 执行事务日志备份

Backup-SqlDatabase -ServerInstance “ComputerInstance” -Database “wdzwdz” -BackupAction 日志

如果您只需要备份特定数据库的事务日志,PowerShell 还可以通过您可以直接在其命令行界面中输入的单个命令来帮助您完成此操作。 上面的命令将生成“wdzwdz”数据库事务日志的备份副本,并将其作为名为“wdzwdz.trn”的文件导出到“ComputerInstance”服务器实例的默认位置。

4.创建加密的SQL数据库备份

$EncryptionOption = New-SqlBackupEncryptionOption -Algorithm Aes256 -EncryptorType ServerCertificate -EncryptorName “BackupCert”
备份-SqlDatabase-ServerInstance“。” -数据库“wdzwdz” -BackupFile “wdzwdz.bak” -CompressionOption On -EncryptionOption $EncryptionOption

如果你担心你的数据库备份 12月 落入坏人之手,PowerShell 还可以帮助您创建已加密的备份文件。 当然,您必须指定一些参数,例如加密算法、加密类型(即证书)、服务器实例、数据库名称、备份文件以及是否要压缩输出。

上面的示例将创建某个“wdzwdz”数据库的备份,使用 AES-256 加密和服务器证书对其进行加密、压缩,并将生成的“wdzwdz.bak”文件保存在服务器实例的默认备份位置。 如果您计划迁移并且没有万无一失的方法来传输所有备份文件而不冒疏远其中任何一个的风险,那么这一点非常重要。

5. 对服务器实例中的所有数据库执行备份

Get-ChildItem “SQLSERVER:SQLComputerInstanceDatabases” | 备份-SqlDatabase

另一个工具 12月 派上用场的是 PowerShell 能够同时备份服务器实例上的所有数据库。 不管它们的数量是多少,您只需启动 PowerShell,键入上述命令的改编版本,然后等待备份过程结束。 请注意,由于这将备份服务器实例中的所有数据库,因此您 12月 必须等待一段时间,所以请耐心等待。

上面的命令将备份位于“ComputerInstance”服务器实例上的所有数据库,并将生成的文件导出到同一服务器实例上的默认备份位置。 备份文件的名称将根据每个对应的数据库自动生成,后跟BAK扩展名(即<数据库名称>.bak)。

尽管还有其他几种方法可以通过各种方式使用 PowerShell 执行 SQL 备份,但我们只介绍了一些我们认为更重要的方法。 请注意,我们在上面示例中使用的命令不太可能以其当前形式在您的环境中工作,因此您必须根据当前情况调整它们。

例如,您必须更改“ComputerInstance”参数以匹配您自己的服务器实例,并修改数据库名称以反映您自己数据库的名称。 请记住,如果您觉得您尝试运行的命令令人困惑或无法正常工作,您可以随时使用 PowerShell 中的帮助命令。

必须知道的 PowerShell 命令

1. 获得帮助

我们怎么强调都不过分,但 Get-Help 命令应该是您学习的第一个命令,因为它可以让您摆脱许多不确定是否使用正确命令的棘手情况,或者正是您尝试部署的命令可以实现的目标。

现在您已经在系统上安装了 sqlserver 模块,您现在可以尝试 Get-Help 命令,看看 Backup-SqlDatabase 是如何工作的。 只需在 PowerShell 的命令行中输入 Get-Help Backup-SqlDatabase 并刷一下您的 PowerShell SQL 数据库备份技巧。

请注意,如果您最近在系统上安装了 sqlserver 模块,帮助数据库 12月 仍然过时,而你 12月 需要对其运行更新,以便它可以赶上任何新脚本。 默认情况下,PowerShell 会检测到您尝试访问的内容在线可用,但您无法在本地访问它,甚至会主动为您更新数据库。 在这种情况下,您需要做的就是在出现提示时键入 Y,然后按键盘上的 Enter 键。

但是,如果 PowerShell 只是提示您一个错误,说明您感兴趣的命令没有可用的帮助手册,您可以通过键入 Update-Help 并按键盘上的 Enter 键来手动更新它。 更新过程结束后,您应该能够查看您感兴趣的命令的可用帮助文档。

2. 获取进程

如果您想了解更多关于您当前正在使用的系统的信息,Get-Process 是最重要的。 更具体地说,尽管您可能已经猜到了这个命令的作用,但 Get-Process 将为您提供当前在您正在处理的系统上运行的所有进程的列表。

默认情况下,Get-Process 将检索在您正在处理的当前系统上运行的每个进程的列表,因此您 12月 如果您想要更具体的信息并缩小结果列表,则需要在此命令中附加一些额外的参数。 在下面的屏幕截图中查看您在单独运行 Get-Process 命令时得到的结果,以及如果您更具体并格式化结果时的外观。

获取进程资源管理器 | 格式列表 *

可以自定义第二个命令以显示有关系统上任何活动进程的其他详细信息。 您可以用 svchost 或 Chrome 或您感兴趣的系统上的任何其他活动进程替换 explorer。正如我们上面提到的,单独使用 Get-Processes 可以帮助您解决这个问题(即查找所有正在运行的进程的列表)。

3. 停止进程

这个命令几乎是不言自明的,因为你 12月 已经发现它可以帮助您停止系统上当前正在运行的进程。 从 PowerShell 而不是使用 Windows 任务管理器执行此操作的最常见原因是,有时进程可能会冻结并使 GUI 应用程序几乎无法使用。

PowerShell 用户可以使用我们之前解释过的 Get-Process 命令轻松识别麻烦的进程,然后使用 Stop-Process 将其终止,从而疏通系统。 在您的 PowerShell 命令行界面中单独运行 Stop-Process(不带任何其他参数)将提示您输入您尝试终止的进程的 ID。

但是,您也可以通过将 -Name 参数附加到 cmdlet 来按进程名称(如果您知道的话)终止进程,如下例所示:

停止进程 – 命名为“explorer”

上面的命令将终止 Explorer 进程,这可能很有用,尤其是当它冻结或崩溃并拒绝正确加载时。 请注意,在指定您尝试终止的进程的名称时,您需要使用引号。 如果一个进程很顽固并且拒绝终止(通常更高权限的进程会这样做),您可以通过在命令中附加 -Force 参数来“说服”它。 比如说,你不能终止你的 Explorer 进程。 在这种情况下,您只需键入以下命令:

Stop-Process -Force -Name “explorer”

此外,值得一提的是,在 Stop-Process 命令中使用 -Force 参数不会要求确认,而不是在没有此选项的情况下运行命令。 如果您想了解有关此 cmdlet 的更多信息,请确保使用 Get-Help 命令。

4. 获取服务

该命令是必不可少的命令列表之一,这是有充分理由的:它可以为您提供当前安装在您正在使用的系统上的所有服务的列表,无论它们是否正在运行。 与许多其他 cmdlet 一样,您可以自定义 Get-Service 以向您提供更具体的信息,无论是关于某个服务,还是显示您计算机上所有正在运行(或停止)的服务的列表。

您可以继续在 PowerShell 命令行中键入 Get-Service。 这样做应该会为您提供计算机上所有可用服务的列表,以及它们的显示名称和状态。 如果将附加命令附加到原始 cmdlet,则可以更改输出,使其仅显示您感兴趣的结果。

例如,键入上面的命令应返回计算机上所有可用服务的列表,这些服务以字母“W”开头。 但是,您可以更进一步并自定义命令,以进一步缩小结果列表。

获取服务 | Where-Object {$_.Status -eq “正在运行”}

上面的命令将让您查看计算机上所有可用服务的列表,这些服务在您运行 cmdlet 时也在运行。 像我们在上一个示例中所做的那样附加“W*”将显示您计算机上所有以字母“W”开头的正在运行的服务的列表,该命令应如下所示:

获取服务“W*” | Where-Object {$_.Status -eq “正在运行”}

5. 获取事件日志

每个负责任的系统管理员都应该知道如何处理事件日志,因为这些文档可以为您提供有关系统上发生的事情、发生的时间,有时甚至是触发特定事件的原因的有用知识。

因此,我们可以放心地假设 PowerShell 的 Get-EventLog 命令不是您希望从工具带中丢失的东西,特别是如果您计划磨练您的系统管理技能。 如果您了解有关事件日志及其名称的所有信息,则可以继续并直接在 PowerShell 的命令行中键入 Get-EventLog。 请注意,PowerShell 将提示您输入要查看的日志的名称。

如果您键入一个空事件日志的名称(没有条目的日志),PowerShell 将提示您错误并返回到命令行界面。 因此,如果您只使用以下命令会更容易,该命令将为您提供系统上的事件日志列表,以及每个事件日志的其他详细信息,例如默认溢出操作和条目数。

事件日志最流行的用例之一是检查错误,特别是如果它们无声地发生,不久之后系统崩溃,或者导致 BSOD,我们都知道这是多么神秘。 但是,如果您想缩小结果列表的范围,则需要更具体地使用 Get-EventLog cmdlet,这通常可能很大。

获取事件日志 -LogName 安全 -EntryType 错误

在 PowerShell 的命令行界面中键入上述命令应该会为您提供安全事件日志中注册的所有错误的列表。 请注意,您可以使用 -List 参数查看系统中的所有日志类型,并将上述命令中的 Security 替换为您在列表中找到的任何其他日志类型,只要它具有多个条目即可。

如果您想了解有关在 PowerShell 中使用 Get-EventLog 命令的更多信息,请随时使用我们在本小节第一部分中讨论过的 Get-Help 命令。

6. 转换为 HTML

有时,当您使用 PowerShell 时,您 12月 偶然发现您想要提取并保留以供将来参考的某些信息、创建报告或只是从不同的应用程序中导入它。 从 PowerShell 中提取此数据并将其导出到计算机上的外部文件的最常用方法之一是 ConvertTo-HTML 命令。

使用此命令将帮助您构建综合报告,通过为您提供 HTML 表格,您可以通过添加自定义样式和颜色编码数据来自定义这些表格,从而帮助您以更有效的方式分析提取的信息和见解。 与许多其他 PowerShell 命令一样,ConvertTo-HTML 本身不能工作,您需要将其与将用作输入(或数据源)的附加命令配对。

例如,如果您尝试打印包含以字母“W”开头且当前在您的计算机上运行的每个服务的报告,您可以键入以下命令:

获取服务“W*” | Where-Object {$_.Status -eq “正在运行”} | 转换为 HTML

这将为您提供您提供给 ConvertTo-HTML 函数的数据的 HTML 代码,您可以直接从 PowerShell 的命令行界面直接复制,将其粘贴到您喜欢的文本编辑器中并将其保存为 HTML 文件,您可以使用在任何网络浏览器中查看结果。

您可以将 ConvertTo-HTML 与几乎任何 PowerShell 命令一起使用,只要您用作数据源的命令会生成输出。 您可以尝试使用其他 cmdlet,例如 Get-Process、Get-EventLog 或 Get-Help。 请注意,除了 HTML 转换之外,ConvertTo cmdlet 还可用于生成 JSON、CSV 和 XML 文件。 您只需将命令语法中的 HTML 替换为您感兴趣的格式。

7. 导出-CSV

如果您正在处理您感觉到的各种对象 12月 更适合表格,您可以使用 PowerShell 将当前正在处理的项目转换为一系列 CSV(逗号分隔值)字符串,并通过 Export-CSV cmdlet 快速将字符串导出到文件。

与 ConvertTo-HTML 一样,Export-CSV 需要一个可以转换为 CSV 字符串的输入,因为它不能单独工作。 因此,您需要将它与可用于生成数据的命令配对,例如我们之前解释过的 Get-Service 或 Get-Process 。

本质上,Export-CSV 与我们上面讨论过的 ConvertTo-HTML cmdlet 几乎做同样的事情,除了一个不容忽视的重要方面:这个 cmdlet 实际上会生成一个文件并将其保存在您的计算机上,而不是ConvertTo 命令,它只为您提供输出并允许您自己创建文件。

例如,假设您希望将计算机上运行的服务列表转换为 CSV 文件,以便您可以使用第三方软件进一步处理该文件,或者将其放入电子表格中以供进一步参考。 您所要做的就是键入 Get-Service 命令,然后键入 Export-CSV,并提及您希望生成 CSV 文件的位置,如下例所示:

获取服务 | 导出-CSV c:wdzwdz.csv

上面的命令将获取计算机上所有可用服务的列表,无论是否运行,将它们转换为一系列 CSV 字符串,并将结果保存为 C 驱动器根目录中名为“wdzwdz”的 CSV 文件. 然后,您可以在第三方软件解决方案中打开文件,将其转换为成熟的表格,或者只是将其存储以供将来使用。

PowerShell 备忘单——结论

尽管仍然有很多人提倡使用 CMD,但说实话 PowerShell 更通用、更强大,但同时也比传统的 CMD 对应物更复杂。 大量的功能,再加上您可以在 PowerShell 中创建自动化脚本并执行复杂的系统管理操作这一事实,只会让 CMD 处于阴影中。

如果您刚刚开始发现 PowerShell,并且正在努力弄清楚每个命令的作用、如何通过管道传输多个命令,或者如何自行创建和运行简单的 PowerShell 脚本,那么我们的指南是一个很好的起点。 我们已经花时间解释了您应该在 PowerShell 中了解的一些最重要的命令,创建了一些简短的教程,还包括了基本 PowerShell 命令列表、它们的别名和每个项目的简短描述,只是为了简化您的 PowerShell 探索之旅。