【问题标题】:How to modify string inside CSV for current PowerShell Session如何为当前 PowerShell 会话修改 CSV 中的字符串
【发布时间】:2016-03-14 10:44:18
【问题描述】:

我需要导入一个 csv,选择一个字符串并将它的部分值更改为 $env:username。我想我必须使用select-string 来获取字符串,但我坚持更改值。或者是否可以将$env:username 直接写入csv?我没能做到。此外,CSV 应该保持原样,只有当前的 powershell 会话需要正确的字符串

CSV 长这样,userhome 应该换成$env:username

Test        Test2
-----       -----
Hi          C:\user\userhome
something   C:\test\install
hello       C:\windows

这就是我尝试过的,但我没有成功。

$test.Test2 | sls userhome -replace ($env:username)

另一种方法:

sls ($test.Test2).value -replace ("userhome",$env:username)

编辑:这是需要此 csv 的整个命令 - 仅供参考:

$Drives = Import-CSV .\NetworkDrives.csv -Delimiter ';' | ? {(($_.Group).split(',') -contains $UserOU) -and (!(Test-Path $_.Letter))} | % { #Do Stuff }

【问题讨论】:

  • $Csv | % {$_.PSObject.Properties} | % {$_.Value = $_.Value -replace "userhome", $env:username}

标签: powershell


【解决方案1】:

我很高兴 PetSerAl 在 cmets 中的回答对您有用。我个人认为使用Get-Content 可能更简单,在其上运行-Replace,然后通过管道传输到ConvertFrom-CSV 而不是Import-CSV

$Drives= (Get-Content .\NetworkDrives.csv) -Replace "userhome",$env:username | ConvertFrom-CSV -Delimiter ';' | ? {(($_.Group).split(',') -contains $UserOU) -and (!(Test-Path $_.Letter))} | % { #Do Stuff }

【讨论】:

  • 感谢 MadTechnician。我会尽快测试这个,看看哪个解决方案更快,然后接受你的答案。有趣的是:你在 2 个月前给了我一个针对同一个脚本的问题的答案。所以你将被列为共同作者;-)。干杯!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-30
  • 2011-01-11
  • 1970-01-01
  • 2015-08-09
  • 2021-03-21
  • 2014-03-08
相关资源
最近更新 更多