我想填充我在$ PROFILE中创建的Powershell函数的Description属性。我想在Description属性中添加一个值,例如"在个人PROFILE"中创建。这可能吗?
目前,如果我检查我的功能描述,我发现没有填充,例如:
Get-Command -Type Function -Name get-* | Select-Object -Property Name, Description -First 10
Name Description
---- -----------
Get-AlertLog
Get-AllColors
Get-AppBackgroundTask
Get-AppvVirtualProcess
Get-AppxLastError
Get-AppxLog
Get-AssignedAccess
Get-AutologgerConfig
Get-BCClientConfiguration
Get-BCContentServerConfiguration
填充值后,我可以搜索并快速查看我的功能创建位置,或者他们的功能等等。
谢谢。
+〜+〜+〜+〜+〜+〜+〜+〜+〜+〜+〜+〜+〜+〜+〜+〜+〜+〜+〜+〜+〜+〜+〜 〜+〜+〜+〜+〜+〜+〜+〜+〜+〜+〜+〜+〜+〜+〜+〜+〜
注意:
我不想通过Get-Help检索信息,而是填充Type的一些属性:System.Management.Automation.FunctionInfo:
Get-Command -Type Function -Name Get-AllColors | Get-Member
TypeName: System.Management.Automation.FunctionInfo
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ResolveParameter Method System.Management.Automation.ParameterMetadata ResolveParameter(string name)
ToString Method string ToString()
CmdletBinding Property bool CmdletBinding {get;}
CommandType Property System.Management.Automation.CommandTypes CommandType {get;}
DefaultParameterSet Property string DefaultParameterSet {get;}
Definition Property string Definition {get;}
Description Property string Description {get;set;}
HelpFile Property string HelpFile {get;}
Module Property psmoduleinfo Module {get;}
ModuleName Property string ModuleName {get;}
Name Property string Name {get;}
Noun Property string Noun {get;}
Options Property System.Management.Automation.ScopedItemOptions Options {get;set;}
OutputType Property System.Collections.ObjectModel.ReadOnlyCollection[System.Management.Automation.PS...
Parameters Property System.Collections.Generic.Dictionary[string,System.Management.Automation.Paramet...
ParameterSets Property System.Collections.ObjectModel.ReadOnlyCollection[System.Management.Automation.Co...
RemotingCapability Property System.Management.Automation.RemotingCapability RemotingCapability {get;}
ScriptBlock Property scriptblock ScriptBlock {get;}
Source Property string Source {get;}
Verb Property string Verb {get;}
Version Property version Version {get;}
Visibility Property System.Management.Automation.SessionStateEntryVisibility Visibility {get;set;}
HelpUri ScriptProperty System.Object HelpUri {get=$oldProgressPreference = $ProgressPreference...
要问的另一种方法是"如果无法使用值填充属性并通过Select-Object -Property检索它们,为什么会有这样的类型?"
谢谢。
答案 0 :(得分:3)
答案 1 :(得分:1)
您可以使用Comment-Based Help向您的功能添加说明(以及许多其他信息):
SYNTAX FOR COMMENT-BASED HELP The syntax for comment-based help is as follows: # .< help keyword> # <help content> -or - <# .< help keyword> < help content> #>
示例:
function Add-Extension { param ([string]$Name,[string]$Extension = "txt") $name = $name + "." + $extension $name <# .SYNOPSIS Adds a file name extension to a supplied name. .DESCRIPTION Adds a file name extension to a supplied name. Takes any strings for the file name or extension. }
答案 2 :(得分:0)
到目前为止,响应并没有回答所提出的实际问题,这是一个很好的问题,即使添加帮助是一个好的和有用的想法,无论是基于注释还是完整的XML帮助。
问题在于,基于注释的帮助仅提供&#34;描述&#34;对于函数HELP,而不是运行Get-Command时显示的属性。
使用Get-Command获取描述是一个非常有用且独立的想法。
但是,函数的某些属性是(直接)可设置的,我们可以通过原始问题中显示的 Get-Member -membertype属性来发现它,其输出包括(部分)答案:
Description Property string Description {get;set;}
会员财产&#39;描述&#39;可以直接设置,,如属性定义的结尾所示:{get; set ;}:
答案:因此我们可以通过直接分配轻松设置函数实际定义属性:*
(Get-Command -Type Function -Name Get-AllColors).Description = 'Defined in $Profile'
# or
(Get-Command -Type Function -Name Get-AllColors).Description = "Defined in the $Profile"
我们可以很容易地找到所有可直接设置的属性。
gcm mypshost | get-member | findstr "set;"
# Typically only shows 3 properties unless the function was defined in a module
Description
Options
Visibility
或许甚至更好的是设置&#34;来源&#34;现在包含在Get-Command的默认输出中的属性(虽然这不是通过直接赋值设置的。)
使用适当的&#34;模块清单&#34;在模块中创建功能。允许设置大多数/所有这些属性,这些属性在直接定义的函数上通常是空白的。
来源将是&#34;模块&#34;定义函数,如果在模块中设置了版本,也将设置版本。
不幸的是,&#34; Set-ItemProperty&#34; &#34;功能&#34;不支持命令。 PSProvider(由Registry Provider和许多其他人提供。以下失败(在版本2.0和5.1上):
Set-ItemProperty function:mypshost -Name Description -Value 'only testing'
虽然它适用于文件的类似语法:
Set-ItemProperty(dir ic.ps1)-Name LastWriteTime -Value(get-date)
另一个例子是&#34; OutputType&#34;可以使用高级函数参数块的[CmdletBinding()]属性中的一个选项进行设置:
答案 3 :(得分:0)
我认为HerbM在寻找的是快速提醒功能的功能,而不是替代帮助。两者都有很好的理由。例如,我有一个显示命令列表然后执行的函数。如果输入:
示例
gcm na|select -property name,description,DisplayName
Name Description DisplayName
---- ----------- -----------
NA RB Do a command with no arguments. NA -> Do_Noarg
GCM列出了创建别名NA时所包含的简短描述。
如果GCM还列出功能说明而不是空白,将很有用:
示例
gcm do_noarg|select -property name,description,Definition
Name Description Definition
---- ----------- ----------
Do_Noarg dr ~\PS1\No_Arg\*.ps1 Invoke-Expression
我相信HerbM并不是在寻找gcm或任何其他工具来代替帮助,而只是希望对功能进行快速的单行描述。 如果Description仅是将来发布的“功能”的占位符,那么请告知所有人。