【问题标题】:Can't get PS SQL insert to work. Multiple "ExecuteNonQuery" errors无法让 PS SQL 插入工作。多个“ExecuteNonQuery”错误
【发布时间】:2018-08-30 20:42:31
【问题描述】:

我有下面的 PS 从 AD 中获取数据并将其放入 CSV 文件中。然后它应该将数据插入 SQL 服务器并覆盖现有数据。

由于某种原因,我无法让它工作。花了最后 5 个小时搜索这里和其他地方,但无济于事。

Get-ADGroupMember -Identity "CN=Nearmiss APP,CN=Users,DC=domain,DC=AD" -Recursive | 
Get-ADUser -Properties Mail,displayName | 
Select-Object displayName,Mail | 
Export-CSV -Path D:\autostore\GetADusers\NearMissApp.csv -NoTypeInformation -encoding "unicode" -force
# (Get-Content D:\autostore\GetADusers\NearMissApp-Temp.csv) | % {$_ -replace ‘"‘, ''} | out-file D:\autostore\GetADusers\NearMissApp.csv -Force


#Connect to the SQL database NearMissApp-Users
$sqlsvr = "sql"
$database = "autostore"
$table = "NearMissApp-Users"
$csvFile = "D:\autostore\GetADusers\NearMissApp.csv"


#Create SQL Connection
$cmd.Connection = New-Object System.Data.SqlClient.SqlConnection("Data Source=$sqlsvr;Initial Catalog=$database; Integrated Security=true")
$cmd.command = $connection.CreateCommand()
$cmd.Connection.Open()

Import-Csv $csvFile -Header displayName,Mail | % {
  $cmd.CommandText = "INSERT INTO $table (displayName, Mail) VALUES ('$($_.displayName)', '$($_.Mail)')"   | Out-host
  $cmd.ExecuteNonQuery()
  }

  $cmd.connection.close

我得到的错误是:

使用“0”参数调用“ExecuteNonQuery”的异常:“ExecuteNonQuery:CommandText 属性尚未初始化” 在 D:\autostore\GetADusers\GetUsers-NearMiss-App-DBupdate.ps1:23 char:3 + $cmd.ExecuteNonQuery() + ~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : InvalidOperationException

【问题讨论】:

  • 我要尝试的第一件事是将 SQL 命令文本写入文件或屏幕,以便检查是否有有效的 SQL。
  • $cmd 是如何定义的?
  • 看起来 $cmd.command 或 $cmd.CommandText 是一个错误的符号。

标签: powershell command-text


【解决方案1】:

$cmd.CommandText = ... 行中删除| Out-host

【讨论】:

    猜你喜欢
    • 2015-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-01
    • 2012-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多