[玩转系统] 告诉 PowerShell 你想要什么
作者:精品下载站 日期:2024-12-14 08:05:42 浏览:13 分类:玩电脑
告诉 PowerShell 你想要什么
前几天我在 Twitter 上看到一个关于如何在运行 Get-VM Hyper-V cmdlet 时包含 Notes 属性的问题。我正在阅读字里行间的内容,但我认为期望的目标是包含 Notes 属性。您可以通过以下几种方法来解决此问题。即使您不使用 Hyper-V,如果您需要自定义不同 PowerShell 命令的输出,这些概念也同样有效。
PowerShell 完全是关于对象的,这是一件好事。对我们来说幸运的是,PowerShell 团队提前计划并没有创建发出固定对象的命令。他们为我们提供了定制输出以满足我们需求的工具。这里就是这种情况。
在 PowerShell 中运行 cmdlet(尤其是来自 Microsoft 的 cmdlet)时,通常会得到易于阅读的结果。当开发命令时,有人决定显示什么信息以及如何显示它。许多命令(例如 Get-VM)将丰富的对象写入管道。但是,您只能看到该信息的一部分。使用 Select-Object 可以轻松查看所有可用属性。
如果我想查看某些内容,我所要做的就是告诉 PowerShell 将其显示给我。
Get-VM | Where-Object state -EQ running |
Select-Object -Property Name, State, Version, Uptime, AutomaticStartAction, Notes
但假设我想经常获得这些属性。不断重新输入 Select-Object 语句会变得非常乏味。这是一种选择。
属性集
PowerShell 有属性集的概念。属性集允许您使用单个属性名称来检索一组属性。其中一些集合是默认定义的。要亲自查看,请运行此命令。
Get-Process | Select-Object PSResources
您将获得一组相关属性。对于虚拟机,最好有一个包含 Notes 属性的属性集。但有一个小问题。您可以使用 Update-TypeData 来扩展对象。但属性集需要特殊格式的 ps1xml 文件。不要恐慌。我掩护你。
从 PowerShell 库安装 PSTypeExtensionTools 模块。我已经编写了一个命令来为您生成 XML 文件。
$splat = @{
Typename = 'Microsoft.HyperV.PowerShell.VirtualMachine'
Name = 'MgmtInfo'
FilePath = 'C:\scripts\mgmtinfo.types.ps1xml'
Properties = 'Name', 'State', 'Version', 'Uptime', 'AutomaticStartAction', 'Notes'
}
New-PSPropertySet @splat
Typename 值是您在通过管道将对象传递给 Get-Member 时看到的值。名称值将是新属性集的名称。该路径是不言自明的。典型的命名约定是objectType.types.ps1xml。我稍微偏离了一点。当然,属性是新集合的成员。
运行此命令会生成此 XML 文件。
<?xml version="1.0" encoding="utf-8"?>
<!--
This file was created with New-PSPropertySet from the
PSTypeExtensionTools module which you can install from
the PowerShell Gallery.
Use Update-TypeData to append this file in your PowerShell session.
Created 01/18/2022 08:33:05
-->
<Types>
<Type>
<Name>Microsoft.HyperV.PowerShell.VirtualMachine</Name>
<Members>
<PropertySet>
<Name>MgmtInfo</Name>
<ReferencedProperties>
<Name>Name</Name>
<Name>State</Name>
<Name>Version</Name>
<Name>Uptime</Name>
<Name>AutomaticStartAction</Name>
<Name>Notes</Name>
</ReferencedProperties>
</PropertySet>
</Members>
</Type>
</Types>
要在我的 PowerShell 会话中使用它,我需要导入它。
Update-TypeData -AppendPath $splat.FilePath
我现在拥有一处新房产。
您必须将显示内容的想法与如何显示它的想法分开。格式化是一项单独的任务。
该属性集与任何其他属性没有什么不同。我可以轻松地运行这样的命令:
Get-VM | Where-Object state -EQ running |
Select-Object -Property MgmtInfo | Out-GridView
顺便说一下,此属性集仅在我的 PowerShell 会话期间定义。如果这是我一直想要的,我会将 Update-TypeData 命令添加到我的 PowerShell 配置文件脚本中。
更改默认值
从技术上讲,您可以使用 Update-TypeData 更改默认属性集。使用 Get-TypeData 来发现。
但是,此默认属性列表并不一定意味着这就是您所看到的。
Get-VM 的默认输出是格式化表。看到显示内容和显示方式之间的区别了吗?
我可以很容易地更新 DefaultDisplayPropertySet。
默认表视图没有 Notes 属性的定义,因此我看不到它。但我也可以解决这个问题。
自定义格式文件
我已经多次写过这个步骤。最简单的步骤是使用 PSScriptTools 模块中的 New-PSFormatXML 命令创建自定义格式化视图。我假设所需的结果是添加了 Notes 属性的当前视图。
要使用该命令,您需要一个示例对象,其中包含要使用的所有属性的值。
$splat = @{
Path = 'c:\scripts\vmnotes.format.ps1xml'
ViewName = 'notes'
Wrap = $true
Properties = 'Name','State','CpuUsage','MemoryAssigned',
'Uptime',@{Name='Version';Expression={$_.status}},'Notes'
}
Get-VM dom1 | New-PSFormatXML @splat
我将创建一个名为“notes”的新表视图。我要指出的是,在撰写本文时,我发现了 New-PSFormatXML 中的一个小错误。如果运行此代码,您可能会收到一条错误消息,指出 CpuUsage 是只读属性。这不会影响结果,您可以忽略该错误。我稍后必须研究一下这个问题。
与 ps1xml 文件类型一样,您需要更新 PowerShell 才能使用新格式。
Update-FormatData $splat.path
您会注意到有些数据有点原始,例如 MemoryAssigned 值。 XML 文件中的注释向您展示了如何自定义和格式化输出。
概括
在扩展 PowerShell 时,您可以采取多种方法。最终取决于您打算如何使用信息。您是否需要自定义属性集来简化您的 PowerShell 命令?或者您是否需要包含所需信息的格式化结果?希望这能让我的朋友走上正轨。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag