WMI保修信息

时间:2014-06-27 17:11:06

标签: powershell wmi sccm

我有一个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`

0 个答案:

没有答案