获取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)是 ...
随机推荐
- Mysql 5.6.17-win64.zip配置
第一大步:下载. a.俗话说:“巧妇难为无米之炊”嘛!我这里用的是 ZIP Archive 版的,win7 64位的机器支持这个,所以我建议都用这个.因为这个简单嘛,而且还干净. 地址见图 拉倒最下面 ...
- 忘记oracle的sys用户密码怎么修改
转分类: Linux 一.忘记除SYS.SYSTEM用户之外的用户的登录密码. 用SYS (或SYSTEM)用户登录: CONN SYS/PASS_WORD AS SYSDBA; 使用如下语句修改 ...
- ionic react-native和native开发移动app到底那个好
ionic react-native和native开发移动app那个好 ? 移动端开发如何选型?这里介绍一下我眼中的ionic,react-native,native 三种移动端开发选型对比.欢迎大家 ...
- javascript二叉树基本功能实现
都是常用的功能. 删除是最复杂的.. <!DOCTYPE html> <html lang="en"> <head> <meta char ...
- poj 2559 单调栈 ***
给出一系列的1*h的矩形,求矩形的最大面积. 如图: 题解链接:点我 #include <iostream> #include <cstdio> using namespace ...
- 操作JNI函数以及复杂对象传递
转自:http://blog.csdn.net/qinjuning/article/details/7607214 在掌握了JNI函数的使用和相关类型的映射后,以及知晓何利用javah工具生成对应的j ...
- OOM解决方案
应用程序OOM异常永远都是值得关注的问题.通常这一块也是程序这中的重点之一 首先,OOM就是内存溢出,即Out Of Memory.也就是说内存占有量超过了VM所分配的最大. 怎么解决OOM,通常OO ...
- 利用Bundle在activity之间传递对象
(2010-12-04 09:45:54) 转载▼ 标签: it 分类: android开发 转自:http://chen592969029.javaeye.com/blog/772656 假如需要在 ...
- 17111 Football team
时间限制:1000MS 内存限制:65535K 提交次数:0 通过次数:0 题型: 编程题 语言: C++;C Description As every one known, a footbal ...
- 2^x mod n = 1
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...