如果你是 Windows 的资深用户,你可能已经知道,在电脑上完成特定任务的方法不止一种。通常,专用的图形用户界面(GUI)应用程序比手动命令行操作更受欢迎。但是,当你在命令行界面看到一长串文字在你面前展开,并且最终获得预期结果时,那种满足感是难以言表的,如果结果没有错误,那就更棒了。
在 Windows 电脑上,有两种主要的方式可以实现命令行操作:通过 CMD 或 PowerShell。 虽然 CMD 比 PowerShell 更为常见,但它的功能相对较弱。PowerShell 允许你执行更多操作,甚至可以执行 CMD 中的所有命令。 你可以认为 PowerShell 是旧版 CMD 的强大功能与脚本和 cmdlet 功能的结合,为你提供了大量的操作可能性。
即使对于经验丰富的用户来说,PowerShell 的强大功能也可能让人望而却步。更不用说那些之前从未听说过 CMD 或 PowerShell 的用户了。别担心,我们将尝试教你一些简单的技巧,让你能够通过 PowerShell 完成任务,甚至长期记住它们。这个“速成课程”并非 PowerShell 的详尽手册,但我们希望通过给你一些提示,并解释一些命令,来帮助你了解如何使用 PowerShell。如果你准备好了,那就让我们开始吧。
什么是 PowerShell?
正如我们前面简要提到的,PowerShell 是一个功能强大的工具,可用于执行大量操作。更重要的是,PowerShell 是一种任务自动化解决方案,它包含了一系列强大的工具,包括但不限于命令行 shell (类似于 CMD)、脚本语言和配置管理框架。
与只能接受和返回文本的其他 shell 不同,PowerShell 还可以接受和返回 .NET 对象。这得益于它包含的大量功能。以下是一些 PowerShell 最重要的 shell 相关功能:
命令预测和制表符补全
参数和命令别名支持
全面的命令行历史记录
通过管道链接命令的能力
控制台内的帮助系统,类似于基于 Unix 系统的手册页
然而,这仅仅是冰山一角。正如我们之前提到的,PowerShell 不仅仅是一个 shell,它还是一款功能强大的脚本语言,可用于自动化系统管理操作。你也可以在需要构建、分析、测试和部署各种环境中的解决方案时使用它。
鉴于 PowerShell 基于 .NET CLR(.NET 公共语言运行时),很容易理解为什么 PowerShell 使用的所有输入和输出都是 .NET 对象。此外,无需解析文本输出,PowerShell 就可以从中提取信息。 在 PowerShell 的脚本功能中,你可以找到以下特性:
全面的格式化系统,确保简洁的输出
通过广泛的类型系统创建动态类型
你可以通过类、函数、模块和脚本来扩展 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 可能让人感觉有点吓人,特别是当你知道它不仅仅是计算机上的另一个命令提示符。 它实际上包含了 CMD 的功能,以及一种特定的编程语言和各种可用于自动化系统管理操作的脚本。
但是,如果你决心掌握 PowerShell 及其提供的所有功能,我们强烈建议你从最基本的功能入手。这样,当你发现自己不小心使用了错误的功能,并且所有工作都付诸东流时,你就不必回滚几个月的进度。
这就是我们准备了一个基本命令列表的原因,你可以安全地在 PowerShell 会话中使用这些命令来测试这个强大程序的功能,看看它能做什么。下面的列表包括命令名称、它们的别名以及每个命令作用的简要说明。
请注意,你可以使用命令名称或它们的别名,结果完全相同。 人们更喜欢使用别名的原因是它们输入起来快得多。如果你能正确记住它们,并将它们与相应的命令名称联系起来,那么如果你想快速完成工作,这将会更有意义。
命令名称 | 别名 | 描述 |
Add-Content | ac | 允许你将内容(如单词或数据)附加到文件 |
Add-PSSnapIn | asnp | 帮助你将多个 Windows PowerShell 管理单元添加到当前会话 |
Clear-Content | clc | 清除项目的内容而不删除实际项目 |
Clear-History | clhy | 清除命令历史记录中的所有条目 |
Clear-Host | clear | 清除主机程序的显示 |
Clear-Host | cls | 和 clear 做同样的事情 |
Clear-Item | cli | 删除项目的内容而不删除实际项目 |
Clear-ItemProperty | clp | 擦除属性的值而不实际删除属性本身 |
Clear-Variable | clv | 删除变量的值 |
Compare-Object | compare | 让你比较两组对象 |
Compare-Object | diff | 与 compare 做同样的事情 |
Connect-PSSession | cnsn | 让你重新连接到已断开的会话 |
Convert-Path | cvpa | 允许你将 Windows PowerShell 路径转换为 Windows PowerShell 提供程序路径 |
Copy-Item | copy | 帮助你将项目从特定位置复制到另一个位置 |
Copy-Item | cp | 与 copy 做同样的事情 |
Copy-Item | cpi | 与 copy 和 cp 做同样的事情 |
Copy-ItemProperty | cpp | 允许你将值和属性从给定位置复制到另一个位置 |
Disable-PSBreakpoint | dbp | 帮助你禁用当前控制台中的断点 |
Disconnect-PSSession | dnsn | 断开你与当前会话的连接 |
Enable-PSBreakpoint | ebp | 允许你在当前控制台中启用断点 |
Enter-PSSession | epsn | 帮助你启动与远程设备的交互式会话 |
Exit-PSSession | exsn | 终止与远程设备的交互式会话 |
Export-Alias | epal | 允许你导出有关当前定义的别名的信息到输出文件 |
Export-Csv | epcsv | 允许你将对象转换为逗号分隔 (CSV) 字符串,并将字符串导出到 CSV 文件 |
Export-PSSession | epsn | 从不同的会话导入命令,并将它们导出到 Windows PowerShell 模块 |
ForEach-Object | % | 对输入对象集合中包含的每个项目执行特定操作 |
ForEach-Object | foreach | 与 % 做同样的事情 |
Format-Custom | fc | 帮助你使用自定义视图来格式化输出 |
Format-List | fl | 允许你将输出格式化为属性列表,其中每个属性都放置在新行上 |
Format-Table | ft | 允许你将输出格式化为表格 |
Format-Wide | fw | 帮助你将对象格式化为宽表,其中每个对象只显示一个属性 |
Get-Alias | gal | 获取当前会话的别名 |
Get-ChildItem | dir | 获取文件系统驱动器中所有文件和文件夹的列表 |
Get-ChildItem | gci | 与 dir 做同样的事情 |
Get-ChildItem | ls | 与 dir 和 gci 做同样的事情 |
Get-Command | gcm | 获取你可以使用的所有命令的列表 |
Get-Content | cat | 显示文件的内容 |
Get-Content | gc | 和 cat 做同样的事情 |
Get-History | ghy | 获取你在当前会话期间输入的所有命令的列表 |
Get-History | h | 和 ghy 做同样的事情 |
Get-History | history | 与 ghy 和 h 做同样的事情 |
Get-Item | gi | 让你获取文件和文件夹 |
Get-ItemProperty | gp | 获取你指定的项目的属性 |
Get-Job | gjb | 检索当前在你的会话中运行的所有 Windows PowerShell 后台作业的列表 |
Get-Location | gl | 获取有关你当前位置堆栈或工作位置的信息 |
Get-Location | pwd | 和 gl 做同样的事情 |
Get-Member | gm | 获取指定对象的所有属性和方法 |
Get-Module | gm | 检索已导入的模块或可以导入到当前会话的模块列表 |
Get-Process | gps | 获取在本地或远程计算机上运行的所有进程的列表 |
Get-Process | ps | 和 gps 做同样的事情 |
Get-PSBreakpoint | gbp | 检索当前会话中设置的所有断点 |
Get-PSCallStack | gcps | 显示你当前的调用堆栈 |
Get-PSDrive | gdr | 获取当前会话中的驱动器 |
Get-PSSession | gsn | 检索本地和远程 Windows PowerShell 会话的列表 |
Get-PSSnapin | gsnp | 获取计算机上所有 Windows PowerShell 管理单元的列表 |
Get-Service | gsv | 列出本地或远程计算机上的所有服务 |
Get-Unique | gu | 从排序列表中检索唯一项目 |
Get-Variable | gv | 显示当前控制台中所有变量的列表 |
Get-WmiObject | gwmi | 获取有关可用类的实例或信息的 Windows Management Instrumentation (WMI) 类 |
Group-Object | group | 允许你对包含相同属性值的对象进行分组 |
Help | man | 显示有关 Windows PowerShell 命令和概念的信息 |
Import-Alias | ipal | 允许你从文件中导入别名列表 |
Import-Csv | ipcsv | 使用其中包含的所有项目构建类似表格的自定义对象 CSV 文件 |
Import-Module | ipmo | 将模块导入当前会话 |
Import-PSSession | ipsn | 将来自不同会话的命令导入当前会话 |
Invoke-Command | icm | 允许你在本地和远程计算机上执行命令 |
Invoke-Expression | iex | 允许你在本地计算机上执行命令或表达式 |
Invoke-History | ihy | 执行会话历史中的命令 |
Invoke-History | r | 和 ihy 做同样的事情 |
Invoke-Item | ii | 对指定项目执行默认操作 |
Invoke-RestMethod | irm | 向 RESTful Web 服务发送 HTTP 或 HTTPS 请求 |
Invoke-WebRequest | curl | 从 Internet 上的网页中检索内容 |
Invoke-WebRequest | iwr | 和 curl 做同样的事情 |
Invoke-WMIMethod | iwmi | 允许你调用 Windows Management Instrumentation (WMI) 方法 |
Measure-Object | measure | 确定对象的数字属性,以及字符串对象中的单词、行和字符 |
mkdir | md | 创建一个新项目(目录) |
Move-Item | mi | 允许你将项目从特定位置移动到另一个位置 |
Move-Item | move | 和 mi 做同样的事情 |
Move-Item | mv | 与 mi 和 move 做同样的事情 |
Move-ItemProperty | mp | 允许你将属性从特定位置移动到另一个位置 |
New-Alias | nal | 允许你创建新别名 |
New-Item | ni | 让你创建一个新项目 |
New-Module | nm | 生成仅存在于内存中的新动态模块 |
New-PSDrive | mount | 允许你创建临时和持久的映射网络驱动器 |
New-PSDrive | ndr | 和 mount 做同样的事情 |
New-PSSession | npsn | 建立与本地或远程计算机的持久连接 |
New-PSSessionConfigurationFile | npssc | 创建会话配置文件 |
New-Variable | nv | 允许你创建一个新变量 |
Out-GridView | ogv | 允许你将输出发送到单独窗口中的交互式表格 |
Out-Host | oh | 将输出发送到命令行 (CMD) |
Out-Printer | lp | 允许你将输出发送到打印机 |
Pop-Location | popd | 将你当前的位置修改为最近被推入堆栈的位置。 你可以使用 Push-Location cmdlet (pushd) 从默认堆栈或你创建的堆栈中弹出该位置。 |
powershell_ise.exe | ise | 显示有关如何使用 PowerShell_ISE.exe 命令行工具的说明 |
Push-Location | pushd | 将当前位置附加到位置堆栈的顶部 |
Receive-Job | rcjb | 获取当前会话中的 Windows PowerShell 后台作业结果 |
Receive-PSSession | rcsn | 从断开的会话中检索命令的结果 |
Remove-Item | del | 删除文件和文件夹 |
Remove-Item | erase | 和 del 做同样的事情 |
Remove-Item | rd | 与 del 和 erase 做同样的事情 |
Remove-Item | ri | 与 del、erase 和 rd 做同样的事情 |
Remove-Item | rm | 与 del、erase、rd 和 ri 做同样的事情 |
Remove-Item | rmdir | 删除文件夹 |
Remove-ItemProperty | rp | 允许你从给定项目中删除属性及其值 |
Remove-Job | rjb | 允许你删除 Windows PowerShell 后台作业 |
Remove-Module | rmo | 帮助你从当前会话中删除模块 |
Remove-PSBreakpoint | rbp | 允许你从当前控制台中删除断点 |
Remove-PSDrive | rdr | 删除临时 Windows PowerShell 驱动器并断开映射的网络驱动器 |
Remove-PSSession | rsn | 允许你关闭一个或多个 Windows PowerShell 会话 (PSSessions) |
Remove-PSSnapin | rsnp | 使你能够从当前 Windows PowerShell 管理单元中删除会话 |
Remove-Variable | rv | 删除变量及其值 |
Remove-WmiObject | rwmi | 允许你删除现有 Windows 管理规范 (WMI) 类的实例 |
Rename-Item | ren | 帮助你重命名 Windows PowerShell 提供程序命名空间中的项目 |
Rename-Item | rni | 和 ren 做同样的事情 |
Rename-ItemProperty | rnip | 使你能够重命名项目的属性 |
Resolve-Path | rvpa | 解析路径中的通配符,并显示路径的内容 |
Resume-Job | rsjb | 帮助你重新启动暂停的作业 |
Select-Object | select | 允许你选择对象及其属性 |
Set-Alias | sal | 允许你在当前 Windows PowerShell 会话中创建或更改 cmdlet 或命令元素(备用名称)的别名 |
Set-Content | sc | 允许你将文件的内容替换为你指定的内容。 |
Set-Item | si | 将项目的值更改为命令中指定的值 |
Set-Location | cd | 让你将当前工作位置设置为指定位置(更改活动位置) |
Set-Location | chdir | 和 cd 做同样的事情 |
Set-PSBreakpoint | sbp | 允许你在命令、变量或行上设置断点 |
Set-Variable | set | 使你能够设置变量的值或生成一个变量(如果请求的名称不存在) |
Show-Command | shcm | 以图形方式显示 Windows PowerShell 命令列表 |
Start-Job | sajb | 在 Windows PowerShell 中启动后台作业 |
Start-Process | start | 启动一个或多个本地进程 |
Start-Service | sasv | 让你启动一个或多个已停止的服务 |
Stop-Process | kill | 帮助你停止一个或多个正在运行的进程 |
Where-Object | ? | 使你能够根据其属性值从集合中选择某些对象 |
Write-Output | echo | 允许你将对象发送到管道中的下一个命令。 如果它到达管道中的最后一个命令,该命令将显示控制台中的对象 |
不要让大量的基本 PowerShell 命令吓到你。 虽然我们称它们为基本命令,但你完全没有必要开始记住它们。实际上,这就是我们创建上表的原因,这样你就可以继续你的工作,而不必担心必须记住我们上面提到的每一个命令。
你可以将其用作快速参考,甚至使用浏览器的搜索功能来查找特定命令、其别名以及它在你想知道时可以做什么。虽然我们已经在上表中包含了这条信息,但如果你在使用 PowerShell 时感到困惑,使用帮助命令将显示一些有用的详细信息,说明如何更有效地使用该程序及其命令。
如果你想了解有关特定命令的更多详细信息,你还可以将帮助命令与另一个命令或别名配对。例如,这是你在键入 help Add-Computer 时 PowerShell 将显示的内容:
但是,你可以对上表中的任何其他命令或其别名使用帮助。请确保你了解同一个命令可以有多个别名,这意味着你可以通过使用各种别名来实现相同的结果。虽然这听起来可能会让人困惑,但它实际上为你提供了很大的灵活性。如果你不记得一个命令的别名,但你记得另一个可以帮助你实现相同目标的别名,就可以使用它。
使用 PowerShell
自然,你首先要做的事情就是找到 PowerShell 并启动它。从电脑上的任何位置启动 PowerShell 的一种可靠方法是按住键盘上的 Shift 键,右键单击屏幕上的任何空白区域(不是菜单、图标、按钮或类似对象),然后从上下文菜单中选择“在此处打开 PowerShell 窗口”。
除了让你快速访问电脑上任何位置的 PowerShell 控制台外,这样做还会自动将 PowerShell 的默认工作目录切换到你当前所在的目录。如果你使用的是 Windows 10 电脑,还可以通过按键盘上的 Win 键,在“开始”菜单中键入 PowerShell,并在结果列表中显示 PowerShell 时选择 PowerShell 来启动 PowerShell。
在旧版本的 Windows 上,你需要手动找到 PowerShell 可执行文件,你可以在“开始”菜单的“附件”或“系统”文件夹中找到该文件。此外,考虑到旧系统(例如 Windows 7)默认不提供 PowerShell,你还必须在你的计算机上安装它及其所有依赖项。
请注意,从“开始”菜单启动 PowerShell 会将你的活动工作目录设置为 C:\Users\[你的用户名]。相比之下,使用我们上面介绍的 Shift + 右键单击方法会将 PowerShell 的活动目录设置为你在生成控制台时当前所在的目录。 例如,如果你使用 Shift + 右键单击并从桌面打开 PowerShell,你会注意到活动目录将是 C:\Users\[你的用户名]\Desktop。 由于显而易见的原因,[你的用户名] 部分将根据你的用户名而有所不同。
虽然你可以在家里使用 PowerShell,但如果你能充分利用它提供的所有功能,那将是更好的选择。这些功能使得 PowerShell 非常适合企业使用,你需要在短时间内执行大量操作,而且很可能是在大量的设备上执行。
因此,你无需在每台机器上手动运行每个命令。你只需在 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(记住你可以使用上面的表格),但有些你会更频繁地使用,这将使它们非常容易记住。更不用说它们中的一些足够直观,以至于它们的名字实际上就泄露了它们的用途(例如,copy 用于复制项目,move 可用于移动文件,compare 可帮助你比较对象集等)。
但是,如果你不打算将本文加入书签以供以后使用,你也可以在 PowerShell 中键入 Get-Command cmdlet,或者如果你想保持简短,则键入 gcm。 这样做会显示你可以使用的命令的完整列表。你可以使用该列表提前计划你正在尝试执行的任何操作。
解锁自定义 cmdlet
另一方面,微软并没有让你完全访问 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 能够运行任何脚本,无论其出处和可信度如何。当然,无限制选项也是最危险的,因此请尽可能避免使用它,特别是如果你是电脑新手。
看? PowerShell 现在看起来比几分钟前更容易访问了。
如何在 PowerShell 中创建和使用脚本
正如我们之前提到的,我们相信你还记得,你可以使用 PowerShell 来运行自动化脚本。但是,你不能只对 PowerShell 大喊“嘿,为我创建这个脚本!” 并期望它神奇地工作,所以你必须投入一些努力并自己完成它。虽然这现在听起来不太方便,但相信我们,考虑到你不再需要做的所有工作,从长远来看,你会感到感激。
虽然我们大多数人都依赖 IDE 等专用软件来创建特定编程语言的脚本或程序,但事实上,你可以使用任何文本编辑器,只要它能将文件保存为正确的扩展名即可。即使不能,你也可以导航到你创建的文件,并通过重命名手动修改其扩展名。但让我们回到我们的主题。
如果你有兴趣创建可以在 PowerShell 中运行的脚本,你会很高兴得知,你可能已经听说过的这个脚本只是一个文本文档,它的扩展名使其与 PowerShell 兼容,即 PS1。因此,很容易理解为什么实际上可以在几乎任何文本编辑器中处理创建这些脚本,只要你使用正确的 (PS1) 扩展名保存它即可。
Write-Host “请输入你的姓名:”
$Name = Read-Host
“你好 $Name! 访问 wdzwdz.com 获取更多很棒的教程和指南!”
现在,开始实际的创建部分:
启动记事本(或任何其他文本编辑器)
复制上面的代码(你将要创建和运行的脚本)
将其粘贴到新的记事本文档中
使用 CTRL + S 保存文档
键入 script.ps1 作为文件名
将文件保存在可访问的位置
以管理员权限打开 PowerShell 实例(非常重要)
确保你已在系统上启用自定义脚本(检查上面的部分)
导航到你保存脚本的位置
键入脚本的完整路径以运行它
例如,如果你的脚本位于 C 驱动器上的 Scripts 文件夹中,你的命令将是 C:\Scripts\script.ps1
或者,你可以简单地导航到脚本的位置,并使用以下命令运行它:.\script.ps1
如果你无法运行脚本,并且 PowerShell 返回错误,请确保你已启用 PowerShell 以在你的系统上运行自定义脚本,并且你以管理员身份运行 PowerShell。不执行我们在说明中指定的任何一项或两项操作很可能会导致错误,并且你将无法运行你的脚本。
请记住,这只是一个类似于经典“Hello, world!”的基本脚本。它通过与你互动(即询问你的姓名)并让你与之互动(即输入你的姓名将用于为你打印消息)来实现这一点。然而,PowerShell 能够运行更复杂的脚本,从从一组机器收集数据,到复杂的数据管理、高级系统配置操作,甚至在眨眼之间创建 SQL 数据库的备份。
如何使用 PowerShell 备份 SQL 数据库?
我们很高兴你问这个问题。正如我们在指南中无数次提到的那样,PowerShell 可以帮助你执行的操作几乎有无限的可能性。最流行的方法之一是备份 SQL 数据库,而无需花费大量精力或拥有非凡的数据库管理能力。你所要做的就是启动一个具有管理员权限的 PowerShell 实例,并使用 Backup-SqlDatabase 命令。然而,事情比这要复杂一些,但我们会在一些情况下解决这个问题。
备份 SQL 数据库并不像简单地将文件从电脑复制到安全位置那样简单,并希望它们在你需要执行数据恢复操作时保持安全。但从好的方面来看,使用 PowerShell 可以让它看起来像在公园里散步。虽然有几种方法可以实现这一点,但使用我们上面提到的命令是备份 SQL 数据库最快、最简单的方法。
在 Backup-SqlDatabase 命令的功能中,可以找到完整的数据库备份、数据库文件备份和事务日志备份,因此你可以在单个命令行工具中获得完整的软件包。默认情况下,使用此命令将执行完整的数据库备份,因此你需要使用 BackupFile 参数指定是否希望它遵循特定的规则集。
请注意,某些版本的 PowerShell 默认情况下不包含此命令,因此你必须导入或安装它。好消息是,安装 SQL 模块并不完全是火箭科学,即使是新手也可以完成。如果你无法在 PowerShell 会话中使用 Backup-SqlDatabase 命令,你必须执行以下操作:
以管理员权限启动 PowerShell
键入以下命令:
当要求确认你的操作时,键入 Y 并按键盘上的 Enter 键
通过键入 Y 和 Enter 键再次确认不受信任的存储库
安装完成后,键入以下命令:
尝试通过在 PowerShell 命令行中键入来运行 Backup-SqlDatabase 命令
如果有效,你应该会看到 PowerShell 要求你为某些参数提供值
如果它不起作用,请确保你已设置 PowerShell 的权限以允许它运行自定义脚本
1. 完成 SQL 数据库备份
Backup-SqlDatabase -ServerInstance “ComputerInstance” -Database “wdzwdz”
我们上面示例的命令将生成名为 wdzwdz 的数据库的完整数据库备份,并将其保存到 “ComputerInstance” 服务器实例的默认备份位置,文件名为 “wdzwdz.bak”。
2. 执行基于位置的数据库备份
Set-Location “SQLSERVER:\SQL\ComputerInstance”
PS SQLSERVER:\SQL\ComputerInstance> Backup-SqlDatabase -Database “wdzwdz”