我有一个csv文件,其中包含以"$“开头的字段,这些值代表了不同powershell脚本中的变量。我试图导入csv,然后替换变量的字符串版本(例如。在脚本中带有实际变量的'$var1')。我已经能够将适当的字符串从输入中分离出来,但是我在修改值时遇到了困难。
示例:
CSV输入文件-
In Server,Out Server
\\$var1\in_Company1,\\$var2\in_Company1
\\$var1\in_Company2,\\$var2\in_Company2剧本(目前为止)-
$Import=import-csv "C:\temp\test1.csv"
$Var1="\\server1"
$Var2="\\server2"
$matchstring="(?=\$)(.*?)(?=\\)"
$Import| %{$_ | gm -MemberType NoteProperty |
%{[regex]::matches($Import.$($_.name),"$matchstring")[0].value}}对于如何做到这一点,有什么想法吗?
发布于 2015-09-17 14:07:24
我能想到的解决这个问题的最简单的方法就是用变量展开来代替。您在CSV中设置了变量,所以让我们将它们展开到脚本中各自的值。
# If you dont have PowerShell 3.0 -raw will not work use this instead
# $Import=Get-Content $path | Out-String
$path = "C:\temp\test1.csv"
$Import = Get-Content $path -Raw
$Var1="\\server1"
$Var2="\\server2"
$ExecutionContext.InvokeCommand.ExpandString($Import) | Set-Content $path这将在$path中对以下输出进行网络化
In Server,Out Server
\\\\server1\in_Company1,\\\\server2\in_Company1
\\\\server1\in_Company2,\\\\server2\in_Company2如果斜杠在这里翻了一倍,并且您不希望它们被翻倍,那么只需更改CSV中数据脚本中相应的变量值。
警告
这可能会执行恶意代码,您并不是这么想的。有关Expanding variables in file contents的更多信息,请看一下这个线程。如果您对风险感到满意,那么这个解决方案应该是可以的。
https://stackoverflow.com/questions/32632009
复制相似问题