PowerShell异常行为-重新出现换行符

时间:2019-03-05 18:48:26

标签: powershell vsphere

我正在运行PowerShell脚本,以从vSphere中提取服务器信息并将其插入SQL Server。一些vSphere用户正在Notes字段中使用返回行。这可能很烦人,所以我尝试将换行符替换为',',如下所示:

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

脚本完成并创建一个.csv文件,其中包含服务器列表以及一些字段。

接下来,我想在插入SQL Server之前在csv中的字段周围删除“”,因此我将其作为单独的脚本运行:

 ${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

0 个答案:

没有答案