在 powershell 中组合成一个文件(字符串 + 变量)

Combination into a file done in powershell (String + Variable)

我的问题是关于如何编写一行将字符串(包含 $ 符号)和变量组合成一行并进入文本文件的行。
我正在从函数创建 ps1。

function pwd{
  param(
    [Parameter(ValueFromPipeline=$True,position=0,mandatory=$true)][String]$Temp,
    [Parameter(ValueFromPipeline=$True,position=1,mandatory=$true)][String]$Path,
    [Parameter(ValueFromPipeline=$True,position=2,mandatory=$true)][String]$SubscriptionName
  )

  $NewFilePath = "$Path\newfile.ps1"
  New-Item -ItemType file $NewFilePath -Force 
  Add-Content $NewFilePath '    $TimeStart=Get-Date'
  Add-Content $NewFilePath "    $AccountName=""$($SubscriptionName)"" " #Here's my doubt
}

$ScriptPath = split-path -parent $MyInvocation.MyCommand.Definition
pwdtest -Temp "String" -Path $ScriptPath -SubscriptionName "mail@something.com"

$ScriptPath = split-path -parent $MyInvocation.MyCommand.Definition
pwdtest -Temp "String" -Path $ScriptPath -SubscriptionName "mail@something.com"

所以这样调用函数pwd

$ScriptPath = split-path -parent $MyInvocation.MyCommand.Definition
pwd -Temp "String" -Path $ScriptPath -SubscriptionName "mail@something.com"

如何重写该行?

Add-Content $NewFilePath "    $AccountName=""$($AutomationAccount)"" " 

因为我需要在文本文件中这样写:

  $TimeStart=Get-Date
  $AccountName = "mail@something.com"

现在,如果我使用该行,我会在文本文件中找到它:

  $TimeStart=Get-Date
  ="mail@something.com" 

我怎么能说 PowerShell Add-Content 不将 $AccountName 解释为 "NULL" 值,我需要将其用作内容字符串而不是变量。

我有这样的组合想法:

Add-Content $NewFilePath '    $AccountName=' + " ""$($SubscriptionName)"" "

但是没用。

Add-Content : A positional parameter cannot be found that accepts argument    '+'.
  At C:\Users\JoseGabriel\test.ps1:10 char:5
  +     Add-Content $NewFilePath '    $AccountName=' + "     ""$($SubscriptionName)"" "
  +       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  + CategoryInfo          : InvalidArgument: (:) [Add-Content], ParameterBindingException
  + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.AddContentCommand

你试过了吗:

Add-Content $NewFilePath "    `$TimeStart=Get-Date"
Add-Content $NewFilePath "    `$AccountName=""$($SubscriptionName)"""

转义字符、定界符和引号

PowerShell 转义字符是重音符号 (`)。

转义符有3种用法:

  1. 在行尾使用时,它是一个连续字符 - 因此该命令将在下一行继续。
  2. 表示不替换地传递下一个字符。例如 $myVariable 通常会展开以显示变量内容,但 `$myVariable 只会作为 $myVariable.
  3. 传递
  4. 当在双引号内使用时,转义字符表示后面的字符应被解释为 'special' 字符。

来源:http://ss64.com/ps/syntax-esc.html