Powershell DataTable,Select 过滤器不接受单引号字符
Powershell DataTable,Select Filter does not accept single quote character
我正在使用 Powershell 针对数据表编写简单的名称搜索。代码如下:
$filter = "Name = '$aContact'"
$arow = $dt_resources.Select($filter)
除非 $aContact 包含单引号 (') 字符,如“O'Connor”,否则一切正常。
我该如何解决这个问题?
提前致谢。
已经对问题的解决方案发表了评论,但将其作为答案,您可以通过将它们加倍来逃避 '
。我添加了一个简单的函数,它也将作为可能的 $null
输入的解决方法,因为在这种情况下两种方法(.Contains
和 .Replace
)都会抛出异常。
$dtt = [System.Data.DataTable]::new()
'Name', 'Value' | ForEach-Object{
$dtt.Columns.Add([System.Data.DataColumn]::new($_))
}
$row = $dtt.NewRow()
$row.Name = "O'Connor"
$row.Value = [random]::new().Next()
$dtt.Rows.Add($row)
$row = $dtt.NewRow()
$row.Name = "Doe"
$row.Value = [random]::new().Next()
$dtt.Rows.Add($row)
function CheckQuery {
param(
[parameter(ValueFromPipeline)]
[string]$Value
)
if($Value.Contains("'")) { return $Value.Replace("'","''") }
return $Value
}
"O'Connor", "Doe", $null | ForEach-Object {
$filter = "Name = '{0}'" -f ($_ | CheckQuery)
$dtt.Select($filter)
}
我正在使用 Powershell 针对数据表编写简单的名称搜索。代码如下:
$filter = "Name = '$aContact'"
$arow = $dt_resources.Select($filter)
除非 $aContact 包含单引号 (') 字符,如“O'Connor”,否则一切正常。
我该如何解决这个问题?
提前致谢。
'
。我添加了一个简单的函数,它也将作为可能的 $null
输入的解决方法,因为在这种情况下两种方法(.Contains
和 .Replace
)都会抛出异常。
$dtt = [System.Data.DataTable]::new()
'Name', 'Value' | ForEach-Object{
$dtt.Columns.Add([System.Data.DataColumn]::new($_))
}
$row = $dtt.NewRow()
$row.Name = "O'Connor"
$row.Value = [random]::new().Next()
$dtt.Rows.Add($row)
$row = $dtt.NewRow()
$row.Name = "Doe"
$row.Value = [random]::new().Next()
$dtt.Rows.Add($row)
function CheckQuery {
param(
[parameter(ValueFromPipeline)]
[string]$Value
)
if($Value.Contains("'")) { return $Value.Replace("'","''") }
return $Value
}
"O'Connor", "Doe", $null | ForEach-Object {
$filter = "Name = '{0}'" -f ($_ | CheckQuery)
$dtt.Select($filter)
}