我有一个Powershell脚本(1),用于收集Dell系统的保修信息,并将其显示在屏幕上。我还有第二个脚本(2)创建一个WMI命名空间和(3)一个类。我想要做的是将保修脚本收集的信息最终放到WMI类中,以便我们可以通过SCCM。下面的代码是我到目前为止的代码。任何帮助将不胜感激。 (1)
{
$service = New-WebServiceProxy -Uri http://{143.166.84.118}/services/assetservice.asmx?WSDL
if($args.count -ne 0){
$serial = $args[0]
}
else {
$system = Get-WmiObject win32_SystemEnclosure
$serial = $system.serialnumber
}
$guid = [guid]::NewGuid()
$info = $service.GetAssetInformation($guid,'check_warranty.ps1',$serial)
if($info.count -eq 0)
{
Write-Host "Machine is not a Dell"
}
else
{
$warranty = $info[0].Entitlements[0]
$expires = $warranty.EndDate
$days_left = $warranty.DaysLeft
if($days_left -eq 0)
{
Write-Host "Warranty has expired"
}
else{
`enter code here`
set objwmiservice = getobject("winmgts:\\computer\root\warranty")
set colitems = objwmiservice.execquery("select * from warranty_warranty")
objitem.Warranty = $expires
objitem.put_
next
Write-Host "Warranty expires $expires."
Write-Host "Warranty is valid for $days_left days."
}
}
}
(2)
'Create namespace
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root")
Set objItem = objWMIService.Get("__Namespace")
Set objNamespace = objItem.SpawnInstance_
objNamespace.Name = "Warranty"
objNamespace.Put_ '
(3)
' $newClass = New-Object System.Management.ManagementClass `
("root\Warranty", [String]::Empty, $null);
$newClass["__CLASS"] = "Warranty";
$newClass.Qualifiers.Add("Static", $true)
$newClass.Properties.Add("Warranty", `
[System.Management.CimType]::String, $false)
$newClass.Properties["Warranty"].Qualifiers.Add("Key", $true)
$newClass.Put()'`enter code here`