PowerShell 中的值不能为空错误

value can not be null error in PowerShell

我正在尝试将我的 csv 文件导入到我的 sql 数据库中,但我不确定为什么它说

Exception calling "ExecuteWithResults" with "1" argument(s): "Value cannot be null.
Parameter name: sqlCommands"

尽管我的 csv 文件中没有 Null 值,而且我确保我的 table 列接受空值。


$s =  New-Object Microsoft.SqlServer.Management.Smo.Server "server name"
$db = $s.Databases.Item("LitHold")
$csvfile = import-csv -delimiter ";" -path "C:\scripts\LitHold-OneDrive\output\Return22-01-12-Return.csv"
$csvfile |foreach-object{
    $query = "insert into DailyReport VALUES ('$($_.MIN)','$($_.MID)','$($_.UPN)','$($_.Change)','$($_.Type)','$($_.HoldValue)','$($_.OneDrive)','$($_.Mailbox)','$($_.Created)','$($_.Modified)','$($_.MultMID)','$($_.Account)','$($_.ExistOD)')"
}

$result = $db.ExecuteWithResults($query)

# Show output
$result.Tables[0]

我的 csv 文件

//The top one is my columns name and it's already inside my table 
"MIN","MID","UPN","Change","Type","Hold Value","OneDrive","Mailbox","Created","Modified","Mult MID","Account","Exist OD"

"338780228","lzlcdg","lzlcdg@NAMQA.COM","Hold Created","OneDrive and Mailbox","Y","https://devf-my.sharepoint.com/personal/lzlcdg_namqa_corpqa_geuc_corp_com","lzlcdg@NAMQA.CORPQA.GEUC.CORP.COM","1/11/2022 11:38:57 AM","1/11/2022 11:38:57 AM","N","",""
"419150027","lzs8rl","lzs8rl@.corpq.com","Hold Created","OneDrive and Mailbox","Y","https://my.sharepoint.com/personal/lzs8rl_namqa_corpqa_gcom","lzs8rl@namqa.corpqa.geuc.corp.com","1/11/2022 11:39:05 AM","1/11/2022 11:39:05 AM","N","",""

不要删除 headers 列,但要仔细检查它们的书写方式.. 使用 空格

你的代码忽略了这里的代码

$($_.HoldValue) --> $($_.'Hold Value')
$($_.MultMID) --> $($_.'Mult MID')
$($_.ExistOD) --> $($_.'Exist OD')

要么保留代码并重写 headers(去掉空格),要么确保根据 headers.

使用 属性 名称

通过删除列 headers,csv 文件中的第一行将用作列 headers,除非您提供带有参数 -Header 的新行。如果多次遇到相同的字段值,删除 headers 将导致问题,因为列 headers 必须是 unique

然后就是这一行:

$result = $db.ExecuteWithResults($csvfile)

应该是

$result = $db.ExecuteWithResults($query)

并且循环遍历 csv 文件的记录并在该循环内 覆盖 您的查询字符串在每次迭代中没有意义,因此只保留最后一条记录...