PowerShell - 在输出之间添加字符串

PowerShell - Add string between outputs

我试图用字符串 (;) 分隔,结果如下:

$MasterKeys = ($MasterKeys | Where {$_.Name -ne $Null -AND $_.SystemComponent -ne "1" -AND $_.ParentKeyName -eq $Null} | select-String Name,Version,ComputerName | sort Name| ft -hide )

这是此命令的输出:

HP ePrint SW 5.1.20088 LT00438

我想要这个:

HP ePrint SW; 5.1.20088; LT00438

嗯,这是完整的代码: 我不知道把 Export-Csv -Path "file.txt" -Delimiter ";" -NoTypeInformation 函数放在哪里:(

Function Get-InstalledSoftware
{
    Param
    (
        [Alias('Computer','ComputerName','HostName')]
        [Parameter(ValueFromPipeline=$True,ValueFromPipelineByPropertyName=$true,Position=1)]
        [string[]]$Name = $env:COMPUTERNAME
    )
    Begin
    {
        $LMkeys = "Software\Microsoft\Windows\CurrentVersion\Uninstall","SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall"
        $LMtype = [Microsoft.Win32.RegistryHive]::LocalMachine
        $CUkeys = "Software\Microsoft\Windows\CurrentVersion\Uninstall"
        $CUtype = [Microsoft.Win32.RegistryHive]::CurrentUser

    }
    Process
    {
        ForEach($Computer in $Name)
        {
            $MasterKeys = @()
            If(!(Test-Connection -ComputerName $Computer -count 1 -quiet))
            {
                Write-Error -Message "Unable to contact $Computer. Please verify its network connectivity and try again." -Category ObjectNotFound -TargetObject $Computer
                Break
            }
            $CURegKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($CUtype,$computer)
            $LMRegKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($LMtype,$computer)
            ForEach($Key in $LMkeys)
            {
                $RegKey = $LMRegKey.OpenSubkey($key)
                If($RegKey -ne $null)
                {
                    ForEach($subName in $RegKey.getsubkeynames())
                    {
                        foreach($sub in $RegKey.opensubkey($subName))
                        {
                            $MasterKeys += (New-Object PSObject -Property @{
                            "ComputerName" = $Computer
                            "Name" = $sub.getvalue("displayname")
                            "SystemComponent" = $sub.getvalue("systemcomponent")
                            "ParentKeyName" = $sub.getvalue("parentkeyname")
                            "Version" = $sub.getvalue("DisplayVersion")
                            })
                        }
                    }
                }
            }
            ForEach($Key in $CUKeys)
            {
                $RegKey = $CURegKey.OpenSubkey($Key)
                If($RegKey -ne $null)
                {
                    ForEach($subName in $RegKey.getsubkeynames())
                    {
                        foreach($sub in $RegKey.opensubkey($subName))
                        {
                            $MasterKeys += (New-Object PSObject -Property @{
                            "ComputerName" = $Computer
                            "Name" = $sub.getvalue("displayname")
                            "SystemComponent" = $sub.getvalue("systemcomponent")
                            "ParentKeyName" = $sub.getvalue("parentkeyname")
                            "Version" = $sub.getvalue("DisplayVersion")
                            })
                        }
                    }
                }
            }

            $files = "inventaireLT.txt" 
            $MasterKeys = ($MasterKeys | Where {$_.Name -ne $Null -AND $_.SystemComponent -ne "1" -AND $_.ParentKeyName -eq $Null} | select Name,Version,ComputerName | sort Name| ft -hide )
            $MasterKeys >> $files


        }
    }
    End
    { 

    }
}
Clear-Content -path $files 
Import-Module ActiveDirectory
Get-ADComputer -LDAPfilter "(name=LT*)" -SearchBase "OU=S****Y,DC=T***R,DC=com" | Get-InstalledSoftware


(gc inventaireLT.txt) | ? {$_.trim() -ne "" } | set-content inventaireLT.txt

您可以使用 Export-Csv 并指定 -Delimiter ";"

将数据导出到分号分隔的文件
$MasterKeys | Where {$_.Name -ne $Null -AND $_.SystemComponent -ne "1" -AND $_.ParentKeyName -eq $Null} | select Name,Version,ComputerName | Export-Csv -Path "C:\folder\file.txt" -Delimiter ";" -NoTypeInformation

如果您不想要 header 行:

$MasterKeys | Where {$_.Name -ne $Null -AND $_.SystemComponent -ne "1" -AND $_.ParentKeyName -eq $Null} |
select Name,Version,ComputerName |  
ConvertTo-Csv -Delimiter ";" -NoTypeInformation |
Select-Object -Skip 1 |
Set-Content -Path "C:\folder\file.txt"

编辑:

在您的代码中,您将替换:

$MasterKeys = ($MasterKeys | Where {$_.Name -ne $Null -AND $_.SystemComponent -ne "1" -AND $_.ParentKeyName -eq $Null} | select Name,Version,ComputerName | sort Name| ft -hide )
$MasterKeys >> $files

$MasterKeys | Where {$_.Name -ne $Null -AND $_.SystemComponent -ne "1" -AND $_.ParentKeyName -eq $Null} | select Name,Version,ComputerName | ConvertTo-Csv -Delimiter ";" -NoTypeInformation | Select-Object -Skip 1 | Set-Content -Path $files