2012-09-06 182 views
1

下午好,PowerShell的ParseExact日期格式YYYYMMDD问题

有人能告诉我如何使用PowerShell的日期20120624转换为年月日,我得到“字符串未被识别为valud日期时间”运行下面的代码

[String]$ServiceTag = "b26ybt1"; 

Try{ 
     $AssetService = New-WebServiceProxy -Uri "http://xserv.dell.com/services/AssetService.asmx?WSDL"; 
     $ApplicationName = "AssetService"; 
     $Guid = [Guid]::NewGuid(); 
     $Asset = $AssetService.GetAssetInformation($Guid,$ApplicationName,$ServiceTag); 
     $Writer = New-Object "System.IO.StringWriter"; 
     $XmlSerializer = New-Object System.Xml.Serialization.XmlSerializer($Asset.GetType()); 
     $XmlSerializer.Serialize($Writer,$Asset); 
     [String]$Result = $Writer.ToString(); 
     $Writer.Flush(); 
     $Writer.Close(); 
     Return $Result; 
} 
Catch{ 
     Write-Host $($_.Exception.Message);  
} 

$prog = [regex]::match($Result,'(?<=StartDate>)(.*)(?=T00)').Groups[1].Value 
[System.Text.RegularExpressions.Regex]::Replace($prog,"[-]",""); 

[datetime]::ParseExact($prog,"yyyyMMdd",$null) 
+1

什么你贴我完美。这是你正在运行的确切代码吗? – EBGreen

+0

粘贴上面的所有代码,即时试图从网站上获取戴尔购买日期。它适用于我,如果我只是使用我粘贴其实它的整个事情时运行它失败 – meeeeeeeeee

+1

完整的信息往往导致一个完整的答案。 – EBGreen

回答

3

变化

[System.Text.RegularExpressions.Regex]::Replace($prog,"[-]",""); 

$prog = [System.Text.RegularExpressions.Regex]::Replace($prog,"[-]",""); 

您所做的只是返回替换者会做的事情,您从未将其实际分配给变量。当我跑它上面的,我有以下几点:

Sunday, June 24, 2012 12:00:00 AM 
+0

感谢这很好,我将如何将它作为24/06/2012存储在一个变量? – meeeeeeeeee

+0

$ date = Get-Date $([datetime] :: ParseExact($ prog,“yyyyMMdd”,$ null))-format MM/dd/yyyy – Nick

1

你可以将结果转换为XML,而不是字符串,避免字符串解析:

[xml]$Result = $Writer.ToString() 
[datetime]$Result.ArrayOfAsset.Asset.Entitlements.EntitlementData[0].StartDate