PowerShell如何在Windows服务器上找到特性和角色

了解PowerShell Get-WindowsFeature命令可以很好地介绍PowerShell脚本可以为服务器管理员节省时间。

工作站数据中心2020欧洲杯预赛
上面/ Shashkin

PowerShell的Get-WindowsFeature命令——或者更准确地说,cmdlet——可以检索安装在运行Windows的服务器或工作站上的Windows特性的列表,包括服务器角色,使其成为服务器管理员的方便工具。

了解PowerShell可以指出它的价值,以及更广泛的PowerShell命令知识如何有助于更有效地管理Windows服务器。

01 powershell服务器角色层次结构 蒂姆Ferrill

缺省情况下,Get-WindowsFeatureCmdlet提供了一种层次视图,其中各个特性根据它们的安装状态是否选中了复选框。(点击可展开左边的图像)这有利于快速目测单个服务器了解它所提供的功能,但随着列表包含250以上的角色和功能,它开始失去实用性当你正在寻找一组特定的功能或想库存一次通过多个服务器。

02 powershell服务器角色搜索 蒂姆Ferrill

幸运的是Get-WindowsFeature提供一种简单的方法来关注特定的特性集。紧跟在cmdlet之后输入的任何文本(在powershell中称为参数)都将用于搜索特性名称,并过滤角色和特性列表。

例如,Get-WindowsFeature hyper - v将从列表中返回Hyper-V服务器角色,并指示该角色是否已安装或可用于安装。如果你想找到所有hyper - v相关的特性,你可以添加一个星号作为通配符搜索:Get-WindowsFeature hyper - v *

盘点远程服务器和离线虚拟机

了解…的目的GetWindowsFeature,你可以使用得到帮助cmdlet与GetWindowsFeature作为第一个参数。输出提供了一个概述GetWindowsFeature做,使用它的语法和任何可用的参数。添加例子开关:

得到帮助Get-WindowsFeature例子

将提供一些示例用例,必要的参数和语法已经完成如下;只需复制、粘贴和编辑参数以满足您的需要。(开关是一个不需要任何额外输入的参数。)

03 powershell服务器角色获取帮助 蒂姆Ferrill

左边的输出标识了一些重要的东西Get-WindowsFeature.首先是-Computername参数,该参数在PowerShell中相当普遍,并针对远程计算机而不是针对打开PowerShell窗口的计算机执行命令。许多cmdlet允许您使用这种方法指定多台计算机,但是Get-WindowsFeature只支持由-Computername参数表示的格式<字符串>.(得到帮助输出Get-ProcessCmdlet将显示格式< string [] >,这将提示一个字符串列表/数组。有一些方法可以解决这个限制,我们将在后面介绍。)

将这个应用到前面的例子hyper - v作为参数Get-WindowsFeature,如果您想检查远程服务器上是否安装了任何Hyper-V功能,则可以执行

Get-WindowsFeature Hyper-V -ComputerName RemoteServer01

并很快得到答案。注意,凭证在这里起作用,因此您要么需要在远程服务器上以具有适当权限的用户身份运行PowerShell,要么可以传递凭证参数以达到相同的结果。(通常情况下,你会提示输入一个新的凭证,并将其存储在一个变量(存储值的内存单元)中,例如:

美元信誉= Get-Credential

然后将存储的凭据传递给cmdlet凭据美元信誉.)

第二件重要的事得到帮助指出对Get-WindowsFeature是,vhd参数可以让它直接评估虚拟机(VM)硬盘驱动器(特别是Hyper-V使用的VHD或VHDX文件),而不必使它们在线。它不是每个人都会使用的东西,但如果你有一个VHD文件库用作快速部署vm的模板,或者甚至只有在特定情况下才启动vm,这可能是一个重大的胜利。

获得额外的细节Get-WindowsFeature

如果你运行Get-WindowsFeature您将得到格式化为三列的结果:显示名称、名称和安装状态。这些细节为评估服务器的组成提供了一个起点,但是如果您使用正确的cmdlet,在表面之下还隐藏着更多的细节。再次以Hyper-V为例,查看下面如何Select-ObjectCmdlet扩展输出视图。

