获取Dell,Lenovo电脑的保修期
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电脑的保修期的更多相关文章
- JAVA如何利用Swiger获取Linux系统电脑配置相关信息
最近开发java应用程序,涉及到获取Linux服务器相关配置的问题,特地网上搜寻了下,采用Swiger包可以直接获取,再次小结一下,以便于以后能方便使用,也便于其他童鞋们学习. 推荐大家参考链接:ht ...
- SQL获取客户端网卡电脑名称等信息
Select SYSTEM_USER 当前用户名, USER_NAME() 当前所有者,db_Name() 当前数据库,@@SPID 当前进程号,(select top 1 FileName from ...
- 【转】C#获取电脑客户端IP地址及当前用户名
在C#中获取一台电脑名,IP地址及当前用户名是非常简单,以下是我常用的几种方法: 1. 在ASP.NET中专用属性: 获取服务器电脑名:Page.Server.ManchineName 获取用户信息: ...
- 电脑获取手机app内的scheme
做app开发,有时需要跳转打开外部的app应用,来促成引流或者分享等,这个时候就需要通过scheme跳转协议来完成. 使用scheme跳转外部app,就需要配置对应app的scheme,那这个sche ...
- php递归获取分类结构
商城的菜单通常都是树状结构,我们来模仿实现以下. 原理都是相同的,所以我们来个简单点的结构就行.层级只有两层,有两大类:手机和电脑:每个大类下面分别有三个子类: //从数据库获取的分类数据(省略获取步 ...
- 什么是DMI,SMBIOS,符合SMBIOS规范的计算机的系统信息获取方法
转自:http://www.cnblogs.com/gunl/archive/2011/08/08/2130719.html DMI是英文单词Desktop Management Interface的 ...
- python获取本机IP、mac地址、计算机名
在python中获取ip地址和在php中有很大不同,在php中往往比较简单.那再python中怎么做呢? 我们先来看一下python 获得本机MAC地址: 1 2 3 4 import uuid de ...
- Web系统如何做到读取客户电脑MAC等硬件信息且兼容非IE浏览器
我们在实际Web应用中,可能会遇到“需要限定特定的电脑或用户才能使用系统”的问题. 对于一般情况来说,我们用得最多的可能是使用ActiveX控件的方法来实现,但此方案只适用于IE浏览器.为了能兼容不同 ...
- Swift - 后台获取数据(Background Fetch)的实现
前面讲了如何让程序申请后台短时运行.但这个额外延长的时间毕竟有限.所以从iOS7起又引入两种在后台运行任务的方式:后台获取和后台通知. 1,后台获取介绍 后台获取(Background Fetch)是 ...
随机推荐
- java 格式化时间
java.text.DateFormat format1 = new java.text.SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); form ...
- PA
[题目描述] 汉诺塔升级了:现在我们有?个圆盘和?个柱子,每个圆盘大小都不一样, 大的圆盘不能放在小的圆盘上面,?个柱子从左到右排成一排.每次你可以将一 个柱子上的最上面的圆盘移动到右边或者左边的柱子 ...
- Struts2 Action与Servlet API耦合
单元测试在开发中是非常重要的一个环节程序员在写完代码时,相应的单元测试也应写完整,否则你的代码就是不能让人信服的Struts2将Action与Servlet的API进行解耦之后,就使得单元测试变得非常 ...
- 2.简单工厂模式(Simple Factory)
using System; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { //如果 ...
- C# 读取本地图片 转存到其他盘符
UpFileContent upfile = new UpFileContent(); upfile.StationImageName = "123.png"; FileStrea ...
- javaWeb项目中web.xml的xsd( XML Schemas Definition)文件
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns="http://w ...
- 51 NOD 1685 第K大区间2 二分+BIT
题目描述: 定义一个长度为奇数的区间的值为其所包含的的元素的中位数. 现给出n个数,求将所有长度为奇数的区间的值排序后,第K大的值为多少. 样例解释: [l,r]表示区间的值 [1]:3 [2]:1 ...
- SQL Server连接数据库失败,可能的问题!
SQL Server Configuration Manager中启动服务 SQL Server外围应用配置器中,打开远程IP连接属性 别的应该没什么问题了!
- JVM的堆分配
为了展示虚拟机如何使用方法区中的信息,下面来举例说明: class Lava { private int speed = 5; void flow(){ } } public class ...
- json学习系列(2)-生成JSONObject的方法
生成JSONObject一般有两种方式,通过javabean或者map类型来生成.如下面的例子: 先定义一个User实体类: package com.pcitc.json; /** * 用户实体类 * ...