当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 管理 PowerShell 功能的更好方法

作者:精品下载站 日期:2024-12-14 08:02:56 浏览:14 分类:玩电脑

管理 PowerShell 功能的更好方法


[玩转系统] 管理 PowerShell 功能的更好方法

和你们中的许多人一样,我编写了大量 PowerShell 代码。其中大部分内容我每天都会使用,因为我基本上每天都在 PowerShell 提示符下度过。也像你们许多人一样,我经常将函数组装到一个模块中。模块可以更轻松地加载我需要的功能,并且还提供版本控制机制。当我在模块函数上运行 Get-Command 时,我可以看到模块名称和加载的版本。但是,我的 PowerShell 生活不仅仅是模块。我有许多我依赖的独立函数。其中许多都是我的 PowerShell 配置文件脚本中的点源。我知道我不是唯一依赖独立 PowerShell 功能的 PowerShell 专业人士。至少从我的角度来看,挑战在于没有版本控制机制。当我运行 Get-Command 时,无法获得有关独立函数的类似信息。这就是我想解决的问题。

PS函数信息

在过去的一年里,我一直在寻找解决方案。我一直在使用它并发现它很有帮助。我的朋友 Gladys Kravitz 也对缺乏管理独立功能的工具感到遗憾。虽然她有自己的方法,但我认为我的解决方案可能会提供更多。因此,我对其进行了完善,设置了一个 Github 存储库,并向 PowerShell Gallery 发布了预览版。该模块称为 PSFunctionInfo。您可以在 Github 上找到该存储库。由于它是预发行版,因此您可能需要安装最新版本的 PowerShellGet 模块,以便获得预发行版参数。

Install-Module PSFunctionInfo -AllowPrerelease

函数元数据

该模块的工作原理是在函数定义中插入元数据注释块。它看起来像这样:

Function New-GHIssue {
 <# PSFunctionInfo
 Version 1.1.0
 Author Jeffery Hicks
 CompanyName JDH IT Solutions, Inc.
 Copyright (c) JDH IT Solutions, Inc.
 Description Create a Github issue using gh.exe
 Guid 99b832ff-f003-4394-baca-7043b1f13ab2
 Tags github,profile
 LastUpdate 4/22/2021 8:56 AM
 Source C:\Scripts\New-GHIssue.ps1
 #>
 [cmdletbinding(SupportsShouldProcess)] 
Param( ...

模块命令 Get-PSFunctionInfo 将处理加载到 PowerShell 会话中的所有函数并向您显示独立函数。这是默认视图。

[玩转系统] 管理 PowerShell 功能的更好方法

该模块包括一个带有附加命名视图的自定义格式文件。

[玩转系统] 管理 PowerShell 功能的更好方法

我尝试设计一个丰富的对象,以便在搜索或检查函数时具有灵活性。

[玩转系统] 管理 PowerShell 功能的更好方法

[玩转系统] 管理 PowerShell 功能的更好方法

添加PSFunctionInfo

虽然获取信息适用于加载的函数,但添加函数元数据必须更新源 .ps1 文件。您将使用的命令是 New-PSFunctionInfo。

New-PSFunctionInfo -Name Show-WeatherSummary -Path C:\scripts\show-weathersummary.ps1 -Tags profile,web -Author "Jeff Hicks" -CompanyName "JDH IT Solutions, Inc." -Copyright "(c) 2021 JDH IT Solutions, Inc" -Description "display weather snapshot" -Version "1.0.0" -Verbose

[玩转系统] 管理 PowerShell 功能的更好方法

我使用了所有参数,尽管其中一些参数具有默认值。您可以看到将插入的元数据。请注意,这**更新 ps1 文件。

[玩转系统] 管理 PowerShell 功能的更好方法

局限性

有一些限制。首先,该命令不适用于单行函数声明,如下所示:

Function Get-Noun {Get-Command -CommandType Function,Cmdlet | group noun -NoElement | sort count -Descending }

该函数应类似于以下之一:

Function Get-Noun {
 Param()
 Get-Command -CommandType Function,Cmdlet | 
 Group noun -NoElement | sort count -Descending 
 }
 Function Get-Noun 
 {
 Param()
 Get-Command -CommandType Function,Cmdlet | 
 Group noun -NoElement | sort count -Descending 
 }

它还假设您在同一个 .ps1 文件中没有相同函数的多个副本。我假设您想要管理的独立函数比几行代码稍微复杂一些。

编辑 PSFunctionInfo 元数据

该模块的当前版本没有用于编辑、更新或从文件中删除函数元数据的命令。我希望如果您正在编辑该函数,您可以同时修改元数据块。请注意不要调整注释块的间距或格式。我尝试了几种方法,并认为多行注释块在易用性和管理之间取得了适当的平衡。

PSFunctionInfo默认值

最后,尽管 New-PSFunctionInfo 有一些默认参数值,但由于您可能希望在函数元数据中保持一定的一致性,因此该模块包含一些用于管理默认值的命令。您可以运行 Set-PSFunctionInfoDefaults 来指定元数据默认值,例如作者和公司。该命令将在 $Home 下创建一个名为 psfunctioninfo-defaults.json 的 JSON 文件。当您导入 PSFunctionInfo 模块时,如果找到此文件,则会导入该文件并用于设置 $PSDefaultParameterValues 中的条目。

您可以随时设置新的默认值。使用 Get-PSFunctionInfoDefaults 查看您的设置。如果进行更改,您可以重新导入模块或运行 Update-PSFunctionInfoDefaults 来刷新 $PSDefaultParameterValues。如果卸载该模块,则需要手动删除 JSON 文件。

你需要这个吗?

如果这看起来像您需要的东西,我希望您安装该模块并尝试一下。我建议您对要修改的所有文件进行备份。当然,作为专业人士,这是理所当然的!请使用存储库的 Github Issues 部分发布任何评论、错误或功能请求。我希望在删除预发布标签之前得到一些现实世界的反馈。在此先感谢您的帮助。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