我正在尝试运行一个脚本,它在运行时也会创建一个新脚本。 最后的第二个脚本应该包括这些行:
$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',因此不起作用。
答案 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'