如何获取有关PowerShell cmdlet的更多信息?

时间:2015-10-29 14:34:43

标签: powershell scripting powershell-v3.0

我已经在谷歌上搜索了Web-AdministrationSet-WebConfiguration -PSPath IIS:\ -Filter /system.webServer/security/authentication/windowsAuthentication -Metadata overrideMode -value Allow cmdlet几个小时无济于事。它的MSDN源代码并未解释-Metadata参数接受的 作为输入。我在部署脚本中运行此命令:

Get-WebConfiguration -PSPath IIS:\ -Filter /system.webServer/security/authentication/windowsAuthentication -Metadata overrideMode

我正在开发一个读取这些值的库,并在用户的环境不符合规范时提醒用户,因此我尝试使用:

A positional parameter cannot be found that accepts argument 'overrideMode'.

但我收到错误:pcl::RandomSampleConsensus

我确实只是使用这个确切的语法来设置这个确切的参数

如何在PowerShell中找到有关参数的更多信息?是否有一个cmdlet,或者我只是使用Get-WebConfiguration错误?

1 个答案:

答案 0 :(得分:2)

您获得的具体错误是由于-Metadata参数是一个开关 - 它不接受任何参数。

指定-Metadata开关时,返回的对象包含Metadata属性。

获取overrideMode的值:

(Get-WebConfiguration -Filter "/node/filter" -Metadata).Metadata.overrideMode

发现命令详细信息:

(我以Test-Path为例,但这适用于任何cmdlet)

您始终可以从Get-Command -Syntax获取有关cmdlet 语法的最基本信息:

PS C:\> Get-Command Test-Path -Syntax

Test-Path [-Path] <string[]> [-Filter <string>] [-Include <string[]>] [-Exclude <string[]>] [-PathType <TestPathType>]
[-IsValid] [-Credential <pscredential>] [-UseTransaction] [-OlderThan <datetime>] [-NewerThan <datetime>]
[<CommonParameters>]

Test-Path -LiteralPath <string[]> [-Filter <string>] [-Include <string[]>] [-Exclude <string[]>] [-PathType
<TestPathType>] [-IsValid] [-Credential <pscredential>] [-UseTransaction] [-OlderThan <datetime>] [-NewerThan
<datetime>] [<CommonParameters>]

Get-Command返回CommandInfo个对象,您可以使用它来深入检查参数。

举个例子,让我们来看看Get-WebConfiguration -Metadata参数:

PS C:\> (Get-Command Get-WebConfiguration).Parameters["Metadata"]

Name            : Metadata
ParameterType   : System.Management.Automation.SwitchParameter
ParameterSets   : {[__AllParameterSets, System.Management.Automation.ParameterSetMetadata]}
IsDynamic       : False
Aliases         : {}
Attributes      : {__AllParameterSets}
SwitchParameter : True

在这里我们可以看到-Metadata实际上是一个开关(注意SwitchParameter : True属性)

要检索有关cmdlet的文档,您始终可以使用Get-Help cmdlet获取有关特定cmdlet的perldoc / manpage类输出。由于文档只是文本,因此您可以将其传递给more以逐步执行它(再次,非常类似于联机帮助页或perldoc):

# Get a basic summary
Get-Help Test-Path

# Get more comprehensive summary
Get-Help Test-Path -Detailed

# Get the full documentation including examples
Get-Help Test-Path -Full

# Get just the examples
Get-Help Test-Path -Examples

# Get the help section about a specific parameter
Get-Help Test-Path -Parameter Path