将字符串传递给新文件

时间:2018-02-06 07:08:38

标签: powershell

我正在尝试运行一个脚本,它在运行时也会创建一个新脚本。 最后的第二个脚本应该包括这些行:

$line1 = 'some string' 
$line2 = 'some string'
Start-Process $line1 -Arguments $line2

我尝试使用代码从第一个脚本传递它:

$lines = "$line1 = 'some string'", "$line2 = 'some string'"
foreach ($line in $lines) | Add-Content -Path script2

由于删除了var部分并且我只剩下'= some string',因此不起作用。

1 个答案:

答案 0 :(得分:0)

PowerShell扩展双引号字符串中的变量。由于您的第二个代码段中未定义$line1$line2,因此它们会扩展为空字符串。用反引号转义$个字符:

$lines = "`$line1 = 'some string'", "`$line2 = 'some string'"

或使用单引号作为外引号和双引号作为内引号(变量不在单引号字符串中展开):

$lines = '$line1 = "some string"', '$line2 = "some string"'

我建议使用here-string而不是字符串数组来定义代码中的代码片段,因为这样可以提高可读性:

$lines = @'
$line1 = "some string"
$line2 = "some string"
'@

此外,foreach ($line in $lines) | Add-Content不起作用并且会抛出错误,因为foreach loops不会写入管道,因此Add-Content不会获得任何输入。只需将$lines直接导入Add-Content

即可
$lines | Add-Content 'C:\output.ps1'