首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为Active Directory在信息上创建和禁用的更新sql表

为Active Directory在信息上创建和禁用的更新sql表
EN

Stack Overflow用户
提问于 2016-10-07 01:36:33
回答 1查看 184关注 0票数 0

我在数据库中有一个用户表,我正尝试使用Createdon date更新该表,并使用Active Directory中的数据禁用on date。到目前为止,我得到的是:

代码语言:javascript
运行
复制
$SearchRoot = "OU=NonAIQ,OU=FrontOffice,DC=dev,DC=local"
$serverName = "localhost"

#$SearchRoot = "OU=NonAIQ,OU=FrontOffice,DC=dmz,DC=local"
#$serverName = "spoproddb3.dmz.local"


try {
Import-Module "sqlps" -DisableNameChecking

if ((Get-PSSnapin -Name "Quest.ActiveRoles.ADManagement" -ErrorAction SilentlyContinue) -eq $null ) {
    Add-PsSnapin "Quest.ActiveRoles.ADManagement"
}

$externalUsers = Get-QADUser -SizeLimit 0 -SearchRoot $SearchRoot | Select-Object whencreated, whenchanged
$externalUsers | % {
    $query = @"
Update tbl_EdgeUsers Set CompanyName = '$_.CreationDate'
Where UserUPN = $_.UserPrincipalName;
"@
    Write-Host "The query is $query"

    Invoke-SqlCmd -ServerInstance $serverName -Query $query -Database "EdgeDW"
}
} finally {
Remove-Module "sqlps" -ErrorAction SilentlyContinue
Remove-PsSnapin "Quest.ActiveRoles.ADManagement"
}  

现在,在创建时,我们只获取所有的值。

但由于AD不会跟踪禁用日期,我使用的是更改日期,因为一旦帐户更改,我们就不会对其进行更改。

我被卡住的部分是关于何时更改日期的逻辑。为此,我必须检查帐户是否被禁用。如果是,则使用该日期更新表。如果帐户未禁用,则忽略该值并将sql表中的值设置为'1/1/9999‘。

你们能帮我解释一下这个逻辑吗?

提前感谢您的帮助。

EN

回答 1

Stack Overflow用户

发布于 2016-10-12 21:40:11

我的头顶可能是这样的东西,尽管现在想想,如果数据集很大,在foreach循环中使用invoke-sql是一种令人讨厌的方式,可能更好的方法是将if语句的结果输出到csv或其他地方,然后对其运行invoke-sql。

代码语言:javascript
运行
复制
$users = Get-ADUser -Filter * -Properties whenchanged | Select-Object -Property UserPrincipalName, whenchanged, enabled
$disabledsql = @"
update tbl_EdgeUsers Set date = '$user.whenchanged'
Where UserUPN = '$user.UserPrincipalName';
"@
$activesql = @"
update tbl_EdgeUsers Set date = '1/1/9999
Where UserUPN = '$user.UserPrincipalName';
"@
foreach ($user in $users) 
{
  if ($user.enabled -eq 'False') 
  {
    Invoke-Sqlcmd -ServerInstance $serverName -Query $disabledsql -Database 'EdgeDW'
  }
  else 
  {
   Invoke-Sqlcmd -ServerInstance $serverName -Query $activesql -Database 'EdgeDW'
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39902354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档