2015-4-6写的代码(Dell), 不知道如何对报错进行友好化处理,于是采用了"非空"和"非空的补集"处理方式.

$service = New-WebServiceProxy -Uri http://143.166.84.118/services/assetservice.asmx?WSDL
$guid = [Guid]::NewGuid()
Import-Csv -Path .\sn.csv | foreach {
$info = $service.GetAssetInformation($guid,'diy',$_.sn)
if ($info -ne $null) {
$result = $info.Entitlements | foreach {
$_.EndDate
} | Measure-Object -Maximum
$result.Maximum.ToString("yyyy/M/d") | Out-File -FilePath .\result.csv -Append
}
else {
"lenovo" | Out-File -FilePath .\result.csv -Append #联想电脑暂时不知道如何获取保修期
}
}

2015-4-21写的代码(Dell), 含Try, Catch, Finally用法

$service = New-WebServiceProxy -Uri http://143.166.84.118/services/assetservice.asmx?WSDL
$guid = [Guid]::NewGuid()
Import-Csv -Path .\sn.csv | foreach {
try {
$info = $service.GetAssetInformation($guid,'diy',$_.sn)
$result = $info.Entitlements | foreach { $_.EndDate } | Measure-Object -Maximum
$result.Maximum.ToShortDateString() | Out-File -FilePath .\result.csv -Append
}
catch [System.Management.Automation.RuntimeException] {
"The serail no. is Lenovo!" | Out-File -FilePath .\result.csv -Append
}
}

2015-5-4写的代码(Lenovo)

Import-Csv -Path .\ln.csv | ForEach-Object {
$webreq = Invoke-WebRequest ("http://support1.lenovo.com.cn/lenovo/wsi/usercenter/computersearch/machinesearch.aspx?intcmp=index&id=" + $_.sn + "&showradio=1&showdriver=no")
$gc = $webreq.Content
[regex]::Matches("$gc",'<span id="lblOnSiteEndDate_LK">\d\d\d\d-\d\d-\d\d') | Foreach-object { #正则表达式
$_.value.substring($_.value.length - 10, 10)
}
}

2015-5-4写的代码(Dell & Lenovo)

$lenovo_parttern = "\b\w{10}\b"
$dell_parttern = "\b\w{7}\b"
Import-Csv -Path .\sn.csv | ForEach-Object {
if(($_.sn -match $dell_parttern) -eq $true) {
$service = New-WebServiceProxy -Uri http://143.166.84.118/services/assetservice.asmx?WSDL
$guid = [Guid]::NewGuid()
$info = $service.GetAssetInformation($guid,'diy',$_.sn)
$result = $info.Entitlements | foreach { $_.EndDate } | Measure-Object -Maximum
$result.Maximum.ToShortDateString() | Out-File -FilePath .\result.csv -Append
}
elseif(($_.sn -match $lenovo_parttern) -eq $true) {
$webreq = Invoke-WebRequest ("http://support1.lenovo.com.cn/lenovo/wsi/usercenter/computersearch/machinesearch.aspx?intcmp=index&id=" + $_.sn + "&showradio=1&showdriver=no")
$gc = $webreq.Content
[regex]::Matches("$gc",'<span id="lblOnSiteEndDate_LK">\d\d\d\d-\d\d-\d\d') | Foreach-object {
$_.value.substring($_.value.length - 10, 10) | Out-File -FilePath .\result.csv -Append
}
}
else {"others" | Out-File -FilePath .\result.csv -Append}
}

2017-3-27写的代码(之前Dell的查询方式已经失效,现在需要自己去Dell开发者网站申请API Key,人工审核通过后才行)

#         https://api.dell.com/support/assetinfo/v4/getassetwarranty/4V11Q2X?apikey=eXXXXXXXXXX3
# https://sandbox.api.dell.com/support/assetinfo/v4/getassetwarranty/4V11Q2X?apikey=eXXXXXXXXXX3
$apikey = "eXXXXXXXXXX3"
"52WDVB2","JBBWTF3" | foreach {
$url = "https://sandbox.api.dell.com/support/assetinfo/v4/getassetwarranty/" + $_ + "?apikey=" + $apikey
$result = (Invoke-WebRequest -Uri $url).content | ConvertFrom-Json
<# 1. Get details of warranty #>
$result.AssetWarrantyResponse.AssetEntitlementData | select @{n='ServiceTag';e={$result.AssetWarrantyResponse.assetheaderdata.ServiceTag}},
@{n='ShipDate';e={$result.AssetWarrantyResponse.assetheaderdata.ShipDate.Substring(0,10)}},
ServiceLevelDescription,
@{n='StartDate';e={$_.StartDate.substring(0,10)}},
@{n='EndDate';e={$_.EndDate.substring(0,10)}} | sort EndDate <# 2. Get the warranty date
$result | select @{n='ServiceTag';e={$result.AssetWarrantyResponse.assetheaderdata.ServiceTag}},
@{n='ExpiredDate';e={$result.AssetWarrantyResponse.AssetEntitlementData[0].EndDate.Substring(0,10)}}
#>
}

