再会。我正在使用一种称为 PowerCLI 5.1 的 PowerShell 变体。我正在使用它来更新包含来自 VMware Virtual Center 数据库的多个项目的多列 SharePoint 2013 列表。我正在使用的代码是这样的:
Add-PSSnapin Microsoft.SharePoint.PowerShell
$viservers = "MyServer"
ForEach ($singleViserver in $viservers)
{
Connect-VIServer $singleViserver -User domainuser -Password accountpassword
$HostReport = @()
Get-Datacenter -Name NYDC | Get-VM |Get-View| %{
$Report = "" | select Name, VMos, IP, NumCPU, MemoryMB, FQDN, Status, Admin1, Admin2
$Report.Name =$_.Name
$Report.VMos =$_.Summary.Config.GuestFullName
$Report.IP =$_.Guest.IPAddress
$Report.NumCPU =$_.Config.Hardware.NumCPU
$Report.MemoryMB =$_.Config.Hardware.MemoryMB
$Report.FQDN =$_.Guest.HostName
$Report.Admin1 = (Get-VIObjectByVIView $_).CustomFields["Admin1"]
$Report.Admin2 = (Get-VIObjectByVIView $_).CustomFields["Admin2"]
$HostReport += $Report
}
}
$web = Get-SPWeb http://mysharepointsite
$list = $web.Lists["MYVMList"]
foreach ($item in $list.Items)
{
$item["Name"] = $Report.Name;
$item["Guest_OS"] = $Report.VMos;
$item["Memory_Size"] = $Report.MemoryMB;
$item["CPU_Count"] = $Report.NumCPU;
$item["IP_Address"] = $Report.IP;
$item["FQDN"] = $Report.FQDN;
$item["Admin1"] = $Report.Admin1;
$item["Admin2"] = $Report.Admin2;
$item.Update();
}
但是,它似乎只用第一个 VM 属性填充了我的整个列表,而忽略了所有其他 VM。现在我知道我的代码的第一部分可以正常工作,因为我可以使用我的所有 VM 及其属性正确更新 Excel 电子表格。
我不确定在使用这些属性更新 SharePoint 列表时我做错了什么。任何帮助将不胜感激,谢谢。