如何调用"Invoke-MgSubscribeGroup"?
How to call "Invoke-MgSubscribeGroup"?
有一个 PowerShell cmdlet Invoke-MgSubscribeGroup
我想这样调用:
Invoke-MgSubscribeGroup -GroupId da2d17a7-64a5-43e5-9d95-7b70333dd78c
@{ UserId = "ed3d927d-7999-459f-955d-2afc272bd4d4" }
(分成多行以提高可读性)
调用它时,我收到错误消息:
A positional parameter cannot be found that accepts argument "System.Collections.Hashtable".
因为我没有深入了解 PowerShell,所以我一定对如何传递哈希表有一些错误的理解,或者我误解了 the documentation 说:
...To create the parameters described below, construct a hash table containing the appropriate properties...
我的问题
调用 Invoke-MgSubscribeGroup
cmdlet 并传递用户 ID 的正确语法是什么?
在进一步调查和反复阅读文档后,我找到了正确的语法:
Invoke-MgSubscribeGroup -InputObject @{
UserId = "ed3d927d-7999-459f-955d-2afc272bd4d4";
GroupId = "da2d17a7-64a5-43e5-9d95-7b70333dd78c" }
(分成多行以提高可读性)
我现在面临权限问题,但这超出了这个问题的范围,因为我只要求提供正确的语法。
详细说明:
PowerShell 的 syntax diagrams - 通过 Invoke-MgSubscribeGroup -?
或 Get-Command -Syntax Invoke-MgSubscribeGroup
在本地可用 - 包含所有相关信息。
尽管如此,它们并不容易阅读,尤其是在本地,并且还有未来改进的空间。
引用自Invoke-MgSubscribeGroup
's documentation:
Invoke-MgSubscribeGroup
-GroupId <String>
# ...
Invoke-MgSubscribeGroup
-InputObject <IGroupsIdentity>
# ...
每个(部分)引用代表一个不同的 parameter set,即代表不同特征组的参数的唯一组合。
-GroupId
和 -InputObject
在 不同的 参数集中 排他性 对于每个,告诉您不能在给定的调用中同时使用它们 both(它们是您错误尝试的方式),即它们是 互斥的 .
此外,假设参数 names -GroupId
和 -InputObject
是 not包含在 [...]
中意味着您只能将 named,而不是 positional 参数传递给它们 - 也就是说,您必须在参数之前使用参数名称 绑定到这些参数 ;例如,-GroupId foo
而不仅仅是 foo
.
按照惯例,名为 -InputObject
的参数通常用于表示可以通过管道 提供的值,如参数的说明说明 Accept pipeline input: True
- 在本地,您可以使用 Get-Help -Full Invoke-MgSubscribeGroup
或 - 具体参数 - 使用 Get-Help Invoke-MgSubscribeGroup -Parameter InputObject
来查看
通常,多个输入对象可以仅(有意义地)通过管道提供;也就是说,-InputObject
通常只是一个 实现细节 ,其目的是促进 管道输入 - 请参阅 GitHub issue #4242。
GitHub issue #4135建议制作语法图直接反映哪些参数接受管道输入。
关于 Invoke-MgSubscribeGroup
的文档,具体来说(这似乎非常稀疏):
帮助主题包含无示例(您通常可以在本地使用Get-Help -Examples Invoke-MgSubscribeGroup
请求)
-InputObject
参数的数据类型,<IGroupsIdentity>
(Microsoft.Graph.PowerShell.Models.IGroupsIdentity
)好像没有自己的文档;它仅在帮助主题的“注释”部分中描述为接受 hashtable (@{ ... }
),以及支持的条目列表(键和值类型)。
综上所述:您可以通过管道传递哈希表,如下所示:
@{
UserId = 'ed3d927d-7999-459f-955d-2afc272bd4d4'
GroupId = 'da2d17a7-64a5-43e5-9d95-7b70333dd78c'
} | Invoke-MgSubscribeGroup
与将 参数 传递给 -InputObject
相比,这种方法的优势在于它允许您传递 多个 哈希表采取行动。
有一个 PowerShell cmdlet Invoke-MgSubscribeGroup
我想这样调用:
Invoke-MgSubscribeGroup -GroupId da2d17a7-64a5-43e5-9d95-7b70333dd78c
@{ UserId = "ed3d927d-7999-459f-955d-2afc272bd4d4" }
(分成多行以提高可读性)
调用它时,我收到错误消息:
A positional parameter cannot be found that accepts argument "System.Collections.Hashtable".
因为我没有深入了解 PowerShell,所以我一定对如何传递哈希表有一些错误的理解,或者我误解了 the documentation 说:
...To create the parameters described below, construct a hash table containing the appropriate properties...
我的问题
调用 Invoke-MgSubscribeGroup
cmdlet 并传递用户 ID 的正确语法是什么?
在进一步调查和反复阅读文档后,我找到了正确的语法:
Invoke-MgSubscribeGroup -InputObject @{
UserId = "ed3d927d-7999-459f-955d-2afc272bd4d4";
GroupId = "da2d17a7-64a5-43e5-9d95-7b70333dd78c" }
(分成多行以提高可读性)
我现在面临权限问题,但这超出了这个问题的范围,因为我只要求提供正确的语法。
详细说明
PowerShell 的 syntax diagrams - 通过 Invoke-MgSubscribeGroup -?
或 Get-Command -Syntax Invoke-MgSubscribeGroup
在本地可用 - 包含所有相关信息。
尽管如此,它们并不容易阅读,尤其是在本地,并且还有未来改进的空间。
引用自Invoke-MgSubscribeGroup
's documentation:
Invoke-MgSubscribeGroup
-GroupId <String>
# ...
Invoke-MgSubscribeGroup
-InputObject <IGroupsIdentity>
# ...
每个(部分)引用代表一个不同的 parameter set,即代表不同特征组的参数的唯一组合。
-GroupId
和-InputObject
在 不同的 参数集中 排他性 对于每个,告诉您不能在给定的调用中同时使用它们 both(它们是您错误尝试的方式),即它们是 互斥的 .此外,假设参数 names
-GroupId
和-InputObject
是 not包含在[...]
中意味着您只能将 named,而不是 positional 参数传递给它们 - 也就是说,您必须在参数之前使用参数名称 绑定到这些参数 ;例如,-GroupId foo
而不仅仅是foo
.按照惯例,名为
来查看-InputObject
的参数通常用于表示可以通过管道 提供的值,如参数的说明说明Accept pipeline input: True
- 在本地,您可以使用Get-Help -Full Invoke-MgSubscribeGroup
或 - 具体参数 - 使用Get-Help Invoke-MgSubscribeGroup -Parameter InputObject
通常,多个输入对象可以仅(有意义地)通过管道提供;也就是说,
-InputObject
通常只是一个 实现细节 ,其目的是促进 管道输入 - 请参阅 GitHub issue #4242。GitHub issue #4135建议制作语法图直接反映哪些参数接受管道输入。
关于 Invoke-MgSubscribeGroup
的文档,具体来说(这似乎非常稀疏):
帮助主题包含无示例(您通常可以在本地使用
Get-Help -Examples Invoke-MgSubscribeGroup
请求)-InputObject
参数的数据类型,<IGroupsIdentity>
(Microsoft.Graph.PowerShell.Models.IGroupsIdentity
)好像没有自己的文档;它仅在帮助主题的“注释”部分中描述为接受 hashtable (@{ ... }
),以及支持的条目列表(键和值类型)。
综上所述:您可以通过管道传递哈希表,如下所示:
@{
UserId = 'ed3d927d-7999-459f-955d-2afc272bd4d4'
GroupId = 'da2d17a7-64a5-43e5-9d95-7b70333dd78c'
} | Invoke-MgSubscribeGroup
与将 参数 传递给 -InputObject
相比,这种方法的优势在于它允许您传递 多个 哈希表采取行动。