参考资料:
http://blog.csdn.net/itanders/article/details/32707483
http://stackoverflow.com/questions/6779186/powershell-try-catch-finally

获取Dell,Lenovo电脑的保修期的更多相关文章

  1. JAVA如何利用Swiger获取Linux系统电脑配置相关信息

    最近开发java应用程序,涉及到获取Linux服务器相关配置的问题,特地网上搜寻了下,采用Swiger包可以直接获取,再次小结一下,以便于以后能方便使用,也便于其他童鞋们学习. 推荐大家参考链接:ht ...

  2. SQL获取客户端网卡电脑名称等信息

    Select SYSTEM_USER 当前用户名, USER_NAME() 当前所有者,db_Name() 当前数据库,@@SPID 当前进程号,(select top 1 FileName from ...

  3. 【转】C#获取电脑客户端IP地址及当前用户名

    在C#中获取一台电脑名,IP地址及当前用户名是非常简单,以下是我常用的几种方法: 1. 在ASP.NET中专用属性: 获取服务器电脑名:Page.Server.ManchineName 获取用户信息: ...

  4. 电脑获取手机app内的scheme

    做app开发,有时需要跳转打开外部的app应用,来促成引流或者分享等,这个时候就需要通过scheme跳转协议来完成. 使用scheme跳转外部app,就需要配置对应app的scheme,那这个sche ...

  5. php递归获取分类结构

    商城的菜单通常都是树状结构,我们来模仿实现以下. 原理都是相同的,所以我们来个简单点的结构就行.层级只有两层,有两大类:手机和电脑:每个大类下面分别有三个子类: //从数据库获取的分类数据(省略获取步 ...

  6. 什么是DMI,SMBIOS,符合SMBIOS规范的计算机的系统信息获取方法

    转自:http://www.cnblogs.com/gunl/archive/2011/08/08/2130719.html DMI是英文单词Desktop Management Interface的 ...

  7. python获取本机IP、mac地址、计算机名

    在python中获取ip地址和在php中有很大不同,在php中往往比较简单.那再python中怎么做呢? 我们先来看一下python 获得本机MAC地址: 1 2 3 4 import uuid de ...

  8. Web系统如何做到读取客户电脑MAC等硬件信息且兼容非IE浏览器

    我们在实际Web应用中,可能会遇到“需要限定特定的电脑或用户才能使用系统”的问题. 对于一般情况来说,我们用得最多的可能是使用ActiveX控件的方法来实现,但此方案只适用于IE浏览器.为了能兼容不同 ...

  9. Swift - 后台获取数据(Background Fetch)的实现

    前面讲了如何让程序申请后台短时运行.但这个额外延长的时间毕竟有限.所以从iOS7起又引入两种在后台运行任务的方式:后台获取和后台通知. 1,后台获取介绍 后台获取(Background Fetch)是 ...

随机推荐

  1. Android之圆角矩形

    安卓圆角矩形的定义 在drawable文件夹下,定义corner.xml <?xml version="1.0" encoding="utf-8"?> ...

  2. Linux下循环、选择、顺序操作

    1.Shell脚本数组操作小结 http://www.jb51.net/article/52382.htm Linux Shell在编程方面比Windows批处理强大很多,无论是在循环.运算. bas ...

  3. 6.原型模式(Prototype Pattern)

    using System; namespace ConsoleApplication5 { class Program { static void Main(string[] args) { // 孙 ...

  4. Redis快速入门:安装、配置和操作

    本文是有关Redis的系列技术文章之一.在之前的文章中介绍了<Redis快速入门:初识Redis>,对Redis有了一个初步的了解.今天继续为大家介绍Redis如何安装.配置和操作. 系列 ...

  5. ava中Class.forName的作用浅谈

    转自:http://www.jb51.net/article/42648.htm Class.forName(xxx.xx.xx) 返回的是一个类 一.首先你要明白在java里面任何class都要装载 ...

  6. AppInventor学习笔记(三)——油漆桶应用学习

    一.组件设置 1.画笔颜色选项 选取3个Button,然后改名为红.黄.绿三种颜色,然后进行相应属性的设置. 在这里有个问题就是如何放在一行.. 将3个按钮放进这个方框里面就可以变成一行了. 2.画布 ...

  7. vi总结

    vi常用命令整理 ★命令模式 移动光标 h 或 向左方向键(←) → 光标向左移动一个字元 j 或 向下方向鍵(↓) → 光标向下移动一个字元 k 或 向上方向鍵(↑) → 光标向上移动一个字元 l ...

  8. html 绘图渐变和图片填充

    包括线性渐变和径向渐变 <!DOCTYPE html> <html> <head lang="en"> <meta charset=&qu ...

  9. QUnit使用笔记-5简化编写

    在测试中,如果用到了大量相同的方法返回判断结果,可以将他们简化; 使用push(): push( result/*boolean,result of assert*/, actual, /*objec ...

  10. http://my.oschina.net/chinacion/blog/647641

    http://my.oschina.net/chinacion/blog/647641