Powershell,将参数列表通过管道传输到命令

Powershell,将参数列表通过管道传输到命令

我正在编写 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"
     }
}

相关内容