04 powershell服务器角色更详细 蒂姆Ferrill

“Name”是角色或特性的简短名称,“DisplayName”是友好的可读名称。在这种情况下,它们恰好是相同的hyper - v。

Installed和InstallState字段类似,但有一些关键的区别。安装是一个布尔(True或False)字段,使它超级容易过滤。例如,一行代码如下:

Get-WindowsFeature | Where-Object Installed

将提供仅包含安装在服务器上的角色和特性的列表。

InstallState有三个可能的值:Installed、Available或Removed。这里的关键区别是可用和已删除之间的区别。两者都表示该特性当前没有安装和运行,但Available表示该特性可以直接从系统安装。删除意味着甚至安装文件已经从系统中清除,因此要安装该功能,您需要从媒体中这样做。

下一组字段说明角色和特性如何相互关联。DependsOn字段引用所需的任何其他特性。Parent和SubFeatures字段标识特性之间的关系,显示您正在安装的特性或可选子组件的直接父特性。

并不是所有的角色,当然也不是所有的特性都有Windows服务,但是一些服务器角色有多个服务来执行它们的功能。Get-WindowsFeature在“System Service”字段中列出这些服务,以便您可以发现哪些服务是基于角色的,然后检查它们的状态,以确保它们正常运行。

调用命令减少单个查询

当使用PowerShell对一列系统执行批量操作时,通常需要对每个系统执行多个任务或cmdlet。微软提供了几种不同的方法来实现这一点,但这里我们将重点放在Invoke-Commandcmdlet。Invoke-Command使用两个主要参数,第一个是-Computername(接受多个值的变体),第二个是-ScriptBlock,它允许您定义一组要在远程系统上运行的命令。由于PowerShell在命名和语法上非常一致,用于查询多台计算机的角色和特性的代码非常简单:

$features = Invoke-Command -ComputerName ' srv01 ', ' srv02 ', ' srv03 ' -ScriptBlock {Get-WindowsFeature}

这里是完整的输出Get-WindowsFeature将Cmdlet分配给美元的特性变量。这使得可以以多种方式分析返回的信息,而不必在远程计算机上重新运行cmdlet,与简单地在内存中保留数据较短时间相比,这可能会导致更大的性能损失。

其中一种方法是将数据包含在美元的特性变量可以用来创建已安装特性的列表:

$ functions | Where-Object Installed | Format-Table Name, DisplayName, InstallState, PSComputerName

这要从美元的特性变量并将结果过滤到Installed值为true的实例中,然后将输出格式化为显示指定列的表。

另一个示例是将已安装的服务器角色输出到CSV文件,允许通过电子邮件或文件存储或Excel分析进行共享。你可以从美元的特性变量,限制已安装的服务器角色(不是特性),然后使用PowerShell的一行代码导出到CSV文件:

$_. $是|的属性。安装——$ _。feature - type -eq ' Role '} | Export-CSV ' C:\Users\Administrator\Documents\ServerRoles.csv '

花时间学习PowerShell可以节省时间

PowerShell脚本语言无疑是微软在过去十年中对数据中心和过度劳累的系统管理员做出的更重要的贡献之一。2020欧洲杯预赛它不仅健壮且具有足够的普遍性,可用于广泛的Microsoft操作系统和云平台,而且它具有一致的、内聚的结构和健康的社区,有助于推动最佳实践和已建立的用例。

很多系统管理员都把PowerShell列在学习清单上,因为它可以节省执行日常任务的时间,但这可能是一个自相矛盾的地方:节省时间需要预先投入时间来学习它。也许这一介绍为实现这一飞跃提供了必要的推动力。

加入网络世界社区足球竞猜app软件脸谱网LinkedIn对自己最关心的话题发表评论。

版权所有©2021 IDG Com足球竞彩网下载munications, Inc.

SD-WAN买家指南:向供应商(和您自己)提出的关键问题