【发布时间】: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 是一个错误的符号。