在过去的几个月里,我一直在深入研究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 /我是否正确格式化了所有内容?
答案 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"