Sql server 为什么在插入信息时重复我的值?

Sql server 为什么在插入信息时重复我的值?,sql-server,powershell,active-directory,Sql Server,Powershell,Active Directory,我正在创建一个脚本,该脚本通过Active directory,然后在输入信息时根据另一个查询搜索信息,而Active directory中没有任何信息。即使没有该站点的信息,最后输入的区域中的信息也会进入该SQL行。我是否应该在foreach循环中创建一个if-else语句来解决这个问题 while($rows.Read()){ $SITEINFO = $rows['ActiveDirectoryOU'] $ADARRAY= Get-ADGroupMember -Id

我正在创建一个脚本,该脚本通过Active directory,然后在输入信息时根据另一个查询搜索信息,而Active directory中没有任何信息。即使没有该站点的信息,最后输入的区域中的信息也会进入该SQL行。我是否应该在foreach循环中创建一个if-else语句来解决这个问题

while($rows.Read()){
    $SITEINFO = $rows['ActiveDirectoryOU']

        $ADARRAY= Get-ADGroupMember -Identity $SITEINFO | Get-ADUser -Properties ('Mail') 

    ForEach($OBJECT in $ADARRAY){ 

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

        $INSERT = "INSERT INTO $TABLE VALUES ('$USER','$SITECODE','$EMAIL', '$NAME');"
            $SQL = $SQLCON.CreateCommand() 
            $SQL.CommandText = $INSERT    
            $SQL.ExecuteNonQuery()
        } 
      }
    }

$SQLCONN.Close()

ActiveDirectoryOU字段的数据类型是什么?ActiveDirectoryOU数据类型是varchar为什么要尝试ForEach字符串?内存持久性是我的第一个猜测。在插入后将值设置为$null或空字符串以进行检查。如@EBGreen所说,这可能与作用域有关。在执行
$NAME=$OBJECT.NAME
之前,请设置
$NAME='
,如果需要,请在插入之前检查这些值是否只是
'
,并跳过它们。数组中可能有一些行是空的,这就是原因。