2013-10-07 33 views
0

我们目前有一个脚本可以生成随机密码,我们利用另一个函数从这个密码列表读取各种任务。在使用这些密码时,它们被传递给一个变量,我们称之为$password。所以,

$password = FindPassword "blah"

如果我要打印$password那么它将返回说,[email protected][email protected]&$^

与此问题是,当我使用$password它缺少的一个文件中的替换词$所以,[email protected][email protected]&$^

这里是我使用的替换代码,

(Get-Content $Some_File) | 
    Foreach-Object {$_ -replace "PASSWORD","${Password}"} | Set-Content $Some_File 

任何人都知道一种方式来显示连续两个$$?我一直在使用这样的事情,以确保特殊字符得到适当治疗尝试,但不能得到$工作:

$password = $password.Replace("`^","`^") 
$password = $password.Replace("`@","`@") 
$password = $password.Replace("`&","`&") 
$password = $password.Replace("`!","`!") 
$password = $password.Replace("\`$","\`$") 

此外,

$password = $password.Replace("`$","``$") 

的工作,但如果密码是不同的下一次,这只是这个特殊例子所特有的。

回答

1

如果用.replace()方法代替-replace运营商,它的伎俩:

(Get-Content $Some_File) | 
    Foreach-Object { $_.toString().Replace("PASSWORD", $password.ToString()) } | Set-Content $Some_File 
+0

很抱歉的冗余使用这个词的“替换”。 :) – Jim

+0

完美的作品 – JMeterX