【问题标题】:Joining two string in powershell export to a text file将powershell导出中的两个字符串连接到文本文件
【发布时间】:2015-11-29 23:35:49
【问题描述】:

我正在尝试在 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
} 

为此,我希望在文本文件中输出类似的内容:

VM_boot.vhd
VM2_boot.vhd
VM3_boot.vhd

但结果是这样的:

VM
VM2
VM3_boot.vhd 

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

【问题讨论】:

    标签: powershell hyper-v


    【解决方案1】:

    你可以这样做,不知道为什么你两次包含 $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
    }
    

    确保你初始化/创建 c:\rep.txt 否则它只会追加

    【讨论】:

      【解决方案2】:

      让我们把这变得简单很多。

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

      PowerShell 是关于对象和管道的,本示例同时具有这两者。 PowerShell 将读取文件,并针对文件中的每一行,运行曲线(大括号)中的代码块。

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

      简单得多,我认为这是应该如何使用 PowerShell 的更好示例。如果您对它的工作原理有任何疑问,请告诉我:_

      【讨论】:

        猜你喜欢
        • 2011-08-29
        • 2012-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-28
        相关资源
        最近更新 更多