我有一个CSV
文件,例如:
"localpath"
"C:\Users\calabresel"
"C:\Users\goslinep"
"C:\Users\deangelisr"
"C:\Users\bannont"
"C:\Users\goodwind"
我正在寻找一种仅将用户名从每个字段中隔离出来的方法。然后,我将查询AD以确定是否禁用或启用了每个用户。我还没办法弄清楚如何获得最后一块。我的想法是使用-replace将相同的字符串替换为null,如下所示:
$txt = import-csv paths1.csv | % {$_.localpath = $_.localpath -replace "C:\Users\", ""}
伴随着无效的正则表达式模式错误,我认为这是目标字符串包含特殊字符(反斜杠)的结果。然后,我开始寻找一种使powershell实际使用\的方法。那导致我尝试这个:
$txt = import-csv paths1.csv | % {$_.localpath = $_.localpath -replace [Regex]::Escape("C:\\Users\\"), ""}
还有这个
$txt = import-csv paths1.csv | % {$_.localpath = $_.localpath -replace "C:\\Users\\", ""}
这两种方法都可以停止无效的正则表达式错误,并在没有提示的情况下给我换行。但是,当我打印
$txt
变量时,它是空的...我确定我是从错误的角度和/或使用了不正确的语法来解决此问题,但是一周前刚开始使用Powershell时,我可以使用一些指导。
提供的任何帮助将不胜感激。
最佳答案
以下将导入CSV文件,然后获取路径的叶子。即用户名。
$txt = Import-Csv paths1.csv | ForEach-Object { Split-Path $_.localpath -leaf }
如果仍然要使用replace方法,只需取出
$_.localpath =
部分,它应该可以工作。$txt = Import-Csv C:\@@Scatch\test.csv | % { $_.localpath -replace "C:\\Users\\", ""}
关于windows - 使用-replace从csv的单元格中删除带有特殊字符的字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44438328/