【发布时间】:2015-05-27 13:31:28
【问题描述】:
我有一个只有我运行的脚本,它从 AD 中获取用户并将他们的信息放入数据库。由于@ 符号,此脚本无法插入我认为的电子邮件地址。我该如何解决这个问题?
$_.samaccountname | Get-QADGroupMember -type user -SizeLimit 0 -DontUseDefaultIncludedProperties -IncludedProperties samaccountname,DN | Select samaccountname,FirstName,LastName,Email,Manager,Office,Title,HomeDirectory,HomeDrive,PasswordLastSet,PasswordAge,PasswordExpires,AccountIsDisabled,AccountIsLockedOut,PasswordNeverExpires,Domain,Notes,CreationDate,ModificationDate,Type,Description,DN | foreach{
if (!$_.samaccountname){$samaccountname = ''} ELSE{$samaccountname = $_.samaccountname}
if (!$_.FirstName){$FirstName = ''} ELSE{$FirstName = $_.FirstName}
if (!$_.LastName){$LastName = ''} ELSE{$LastName = $_.LastName}
if (!$_.Email){$Email = ''} ELSE{$Email = $_.Email}
if (!$_.Manager){$Manager = ''} ELSE{$Manager = $_.Manager}
if (!$_.Office){$Office = ''} ELSE{$Office = $_.Office}
if (!$_.Title){$Title = ''} ELSE{$Title = $_.Title}
if (!$_.HomeDirectory){$HomeDirectory = ''} ELSE{$HomeDirectory = $_.HomeDirectory}
if (!$_.HomeDrive){$HomeDrive = ''} ELSE{$HomeDrive = $_.HomeDrive}
if (!$_.PasswordExpires){$PasswordExpires = ''} ELSE{$PasswordExpires = $_.PasswordExpires}
if (!$_.Notes){$Notes = ''} ELSE{$Notes = $_.Notes}
if (!$_.Description){$Description = ''} ELSE{$Description = $_.Description}
$cmd.CommandText = "INSERT dbo.Users (AccountName,FirstName,LastName,Email,Manager,Office,Title,HomeDirectory,HomeDrive,PasswordLastSet,PasswordAge,PasswordExpires,AccountIsDisabled,AccountIsLockedOut,PasswordNeverExpires,Domain,Notes,CreationDate,ModificationDate,Type,Description) VALUES ('"+$samaccountname+"','"+$FirstName+"','"+$LastName+"','"+$Email+"','"+$Manager+"','"+$Office+"','"+$Title+"','"+$HomeDirectory+"','"+$HomeDrive+"','"+$_.PasswordLastSet+"','"+$_.PasswordAge+"','"+$PasswordExpires+"','"+$_.AccountIsDisabled+"','"+$_.AccountIsLockedOut+"','"+$_.PasswordNeverExpires+"','"+$_.Domain+"','"+$Notes,+"','"+$_.CreationDate+"','"+$_.ModificationDate+"','"+$Description+"','"+$_.DN+"')"
$cmd.ExecuteNonQuery() | out-null
我遇到的错误
“无法将值“','”转换为类型“System.Int32”。错误:“输入字符串的格式不正确。”在 C:\Users\rld0072\Desktop\Group-Users.ps1:28 char:9 + $cmd.CommandText = "INSERT dbo.Users (AccountName,FirstName,LastName,Ema ..."
【问题讨论】:
-
你遇到了什么错误?
-
你如何确认是因为@符号
-
电子邮件中的 9 个字符是 @ 符号,尽管当该属性为空时我得到相同的错误,尽管我将其分配为空字符串。
-
我开始认为这是由于空值,但我正在处理带有 if 的那些。
标签: sql powershell