希望您可以帮我解决在本地计算机上使用备用凭据执行脚本块的问题。我一直在论坛上搜索并做一些谷歌搜索,并找到两种可能的方法来解决我的问题:
使用方法#1我有这个代码:
$res = Invoke-Command -Credential $migratorCreds -ScriptBlock {param($one, $two) Get-LocalUsers -parentNodeXML $one -migratorUser $two } -ArgumentList $xmlPRE,$migratorCreds
其中Get-LocalUsers
是存储在自定义模块(* .psm1)中的自定义函数。
我的问题是每次运行此代码时都会出现以下错误:
无法使用指定的命名参数
解析参数集
所以很明显我必须遗漏一些东西,你能帮我解决一下这个话题吗?
提前致谢...
答案 0 :(得分:26)
您遇到的错误是因为-credential
没有-computername
不能存在。
您可以尝试这种方式:
Invoke-Command -Credential $migratorCreds -ScriptBlock ${function:Get-LocalUsers} -ArgumentList $xmlPRE,$migratorCreds -computername YOURCOMPUTERNAME
答案 1 :(得分:1)
使用PowerShell相当新,想想我可以提供帮助。 你能试试吗?
我相信你没有为脚本块获取正确的参数:
param([string]$one, [string]$two)
$res = Invoke-Command -Credential $migratorCreds -ScriptBlock {Get-LocalUsers -parentNodeXML $args[0] -migratorUser $args[1] } -ArgumentList $xmlPRE, $migratorCreds
答案 2 :(得分:1)
关于Invoke-Command cmdlet的正确答案是正确的,但更广泛地说,cmdlet可以具有parameter sets,其中定义了输入参数组,因此您不能使用不是成员的两个参数相同的参数集。
如果其他任何cmdlet都遇到此错误,请查找其Microsoft文档,并查看页面顶部是否列出了不同的参数集。例如,Set-AzureDeployment的文档在页面顶部定义了三组。
答案 3 :(得分:0)
我最近正在解决相同的问题。我正在为我的Subtitle模块设计一个写cmdlet。我有六个不同的用户故事:
我最终感到非常沮丧,因为尽管这4个参数就足够了。像大多数时候一样,挫败感毫无意义,因为那是我的错。我对参数集了解得不够多。
在对文档进行了一些研究之后,我意识到问题出在哪里。了解了应如何使用参数集后,我开发了一种通用且简单的方法来解决此问题。需要一支铅笔和一张纸,但最好使用电子表格编辑器:
示例:
可以在over here中看到实际示例。
BTW:参数集中的参数唯一性是ParameterSetName
属性不支持[String[]]
的原因。真的没有任何意义。