在powershell中加入两个字符串导出到文本文件

Joining two string in powershell export to a text file

我试图在 powershell 中加入两个字符串并导出到一个文件,但我没有得到想要的结果,我对 powershell 还很陌生。

    $vm=Get-Content "c:\vmfile.txt"

ForEach($vm1 in $vm)
{
$boot="_boot.vhd"
$bname=$vm1+$boot 
write-output $bname+$boot | out-file "C:\rep.txt" -Append
} 

为此,我希望在文本文件中输出 like:

VM_boot.vhd
VM2_boot.vhd
VM3_boot.vhd

但结果是这样的:

VM
VM2
VM3_boot.vhd 

只有结果的最后一行有正确的输出。

你可以这样做,不知道你为什么两次连接 $boot:

$vm=Get-Content "c:\vmfile.txt"
$boot="_boot.vhd"

ForEach($vm1 in $vm)
{        
    $bname=$vm1+$boot 
    $bname | out-file "C:\rep.txt" -Append
} 

或更像使用 ForEach-Object 的 Powershellish:

$vm=Get-Content "c:\vmfile.txt"
$boot="_boot.vhd"

$vm | ForEach-Object {
    $_ + $boot | out-file "C:\rep.txt" -Append
}

确保你 initialize/create c:\rep.txt 否则它只会追加

让我们把它变得更简单。

Get-Content "c:\vmfile.txt" | ForEach-Object {
   "$($psitem)_boot.vhd" | out-file "C:\rep.txt" -Append
}

PowerShell 完全是关于对象和管道的,而这个例子同时包含了这两者。 PowerShell 将读取文件,对于文件中的每一行,运行 波浪线(大括号)中的代码块。

在 squiqqles 中,我们正在引用我们当前的对象(使用 $psitem 指针 [但很多人使用 $_ 代替,它们的意思是一样的]),并且我们正在构建我们想要的字符串转储到文件中。

更简单,我认为这是一个更好的示例,说明应该如何使用 PowerShell。如果您对这为何有效有任何疑问,请告诉我:_