Необычное поведение PowerShell - возвращаются разрывы строк - PullRequest
0 голосов
/ 05 марта 2019

Я запускаю сценарий PowerShell, чтобы получить информацию о сервере из vSphere и вставить ее в SQL Server.Некоторые пользователи vSphere используют строки возврата в поле Notes.Это может раздражать, поэтому я попытался заменить разрывы строк на ',' следующим образом:

$Report.Notes = $VM | Select-Object -ExpandProperty Notes | Foreach-Object {$_ -Replace "`r", ", "}

Сценарий завершает работу и создает файл .csv со списком серверов с несколькими полями.

Далее я хочу удалить "" вокруг полей в csv перед вставкой в ​​SQL Server, поэтому я запускаю это как отдельный скрипт:

 ${C:\Temp\VMReport.csv} = ${C:\Temp\VMReport.csv} -replace '"'

После того, как я запустил это, разрывы строквернулись в поле для заметок.

Очевидно, что я немного новичок в PowerShell. Может кто-нибудь сказать мне, почему это происходит и как это исправить?

Для запроса, вот ещекод, который я использую: ~

    $Report = "" | Select-Object VMname,Host,ClusterName,Powerstate,MemoryGB,vCPUcount,IPaddresses,TotalVmdkSizeGB,DiskFree,DiskUsed,DatastoreName,NumCpuShares,NumMemShares,SnapshotCount,GuestOS,Notes
    $Report.VMName = $VM.name
    $Report.Host = $vm.VMHost.name
    $Report.ClusterName = ($VM | Get-Cluster).Name
    $Report.Powerstate = $vm.Powerstate
    $Report.MemoryGB = $VM.MemoryMB/1KB
    $Report.vCPUcount = $VM.NumCpu
    $Report.IPaddresses = [string]::Join(',',$VM.Guest.IPAddress)
    $Report.TotalVmdkSizeGB = $TotalHardDisksSizeGB
    $Report.DiskFree = [Math]::Round((($vm.Guest.Disks | Measure-Object -Property FreeSpace -Sum).Sum / 1GB),2)
    $Report.DiskUsed = $Report.TotalVmdkSizeGB - $Report.DiskFree
    $Report.DatastoreName = [string]::Join(',',($VMview.Config.DatastoreUrl | %{$_.Name}))
    $Report.NumCpuShares = $VMResourceConfiguration.NumCPUShares
    $Report.NumMemShares = $VMResourceConfiguration.NumMemShares
    $Report.SnapshotCount = (@($VM | Get-Snapshot)).Count
    $Report.GuestOS = $VM.Guest.OSFullName
    $Report.Notes = $VM | Select-Object -ExpandProperty Notes | Foreach-Object {$_ -Replace "`r", ", "}
    $allLines += $Report

 $allLines | Export-Csv $CSVOutputFile -Delimiter '*' -NoTypeInformation
...