当谈到在Windows上运行命令时,PowerShell已成为其中的王牌。多年来,发烧友一直局限于Windows命令行的限制,但在2006年,PowerShell成为了功能强大的替代产品.
什么是PowerShell?
PowerShell是一种交互式 命令行界面 (命令行界面)和Microsoft设计的自动化引擎,以帮助设计系统配置和自动化管理任务。该工具有自己的命令行,使用类似于Perl的独特编程语言。最初,PowerShell旨在管理用户计算机上的对象.
如今,PowerShell为用户提供了广泛的环境,他们可以在其中执行和自动化系统管理任务。用户可以通过一个程序从Active Directory访问资源到Exchange Server。 PowerShell的核心是允许用户访问:
- 命令提示符
- PowerShell命令
- .NET Framework API
- Windows管理规范
- Windows组件对象模型
随着PowerShell成为开源应用程序,基于Linux和Unix的用户现在可以访问此多功能平台。 PowerShell的主要用途是帮助用户自动执行管理作业。用户不必执行繁琐而重复的任务,只需创建脚本并发出命令,PowerShell便会自动完成它们。用户可以自定义数百个命令,称为 cmdlet.
PowerShell命令
以下是25个基本的PowerShell命令:
设置位置 | cd,chdir,sl | 将当前工作位置设置为指定位置. |
获取内容 | 猫,gc,类型 | 在指定位置获取项目的内容. |
添加内容 | 交流电 | 将内容添加到指定的项目,例如将单词添加到文件. |
设置内容 | SC | 用新内容写入或替换项目中的内容. |
复制项目 | 复制,cp,cpi | 将项目从一个位置复制到另一个位置. |
除去项目 | del,擦除,rd,ri,rm,rmdir | 删除指定的项目. |
移动项 | mi,移动,mv | 将项目从一个位置移动到另一个位置. |
设定项目 | si | 将项目的值更改为命令中指定的值. |
新物品 | 你 | 创建一个新项目. |
开始工作 | 萨伊卜 | 启动Windows PowerShell后台作业. |
比较对象 | 比较,差异 | 比较两组对象. |
组对象 | 组 | 对包含指定属性的相同值的对象进行分组. |
调用WebRequest | 卷发,iwr,wget | 从Internet上的网页获取内容. |
测量对象 | 测量 | 计算对象的数字属性,以及字符串对象(例如文件)中的字符,单词和行…… |
解析路径 | rvpa | 解析路径中的通配符,并显示路径内容. |
履历表 | 鲁伊卜 | 重新启动暂停的作业 |
集变量 | 设置,sv | 设置变量的值。如果请求的名称不存在,则创建变量. |
显示命令 | shcm | 在图形命令窗口中创建Windows PowerShell命令. |
排序对象 | 分类 | 按属性值对对象排序. |
启动服务 | 萨斯 | 启动一项或多项已停止的服务. |
开始过程 | 萨普斯,开始 | 在本地计算机上启动一个或多个进程. |
暂停作业 | sujb | 暂时停止工作流程作业. |
等待工作 | j | 禁止命令提示符,直到会话中运行的一个或所有Windows PowerShell后台作业都… |
对象在哪里 | ?, 哪里 | 根据对象的属性值从集合中选择对象. |
写输出 | 回声,写 | 将指定的对象发送到管道中的下一个命令。如果该命令是管道中的最后一条命令,则… |
这是PowerShell备忘单的PDF版本。单击下面的图像在单独的浏览器选项卡中打开PDF,您可以将其保存并用作快速参考.
PowerShell备忘单(PDF)
如何使用PowerShell
PowerShell是在大型公司网络上运行复杂管理操作的公司管理员的理想选择。您无需手动整理有关数百种不同服务器和服务的信息(这将花费很长时间),而只需在PowerShell上运行脚本以自动将信息反馈给您.
一般而言,PowerShell对具有命令行经验的用户最有利。要使用PowerShell,您可以运行各种cmdlet,脚本,可执行文件和.NET类。就本文而言,我们将主要关注cmdlet和脚本,以帮助您掌握基础知识.
Udemy在PowerShell上有许多顶级课程,您可能会觉得有用.
PowerShell vs命令提示符
对于许多用户而言,PowerShell是命令提示符的更好替代方案。原因是它仅具有更大的马力。最大的区别之一是PowerShell使用cmdlet而不是命令。 Cmdlet将注册表管理和Windows Management Instrumentation置于用户的管理范围内。相反,命令提示符只限于更简单的命令.
两种平台之间在语法上存在一些交叉,因为PowerShell将接受一些命令提示符命令,如ipconfigtocd。但是,这些被称为别名而不是cmdlet。另一个主要区别是PowerShell是以对象为中心的。从cmdlet输出的每条数据都是对象,而不是文本。这使用户可以更轻松地浏览复杂数据。包含.NET框架还使PowerShell脚本可以使用.NET接口。简而言之,PowerShell是类固醇上的命令提示符.
加载PowerShell
在深入研究使用PowerShell的基础知识之前,您首先需要访问主界面。如果您是Windows 10用户,那么您已经可以访问PowerShell 5.Windows 8-8.1用户可以访问PowerShell 4,但是如果您使用的是Windows 7,则需要在.NET内安装它。框架。在所有操作系统中,PowerShell提供两个不同的接口.
更高级的是集成脚本环境,它可以作为有经验的用户的综合GUI。基本的替代方法是PowerShell控制台,它为用户提供了一个命令行以供用户输入命令。建议初学者坚持使用后者,直到他们了解PowerShell的基础知识为止.
为了在Windows 10上启动PowerShell,您需要成为管理员。以管理员身份登录,单击 开始, 并滚动浏览您的应用程序,直到找到 Windows PowerShell. 右键单击并选择 以管理员身份运行. 在Windows 8.1上,只需在您的计算机中搜索PowerShell 系统 夹。同样,在Windows 7上,PowerShell的默认目录为 配饰 安装程序后的文件夹.
如何运行Cmdlet
简而言之,cmdlet是单功能命令。就像使用传统命令或实用程序一样,您可以在命令行中输入cmdlet。 Cmdlet是与CLI交互的主要方式。在PowerShell中,大多数cmdlet用C#编写,并包含旨在执行返回.NET对象功能的指令。.
在PowerShell中可以使用200多个cmdlet。 Windows PowerShell命令提示符不区分大小写,因此可以使用大写或小写形式键入这些命令。下面列出了主要cmdlet:
- 获取位置 –获取当前目录
- 设置位置 –获取当前目录
- 移动项目 –将文件移到新位置
- 复制项目 –将文件复制到新位置
- 改名 –项目重命名现有文件
- 新物品 –创建一个新文件
有关可用命令的完整列表,请使用Get-Command cmdlet。在命令行中,您将输入以下内容:
PS C:\> 获取命令
请务必注意,Microsoft限制用户在其默认设置中使用自定义PowerShell cmdlet。为了使用PowerShell cmdlet,您需要更改 执行政策 从 受限制的 至 远程签名. 远程签名 将允许您运行自己的脚本,但将阻止其他用户的未签名脚本.
要更改您的执行策略,请键入以下PowerShell命令:
PS C:\> 设置执行策略
更改为 远程签名, 键入以下命令:
PS C:\> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
确保您使用的是管理员帐户,以便您有权设置新的执行策略.
如何运行脚本
基于脚本的过程和命令是PowerShell多功能性基础的一部分。在PowerShell中,脚本本质上是一个文本文件,其文件名带有ps1扩展名。要创建新脚本,您只需打开Windows记事本,键入命令,然后在名称末尾添加“ .ps1”.
要运行脚本,请在PowerShell窗口中输入其文件夹和文件名:
PS c:\ powershell \ mynewscript.ps1
完成此操作后,您选择的脚本将运行.
寻找创建自己的PowerShell脚本? 将近五千名学生参加了有关使用PowerShell进行高级脚本编写的Udemy课程.
与Windows命令重叠
当您不熟悉PowerShell时,尝试学习一个全新的命令库会感到不知所措。但是,大多数新用户并没有意识到Windows命令行上使用的语法与PowerShell重叠。由于PowerShell不区分大小写,因此更加容易.
与命令提示符非常相似,在PowerShell上,cd命令仍会更改目录,并且dir仍会提供所选文件夹中的文件列表。因此,请务必记住您不一定要从头开始。掌握这些知识将有助于减少使用PowerShell时面临的学习难度,并减少必须学习的新命令的数量。.
话虽如此,需要注意的是,这些并不是完整的PowerShell命令,而是别名(Powershell Windows命令提示符命令的名称)。因此,即使您可以在PowerShell中尝试某些命令提示符命令,也应该尽可能多地了解新命令。尽管如此,Command Prompt的经验绝对可以帮助新用户掌握PowerShell并开始运行.
备份SQL数据库
许多人使用PowerShell备份SQL数据库。命令行界面可以执行完整的数据库备份,文件备份和事务日志备份。在PowerShell中备份数据库的方法有很多,但是最简单的方法之一就是使用Backup-SqlDatabase命令。例如:
PS C:\> Backup-SqlDatabase -ServerINstance“计算机\实例”-数据库“ Databasecentral”
这将为名称为“ Databasecentral”(或您所选数据库的名称”的数据库创建数据库备份).
要备份事务日志,请输入:
PS C:\> Backup-SqlDatabase -ServerInstance“计算机\实例”-数据库“ Databasecentral” -BackupAction日志
这将创建所选数据库的事务日志.
基本的PowerShell命令
使用别名只会使您对PowerShell有所了解,因此务必致力于学习有关PowerShell本机命令的所有知识。我们在上面介绍了其中一些内容,但下面将详细介绍主要内容。.
得到帮助
对于PowerShell,此命令应位于所有新用户列表的最顶部。 Get-Help命令可用于从字面上获取任何其他PowerShell命令的帮助。例如,如果您知道命令的名称,但不知道其作用或用法,则Get-Help命令将提供完整的命令语法.
例如,如果您想查看Get-Process的工作方式,请输入:
PS C:\> 获取帮助-名称Get-ProcessPS C:\> 设置执行策略
如本指南前面所述,Microsoft具有受限制的执行策略,除非您对其进行更改,否则它会阻止在PowerShell上编写脚本。设置执行策略时,有四个选项可供选择:
- 受限制的 –阻止脚本运行的默认执行策略.
- 全部签名 –如果脚本由受信任的发布者签名,将运行
- 远程签名 –允许运行已在本地创建的脚本
- 无限制 –对运行脚本没有限制的策略
PS C:\> 获取执行政策
如果您使用的是PowerShell,则可能无法始终在您熟悉的服务器上工作。运行命令 获取执行政策 将允许您在运行新脚本之前查看服务器上哪个策略处于活动状态。如果随后看到有问题的服务器在受限策略下运行,则可以实施 设置执行策略 命令更改它.
获取服务
最重要的命令之一是Get-Service,它为用户提供了系统上已安装的所有已运行和已停止服务的列表。可以使用特定的服务名称或对象来定向此cmdlet.
例如,如果您输入PS C:\> Get-Service,将显示计算机上所有服务的列表,它们的状态和显示名称.
要使用此命令来检索特定服务,请输入:PS C:\ Get-Service“ WMI *”以检索所有以WMI开头的服务.
如果要将输出限制为计算机上的活动服务,请输入以下命令:
PS C:\获取服务|哪里对象{$ _。Status -eq“正在运行”}
转换为HTML
使用PowerShell时,您可能想生成有关所见信息的报告。最好的方法之一是使用 转换为HTML 命令。此cmdlet允许您使用表格和颜色构建报告,这可以帮助可视化复杂数据。只需选择一个对象并将其添加到命令中即可。例如,您可以输入:
Get-PSDrive |转换为HTML
这会返回大量信息,因此最好使用Out-File命令将其限制为一个文件。更好的替代命令是:
获取PSD驱动器|转换为HTML |外文件-FilePath PSDrives.html
然后,将生成表格形式的HTML文件。例如:
然后,您可以添加自己的颜色和边框以完善其表示方式.
导出CSV(和Get-Service)
对于提高可见性同样重要的是Export-CSV命令。它允许您将PowerShell数据导出到CSV文件。本质上,此命令将创建一个CSV文件,以编译您在PowerShell中选择的所有对象。每个对象在CSV文件中都有自己的行或行。此命令主要用于创建电子表格并与外部程序共享数据.
要使用此命令,请输入:
PS C:\> 服务获取|导出CSV c:\ service.csv
重要的是要记住在运行Export-CSV命令之前不要格式化对象。这是因为格式化对象导致仅将格式化后的属性放置到CSV文件中,而不是原始对象本身。如果您要将对象的特定属性发送到CSV文件,则可以使用 选择对象 cmdlet.
要使用 选择对象 cmdlet,键入:
PS C:\> 服务获取|选择对象名称,状态|导出CSV c:\ Service.csv
获取流程
如果要查看系统上当前正在运行的所有进程,则 获取流程 命令非常重要。要获取计算机上所有活动进程的列表,请键入:
PS C:\获取进程
请注意,如果您未指定任何参数,则会得到计算机上每个活动进程的细目分类。要选择特定的流程,请按流程名称或流程ID缩小结果范围,然后将其与 格式清单 cmdlet,其中显示所有可用属性。例如:
PS C:\ Get-Process windowrd,资源管理器|格式列表*
这为您提供了对所有活动过程的全面监督.
获取事件日志
如果您想在使用PowerShell时访问计算机的事件日志(或远程计算机上的日志),则需要 获取事件日志 命令。此cmdlet仅适用于经典事件日志,因此您需要 Get-WinEvent Windows Vista之后的日志的命令.
要运行事件日志命令,请键入:
PS C:\> Get-EventLog-列表
这将在您的计算机上显示所有事件日志.
用户查看事件日志的最常见原因之一就是查看错误。如果要在日志中查看错误事件,只需键入:
PS C:\> Get-EventLog -LogName系统-EntryType错误
如果要从多台计算机获取事件日志,请指定要查看的设备(下面列为“ Server1”和“ Server2”)。例如:
PS C:\> Get-EventLog-LogName“ Windows PowerShell” -ComputerName“本地计算机”,“ Server1”,“ Server2”.
可用于搜索事件日志的参数包括:
- 后 –用户指定日期和时间,cmdlet将查找在之后发生的事件
- AsBaseObject –为每个事件提供一个System.Diagnostics.EventLogEntry
- AsString –以字符串形式返回输出
- 之前 –用户指定日期和时间,cmdlet将查找之前发生的事件
- 电脑名称 –用于引用远程计算机
- EntryType –指定事件的条目类型(错误,失败审核,成功审核,信息,警告)
- 指数 –指定cmdlet从中查找事件的索引值
- 清单 –提供事件日志列表
- 用户名 –指定与给定事件关联的用户名
停止程序
使用PowerShell时,遇到冻结过程并不罕见。每当这种情况发生时,您都可以使用 获取流程 检索遇到困难的进程的名称,然后使用 停止程序 命令。通常,您以其名称终止进程。例如:
PS C:\> 停止过程-名称为“ notepad”
在此示例中,用户已使用“Stop-Process”命令终止了记事本.
PowerShell:强大的命令行界面
尽管过渡到PowerShell看起来似乎很复杂,但它的命令行界面的操作与其他操作几乎相同。它可能具有自己独特的cmdlet,但是大量的在线资源可以帮助您完成您可以想到的任何管理任务。为了充分利用PowerShell,您只需要习惯于可用的众多命令即可.
作为新用户,很容易被PowerShell的200多个cmdlet吓倒。在升级到功能完善的GUI之前,请确保从命令行界面开始。不管您是PowerShell还是命令行界面的新手,在线提供的信息都不足以帮助您充分利用此强大的工具.
用的许多命令在PowerShell中也可以使用。例如,dir命令在PowerShell中是Get-ChildItem,ipconfig命令是Get-NetIPAddress。这些别名使得用户可以在不熟悉PowerShell命令的情况下使用熟悉的命令。此外,PowerShell还提供了一些新的命令和功能,例如管道符号(|)和Where-Object cmdlet,使得数据过滤和处理变得更加容易。备份SQL数据库 作为系统管理员,备份数据库是您的一项重要任务。PowerShell可以帮助您自动化此过程。以下是一个简单的PowerShell脚本,可用于备份SQL Server数据库: $server = “localhost” $database = “MyDatabase” $backupPath = “C:\Backups\MyDatabase.bak” $query = “BACKUP DATABASE [$database] TO DISK=$backupPath” $connectionString = “Data Source=$server;Integrated Security=True;” $connection = New-Object System.Data.SqlClient.SqlConnection $connection.ConnectionString = $connectionString $connection.Open() $command = New-Object System.Data.SqlClient.SqlCommand $command.Connection = $connection $command.CommandText = $query $command.ExecuteNonQuery() $connection.Close() 此脚本使用System.Data.SqlClient命名空间中的类来连接到SQL Server实例并执行备份操作。您可以将此脚本保存为ps1文件并在需要时运行它。基本的PowerShell命令 PowerShell提供了许多有用的命令和功能,以下是一些基本的命令: 得到帮助 Get-Help cmdletName 获取有关指定cmdlet的帮助信息。例如,Get-Help Get-ChildItem。 获取服务 Get-Service 获取计算机上所有服务的列表。 转换为HTML ConvertTo-Html 将输出转换为HTML格式。例如,Get-Process | ConvertTo-Html。 导出CSV(和Get-Service) Export-Csv 将输出导出为CSV文件。例如,Get-Service | Export-C