![Powershell,将参数列表通过管道传输到命令](https://linux22.com/image/1574946/Powershell%EF%BC%8C%E5%B0%86%E5%8F%82%E6%95%B0%E5%88%97%E8%A1%A8%E9%80%9A%E8%BF%87%E7%AE%A1%E9%81%93%E4%BC%A0%E8%BE%93%E5%88%B0%E5%91%BD%E4%BB%A4.png)
我正在编写 powershell v3 脚本来在 Active Directory 中创建用户。
为此,我使用了 new-ADUser comlet。我想执行一个命令来创建用户并将所有选项设置在一个集合中,但考虑到我要设置的设置太多,最终我会得到一个非常长的难以阅读的命令。相反,我更喜欢创建一些内容,将其通过管道传输到 new-aduser 并实现相同的目的。
我尝试了以下操作:
$param = @()
$param.Name = "Test Name"
$param.GivenName = "Test"
$param.Surname = "Test"
$param.Enabled = 1
$param | new-aduser
但是,如果我执行以下操作,它就会起作用:
new-aduser -name "Test Name" -GivenName "Test" -Surname "Test" -Enabled 1
如果我执行此操作,它会说我只能在命名正确的情况下才能执行此操作。是的...那么我做错了什么,或者还有其他方法可以让参数列在下面并将其发送给 new-aduser 吗?我可以将数组转换为对象并使其工作吗?如果可以,怎么做?
如果我能以某种方式仅使用 new-aduser 并将它们列在彼此下面,那么这也可以,但我认为 Powershell 对输入的要求不像 php 那样宽松。
提前致谢。 :)
答案1
来自 嘿,脚本小伙!博客 以下是这个例子:
Import-Module activedirectory
$users = @{
"name" = "fred"
"givenName" = "manfred"
"l" = "lexington"
}
New-ADUser @users
AStack Overflow 答案
还解释了如何使用该OtherAttributes
参数,如果您需要:
$users = @{
"name" = “fred
"givenName" = “Manfred"
"l" = "lexington"
"OtherAttributes" = @{
'extensionAttrbute1' = "Test"
}
}