PowerShell替换CSV中的文本

PowerShell替换CSV中的文本,powershell,csv,powershell-3.0,Powershell,Csv,Powershell 3.0,我正在构建一个脚本,从一个系统中提取信息,并将其放入CSV中,供另一个系统提取。不过在那之前我必须做一些数据清理。我正在从系统中提取userid,它们显示为dom\userid。为了让我的其他系统使用它,我必须只有一个没有dom的用户ID。我使用下面的代码删除dom,效果很好: $csv = Import-Csv C:\Support\Broker.csv $csv | %{ If ($_.LastConnectionUser -like "*DOM*") { $_.LastConnec

我正在构建一个脚本,从一个系统中提取信息,并将其放入CSV中,供另一个系统提取。不过在那之前我必须做一些数据清理。我正在从系统中提取userid,它们显示为dom\userid。为了让我的其他系统使用它,我必须只有一个没有dom的用户ID。我使用下面的代码删除dom,效果很好:

    $csv = Import-Csv C:\Support\Broker.csv
$csv | %{ If ($_.LastConnectionUser -like "*DOM*") { $_.LastConnectionUser -replace 'DOM', '' } }
$csv | Export-Csv C:\Support\Broker.csv -NoTypeInformation -Force
这给我留下了\userid。一旦我将\添加到替换字符串中,系统就会异常,因为它试图解释\并且无法执行替换,因此我尝试了以下操作

$csv = Import-Csv C:\Support\Broker.csv
    $csv | %{ If ($_.LastConnectionUser -like "*DOM*") { $_.LastConnectionUser -replace 'DOM`\', '' } }
    $csv | Export-Csv C:\Support\Broker.csv -NoTypeInformation -Force
我也犯了同样的错误

错误:正则表达式模式无效:DOM\u WFLD
\。
broker.ps1(24):错误:第24行字符:54
错误:+$csv |%{If($\.LastConnectionUser-like“*DOM*”){$\.LastConnectionUser-repl。。。
错误:+~~~~~~~~~~~~~~~~~~~~~~~~~~~
错误:+CategoryInfo:invalidooperation:(DOM\u WFLD
:String)[],运行时异常 错误:+FullyQualifiedErrorId:InvalidRegularExpression

我好像没办法让它工作。有人有什么想法吗

$csv = Import-Csv C:\Support\Broker.csv
    $csv | %{ If ($_.LastConnectionUser -like "*DOM*") { $_.LastConnectionUser -replace 'DOM\\', '' } }
    $csv | Export-Csv C:\Support\Broker.csv -NoTypeInformation -Force

您必须使用的转义是正则表达式1(所以是反斜杠),而不是PowerShell 1(回勾)

在包含
$csv |%{If($\.LastConnectionUser-like“*DOM*”){$\.LastConnectionUser-replace'DOM
\,'}}`

它可以被简化,变得更加复杂

$csv |%{$\.LastConnectionUser-替换'\w+\\'}

对于类似的内容,实际上不需要If语句,因为您正在执行的操作不会显著增加处理时间。此外,如果用户名包含
DOM
,则If将匹配,我认为这不是您的意图

它将替换
\
前面的所有字符,包括
\
本身。正如David解释的那样,您需要转义
\
,因为它是正则表达式中的一个特殊字符。
-replace
不带第二个参数,只会自动删除匹配项