Powershell数据表创建了一个空行问题



我正在编写一个Powershell脚本来在数据表中创建一个唯一的联系人。步骤如下:

我首先从CSV中提取数据,并将数据放在$dt_uniqueContacts数据表中(只有一列(。然后使用Rows附加其他来源的更多记录。添加

$dt_uniqueContacts.Rows.Add($arow) | Out-Null

这扩展了原来的$dt_uniqueContacts大小。我有";Out Null";在每个行中。添加操作以避免按照其他线程的建议创建空行。

在这之后,我应用了-unique使$dt_uniqueContacts成为唯一的,并将其覆盖回来。

$dt_uniqueContacts = $dt_uniqueContacts.Select("", "Contacts ASC") | Select-Object Contacts -Unique

问题是在唯一操作之后,$dt_uniqueContacts在开头创建了一个额外的行。您不能显示它,它也不会影响rows.count,但是,当执行以下操作时,它会在第一个循环(针对空行(中抛出错误。我不知道如何删除该行,也不知道如何用";如果";语句,null或""不起作用。

foreach ($r in $dt_uniqueContacts) {
$aContact = $r.Contacts
if ($aContact.Contains("'")) {...

它抛出这个错误:

Method invocation failed because [System.DBNull] does not contain a method named 'Contains'.

只有当包含任何函数(即本例中的Contains(时,才会出现此问题。如果我跳过.Contains行,$dt_uniqueContacts foreach中的$null行将不会生成错误,并像没有$null行一样执行。

有什么建议吗?

提前感谢大家。

我使用@JosefZ在评论中建议的内容,通过在细节之前使用DBNull来检测,比如->

foreach ($r in $dt_uniqueContacts) { 
$aContact = $r.Contacts 
if ([System.DBNull]::Value -ne $aContact) { 
$filter = "FullName = '$($aContact.Replace("'", "''"))'" 
$arow = $dt_resources.Select($filter)
.... 

相关内容

  • 没有找到相关文章

最新更新