New-ADGroup - 在PS cmdlet中使用-join和Variable?

时间:2017-07-13 12:59:01

标签: powershell active-directory

在过去的几个月里,我一直在深入研究PS脚本,我试图编写AD组创建脚本。现在,我问以下问题:

$GroupNameRO = Read-Host -Prompt 'What Read Only AD group name do you want to use'
$GroupNameRW = Read-Host -Prompt 'What Read Write AD group name do you want to use'
$RequestNum = Read-Host -Prompt 'Input the request number for this share'

然后把它们放在一起:

New-ADGroup -name $GRPnameRW -path 'OU=Security,OU=Groups,DC=test,DC=local' -groupscope 'global' -Description -join('Request #',$RequestNum)

并最终收到此错误:

New-ADGroup : A positional parameter cannot be found that accepts argument 'System.Object[]'.
At line:1 char:1
+ New-ADGroup -name $GRPnameRW -path 'OU=Security,OU=Groups,DC=test,DC=local' -g ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [New-ADGroup], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.ActiveDirectory.Management.Commands.NewADGroup

有没有人在参数中使用-join /我是否正确格式化了所有内容?

2 个答案:

答案 0 :(得分:2)

... -Description (('Request #',$RequestNum) -join 'something')

你需要这样做。想一想:

-Description (expression)

因为Description必须是表达式的结果,我们需要将表达式括在()中,()内的所有内容都会先执行。

-join工作,我们需要将值输入其中,所以:

(values) -join 'what_are_we_joining_with'

PS。在某些情况下,你真的需要()围绕你要加入的值:'a','b' -join ""有效。但我认为这种方式更好,更直观()

答案 1 :(得分:0)

-Description参数的值不正确。这应该可以得到您正在寻找的结果:

New-ADGroup -name $GRPnameRW -path 'OU=Security,OU=Groups,DC=test,DC=local' -groupscope 'global' -Description "Request #$RequestNum"