下面的代码(在底部)在文件中产生以下输出之一
4/12/2019 = (get-date).AddDays(2).ToShortDateString();
4/13/2019 = (get-date).AddDays(2 + 1).ToShortDateString();
或者如果我还没有初始化变量
= (get-date).AddDays(2).ToShortDateString();
= (get-date).AddDays(2 + 1).ToShortDateString();
这是代码块,我希望父ps1文件原样写入子ps1文件。
$multiLineScript2 = @"
$startDate2 = (get-date).AddDays($resultOfSubtraction).ToShortDateString();
$endDate2 = (get-date).AddDays($resultOfSubtraction + 1).ToShortDateString();
"@
$multiLineScript2 | Out-File "c:\file2.ps1";
答案 0 :(得分:1)
我在任何地方都找不到它,但是看来脚本中的每个变量(字符串文字)都必须像这样打勾。与其删除问题,不如将其留给搜索命中。
$multiLineScript2 = @"
`$startDate2 = (get-date).AddDays($resultOfSubtraction).ToShortDateString();
`$endDate2 = (get-date).AddDays($resultOfSubtraction + 1).ToShortDateString();
"@
答案 1 :(得分:0)
tl;博士:
要创建 verbatim 多行字符串(即具有文字内容的字符串),请在此处使用单引号 :
$multiLineScript2 = @'
$startDate2 = (get-date).AddDays($resultOfSubtraction).ToShortDateString();
$endDate2 = (get-date).AddDays($resultOfSubtraction + 1).ToShortDateString();
'@
请注意使用@'
和'@
作为分隔符。
仅在需要字符串扩展(插值)(并且如果需要,选择性地防止扩展)时,在此处使用双引号此处字符串通过将$
转义为`$
)。
Get-Help about_quoting rules
讨论了PowerShell支持的字符串文字类型:
要获取具有 literal 内容的字符串(无插值,C#称为逐字字符串),请使用单引号 :'...'
获取 可扩展字符串(字符串插值),即可以嵌入变量引用和表达式的字符串,并用其值替换作业,请使用双引号:"..."
$
个字符。例如,为防止$var
在"..."
字符串内插值(扩展到其值),请使用`$var
。这两种基本类型也都可以作为 here-strings 使用-分别以@'<newline>...<newline>'@
和@"<newline>...<newline>"@
的形式出现(<newline>
用于实际的换行符(换行符))-使定义多行字符串更容易。
@'
或@"
后面的任何内容都不得跟随-字符串的内容必须在以下行中定义。 / li>
'@
或"@
(与开始定界符匹配)-必须在行的开头 。示例:
# Single-quoted: literal:
PS> 'I am $HOME'
I am $HOME
# Double-quoted: expandable
PS> "I am $HOME"
I am C:\Users\jdoe
# Here-strings:
# Literal
PS> @'
I am
$HOME
'@
I am
$HOME
# Expandable
PS> @"
I am
$HOME
"@
I am
C:\Users\jdoe