首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从import-csv动态替换字符串

从import-csv动态替换字符串
EN

Stack Overflow用户
提问于 2015-09-17 13:49:42
回答 1查看 649关注 0票数 0

我有一个csv文件,其中包含以"$“开头的字段,这些值代表了不同powershell脚本中的变量。我试图导入csv,然后替换变量的字符串版本(例如。在脚本中带有实际变量的'$var1')。我已经能够将适当的字符串从输入中分离出来,但是我在修改值时遇到了困难。

示例:

CSV输入文件-

代码语言:javascript
复制
In Server,Out Server
\\$var1\in_Company1,\\$var2\in_Company1
\\$var1\in_Company2,\\$var2\in_Company2

剧本(目前为止)-

代码语言:javascript
复制
$Import=import-csv "C:\temp\test1.csv"
$Var1="\\server1"
$Var2="\\server2"
$matchstring="(?=\$)(.*?)(?=\\)"
$Import| %{$_ | gm -MemberType NoteProperty | 
%{[regex]::matches($Import.$($_.name),"$matchstring")[0].value}}

对于如何做到这一点,有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-17 14:07:24

我能想到的解决这个问题的最简单的方法就是用变量展开来代替。您在CSV中设置了变量,所以让我们将它们展开到脚本中各自的值。

代码语言:javascript
复制
#  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中对以下输出进行网络化

代码语言:javascript
复制
In Server,Out Server
\\\\server1\in_Company1,\\\\server2\in_Company1
\\\\server1\in_Company2,\\\\server2\in_Company2

如果斜杠在这里翻了一倍,并且您不希望它们被翻倍,那么只需更改CSV中数据脚本中相应的变量值。

警告

这可能会执行恶意代码,您并不是这么想的。有关Expanding variables in file contents的更多信息,请看一下这个线程。如果您对风险感到满意,那么这个解决方案应该是可以的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32632009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档