【发布时间】:2018-12-20 16:27:23
【问题描述】:
我有一个脚本,其中有 2 个部分存在问题。第 1 部分是一系列变量,这些变量具有使用 Get-ADUser 满足某些条件的用户。第 2 部分,我想将第 1 部分中的系统数组添加到列表中,以便在第 3 部分添加数据与 $tag 一起添加到一个大数组中,以便在第 4 部分(未显示)中一切都可以立即处理。
重要的是,第 1 部分中的所有变量都以单个数组中的标签结束,并且当更多变量添加到第 1 部分时,很容易添加。这背后的想法是人们可以添加到第 1 部分,在第 2 部分中引用它,而不必重复第 3 和第 4 部分中的代码。
问题:
在第 3 部分的第 2 行,我无法将 $collection 数组拆分为数组和标签,以添加到 $data 数组中。
#1
...
$O365_TransitionGroupMembers = $O365_TransitionGroupMembers | Select-Object -Unique
#2
$collection = `
(($VIPUser),"O365_VIP"),
(($O365_TransitionGroupMembers),"O365_Transition")
...
#3
$collection | ForEach-Object {
$expression,$tag = $_.split(",")
$data = ForEach ($User in $expression) {
#Create new object for passing back the required information
$Result = New-Object PSObject
$Result | Add-Member -MemberType NoteProperty -name DistinguishedName -value NotSet
...
$Result.Tag = $tag
...
编辑:
第 1 部分中的 $collection 和 $vars 都是系统数组,第 1 部分 $vars 看起来像 get-aduser。 $collection 看起来像:
14:11 C:\Users\d>$collection |飞
长度:106 LongLength:106 Rank:1 SyncRoot : {CN=XXX\, XXX,OU=XXX,OU=XXX,OU=域对象,DC=XXX,DC=XXX,DC=XXX, CN=XXX\, XXX,OU=XXX,OU=XXX,OU=域对象,DC=XXX,DC=XXX,DC=XXX, CN=XXX,OU=资源,OU=XXX,OU=域对象,DC=XXX,DC=XXX,DC=XXX, CN=XXX\, XXX,OU=XXX,OU=XXX,OU=域对象,DC=XXX,DC=XXX,DC=XXX...} IsReadOnly : False IsFixedSize : True IsSynchronized : False 计数:106
O365_VIP
长度 : 600 长度 : 600 等级 : 1 SyncRoot : {CN=XXX\, XXX C,OU=XXX,OU=用户,OU=ME-DXB-IIR,OU=域 对象,DC=XXX,DC=XXX,XXX=net, CN=XXX\, XXXv C,OU=XXX,OU=用户,OU=ME-DXB-IIR,OU=域 对象,DC=XXX,DC=XXX,DC=XXX,CN=XXX\,XXX C,OU=XXX,OU=用户,OU=ME-DXB-IIR,OU=域 对象,DC=XXX,DC=XXX,DC=XXX, CN=XXX\, XXXOU=承包商,OU=用户,OU=ME-DXB-IIR,OU=域 对象,DC=emea,DC=CorpLAN,DC=net...} IsReadOnly : False IsFixedSize : True IsSynchronized : False 计数 : 600O365_Transition
14:16 C:\Users\shielsd>$collection[0]
...
SamAccountName : XXX
SID : S-1-5-XXX-XXX-XXX-XXX-XXX
姓氏:XXX
用户主体名称:XXX.XXX@XXX.XXX
DistinguishedName : CN=XXX\, XXX,OU=XXX,OU=XXXXXX,OU=域
对象,DC=XXX,DC=XXX,DC=XXX
启用:真
ExtensionAttribute15 : XXX;XXX;O365_VIP
名字:XXX
姓名 : XXX, XXX
对象类:用户
对象GUID:XXX-XXX-XXX-XXX-XXX
SamAccountName : XXX
SID : S-1-5-21-XXX-XXX-XXX-XXX
姓氏:XXX
用户主体名称:XXX.XXX@XXX.comO365_VIP
我收到的错误是:
方法调用失败,因为 [Microsoft.ActiveDirectory.Management.ADUser] 不包含 名为“拆分”的方法。在行:2 字符:5 + $表达式,$tag = $_.split(",") + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (split:String) [], RuntimeException
【问题讨论】:
-
您能否展示
$collection包含的内容的示例?你用逗号分割$collection,但你分配它的方式让我认为值是line-separated而不是comma-separated。 -
我们需要看看
$vipuser和$O365_TransitionGroupMembers是什么。将集合放在控制台时会是什么样子会提供更好的洞察力。 -
@Matt - 或者我应该说,
$VIPUser和$O365_TransitionGroupMembers的值会很有趣。但无论如何,我认为逗号分隔的拆分在这里不起作用。 -
同意(为什么我删除了评论)。我认为第一个是标量,另一个是数组。乍一看,这可能是一个锯齿状的二维数组。
标签: arrays powershell