<# .NAME WarrantyInfo System Script 2 .ABOUT Script collects warranty information from the computer that it is run on and then adds the information to WMI so it can be collected by SCCM .INFO Copyright Ryan McLean 2011 ryan1 underscore 00 at hotmail antispam dot co dot uk .VERSION 0.4 .CHANGELIST -0.4 -- FIX: Added -Force to hidden folder removal. -0.3 -- FIX: Removed unused function call "cleanup" from Main -0.2 -- FIX: Corrected WMINamespace (removed \sms) #> # 3/3 - WarrantyInfo Scripts $warrantyInfoDir = "c:\warrantyinfo" $infile = $warrantyInfoDir + "\WarrantyInfo.csv" # WMI - If you change these remember to change the MOF file as well $WMICLassName = "Warranty_Info" $WMINameSpace = "root\cimv2" Function CreateWMIClass { if($enabletrace) {write-host "CreateWMIClass"} $WarrantyInfo = New-Object System.Management.ManagementClass ($WMINameSpace, [String]::Empty, $null) $WarrantyInfo["__CLASS"] = $WMICLassName $WarrantyInfo.Qualifiers.Add("Static", $true) $WarrantyInfo.Properties.Add("Index", [System.Management.CimType]::UInt32, $false) $WarrantyInfo.Properties["Index"].Qualifiers.Add("Key", $true) $WarrantyInfo.Properties.Add("DateScriptRan", [System.Management.CimType]::String, $false) $WarrantyInfo.Properties.Add("Description", [System.Management.CimType]::String, $false) $WarrantyInfo.Properties.Add("Provider", [System.Management.CimType]::String, $false) $WarrantyInfo.Properties.Add("StartDate", [System.Management.CimType]::String, $false) $WarrantyInfo.Properties.Add("EndDate", [System.Management.CimType]::String, $false) $WarrantyInfo.Properties.Add("DaysLeft", [System.Management.CimType]::UInt32, $false) $WarrantyInfo.Properties.Add("Status", [System.Management.CimType]::String, $false) $res = $WarrantyInfo.Put() if($enableDebug) {$res} } Function CreateWMIClassInstance { param ($contracts) if($enabletrace) {write-host "CreateWMIClassInstance"} $index = 0 foreach ($contract in $contracts) { $InstArgs = @{"Index" = $index; "DateScriptRan" = $runtime; ` "Description" = $contract.Description; "Provider" = $contract.Provider; ` "StartDate" = $contract.StartDate; "EndDate" = $contract.EndDate; ` "DaysLeft" = $contract.DaysLeft; "Status" = $contract.Status } $res = Set-WmiInstance -Class $WMICLassName -Arguments $InstArgs -Namespace $WMINameSpace if($enableDebug) {$res} $index++ } } Function DeleteWMIClass { if($enabletrace) {write-host "DeleteWMIClass"} # Delete the class if it already exists try { $ErrorActionPreference = "SilentlyContinue"; Remove-WmiObject -Class $WMICLassName -Namespace $WMINameSpace } catch { } finally { $ErrorActionPreference = "Stop"; } } Function Main { $contracts = import-csv $infile #Inject into WMI DeleteWMIClass if($enabletrace) {write-host "Main"} CreateWMIClass if($enabletrace) {write-host "Main"} CreateWMIClassInstance $contracts if($enabletrace) {write-host "Main"} Remove-Item -Recurse $warrantyInfoDir -Force } ################### MAIN ###################### Main;