我试图制作一个报告,列出来自虚拟机的服务器名称,虚拟机名称和备注部分,但我似乎无法运行此代码,它总是给我这个错误:
Select-Object:无法转换' System.Object []'到类型 ' System.String'参数' ExpandProperty'需要。不支持。 在C:\ Cooper \ Jobs \ Get-VmNotes - Copy.ps1:32 char:48 + get-vm -server FA0150 |选择-expandproperty $ server,Name,Notes +
~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:InvalidArgument: (:) [Select-Object],ParameterBindingException + FullyQualifiedErrorId: CannotConvertArgument,Microsoft.PowerShell.Commands.SelectObjectCommand
我可以将vmname和notes一起输出,但我只想要一个列出与之关联的vcenter服务器的列。
答案 0 :(得分:1)
展开属性与说(Get-VM -Server FA0150).Name
一样。它会扩展您选择的属性名称。您试图扩展3个属性(System.Object[]
),但它只查找要扩展的属性的字符串名称。请改用-Property
。
get-vm -server FA0150 | Select-Object -Property Name,Notes
get-vm -server FA0150 | Select-Object -Property Name,Notes | Format-Table -Autosize
还包括我将其作为脚本表单的服务器名称,因为它不再是单行:
[CmdletBinding()]
Param ( $Server )
$VMs = Get-VM -Server $Server
$VMs | Select-Object -Properties @(
@{ Label = 'Server';Expression = { $Server } }
'Name'
'Notes'
)
答案 1 :(得分:0)
我使用New-ViProperty找到了解决问题的方法。唯一的问题是现在它创建了四个单独的csv文件,我想根据文件名将它们全部合并为一个,保持相同的格式,并根据文件名删除其他四个。有一个简单的方法吗?