假设我们有3台计算机:MAIN,A和B.没有域名!(< - important!)。 只是一个工作组。计算机的IP:
主要 - 33.0.0.100
A - 33.0.0.2
B - 33.0.0.3
我们想要MAIN上的类型cmdlet并同时在A& B上执行它们。 因此,我们在所有计算机上组织Windows远程管理,并命令如
Invoke-Command -computerName 33.0.0.2 -command {dir C:\Utils} -Credential(Get-Credential)
没有问题,并在A上的文件夹 Utils 中生成文件列表。我们知道, Invoke-Command 的语法允许我们也编写像
Invoke-Command -computerName 33.0.0.2, 33.0.0.3 -command {dir C:\Utils} -Credential(Get-Credential)
这正是我们想要的,但是! A和B上的用户完全不同 - 没有相同的用户,没有相同的密码。因此,我们需要 -Credential Invoke-Command 的参数来接受凭证的ARRAY,就像 -computerName 接受计算机的ARRAY一样。
这是一个问题。有什么想法吗?
P.S。所有3台电脑都有PS版本。 5,如果它很重要。
(不能添加为评论,因此强制编辑开始帖;实际上是 Andrey Marchuk 帖子上的回复)
或者您希望计算机[0]与凭证[0]匹配吗?
完全!而且,坦率地说,我没有看到任何技术问题,invoke-command的程序员像这样进行“1对1”匹配。在这种情况下,invoke-command的用户将有3个选项:
以上两种替代方案已经实现,因此程序员只需要添加一个:
真的不认为这将是非常艰苦或漫长的工作。 无论如何,感谢您对当前情况的所有3种解决方法!
答案 0 :(得分:1)
您认为它如何运作?我们假设您有10台计算机和10个凭据。您是否希望它在尝试找到有效之前尝试每台计算机的所有凭据?或者您希望计算机[0]与凭证[0]匹配?如果您有5台计算机,但传递的凭据少于5个,那该怎么办?
你所处的情况并不典型。我看到了一些解决方案:
service
用户,并将其作为.\user
传递给Invoke-Command
Invoke-Command
上写一个简单的包装器,在最简单的情况下,它将在计算机和凭据的Invoke=Command
循环中执行foreach
。您也可以使用它来使其平行而不是foreach