在 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种用法:
- 在行尾使用时,它是一个连续字符 - 因此该命令将在下一行继续。
- 表示不替换地传递下一个字符。例如
$myVariable
通常会展开以显示变量内容,但 `$myVariable
只会作为 $myVariable
. 传递
- 当在双引号内使用时,转义字符表示后面的字符应被解释为 'special' 字符。
我的问题是关于如何编写一行将字符串(包含 $
符号)和变量组合成一行并进入文本文件的行。
我正在从函数创建 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种用法:
- 在行尾使用时,它是一个连续字符 - 因此该命令将在下一行继续。
- 表示不替换地传递下一个字符。例如
$myVariable
通常会展开以显示变量内容,但`$myVariable
只会作为$myVariable
. 传递
- 当在双引号内使用时,转义字符表示后面的字符应被解释为 'special' 字符。