Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 是否可以从Active Directory的MemberOf返回单个值并插入到SQL表中_Powershell_Active Directory - Fatal编程技术网

Powershell 是否可以从Active Directory的MemberOf返回单个值并插入到SQL表中

Powershell 是否可以从Active Directory的MemberOf返回单个值并插入到SQL表中,powershell,active-directory,Powershell,Active Directory,我试图从MemberOf列中获取一个值,是否可以解析该值并仅返回该字符串的一部分,例如值0012? 这是类别成员的输出 CN=Active VMS Users,OU=VMS,DC=evilcorp,DC=net CN=JOJOE\, MOE- 0012, OU=Site Groups,OU=VMS,DC=evilcorp,DC=net 下面是我的代码 $ADARRAY= Get-ADGroupMember -Identity "Domain Users" -Recursive | Get-A

我试图从MemberOf列中获取一个值,是否可以解析该值并仅返回该字符串的一部分,例如值0012? 这是类别成员的输出

CN=Active VMS Users,OU=VMS,DC=evilcorp,DC=net CN=JOJOE\, MOE- 0012,
OU=Site Groups,OU=VMS,DC=evilcorp,DC=net
下面是我的代码

$ADARRAY= Get-ADGroupMember -Identity "Domain Users" -Recursive | 
Get-ADUser -Filter "Mail -like '*'" -and "MemberOf -like '*'"| 
Get-ADUser -Properties ('Mail','MemberOf')

<# this was my first try #>
    # $CN = $CN -split '^CN=(.+?-,\),(?:OU|CN)=.+','$1'

ForEach($OBJECT in $ADARRAY){ 

    $NAME = $OBJECT.Name 
    $USER = $OBJECT.SamAccountName
    $EMAIL = $OBJECT.Mail

<# this was my second try #>
    ForEach($OBJECT in $ADARRAY.Memberof){
          $CN = New-Object PSCustomObject -Property @{'CN' = $CN}

        $CN.OBJECT = $CN.Split(',')[0]

    $INSERT = "INSERT INTO $TABLE VALUES ('$USER','$CN','$EMAIL', '$NAME');"
        $SQL.CommandText = $INSERT 

        $SQL.ExecuteNonQuery()

    } 
  }
}

$SQLCON.Close()
$ADARRAY=Get-ADGroupMember-Identity“域用户”-递归
获取ADUser-过滤器“类邮件'*'”和“类成员'*'”
获取ADUser-Properties('Mail','MemberOf')
#$CN=$CN-拆分“^CN=(.+?-,\),(?:OU | CN)=.+”,“$1”
ForEach($ADARRAY中的对象){
$NAME=$OBJECT.NAME
$USER=$OBJECT.SamAccountName
$EMAIL=$OBJECT.Mail
ForEach($ADARRAY.Memberof中的对象){
$CN=新对象PSCustomObject-属性@{'CN'=$CN}
$CN.OBJECT=$CN.Split(',')[0]
$INSERT=“插入到$TABLE值(“$USER”、“$CN”、“$EMAIL”、“$NAME”);”
$SQL.CommandText=$INSERT
$SQL.ExecuteNonQuery()
} 
}
}
$SQLCON.Close()

是的,您可以使用正则表达式来执行此操作。 只需搜索你想要的数据,分割和/或提取你想要的

Windows PowerShell:使用正则表达式提取字符串

'techtalk.gfi.com/windows powershell使用正则表达式提取字符串'

PowerShell-使用正则表达式从字符串中获取子字符串

地狱之路

使用正则表达式

'lazywinadmin.com/2013/10/powershell从string.html中获取子字符串'

在这里可以看到一个完整的高级正则表达式:

“community.idera.com/powershell/powertips/b/ebookv2”第13章。正文 和正则表达式 'community.idera.com/powershell/powertips/b/ebookv2/posts/chapter-13-text-and-regular-expressions'

$input_path = ‘c:\ps\emails.txt’ $output_file =
‘c:\ps\extracted_addresses.txt’ $regex =
‘\b[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b’ select-string
-Path $input_path -Pattern $regex -AllMatches | % { $_.Matches } | % { $_.Value } > $output_file
("OU=MTL1,OU=CORP,DC=FX,DC=LAB" -split ",")[0].substring(3)
("OU=MTL1,OU=CORP,DC=FX,DC=LAB" -split ',*..=')[1]