Этот вопрос выглядел очень забавным, и мне пришлось попробовать его, хотя на него уже был принят ответ. Кроме того, принятый ответ не работает должным образом для репутаций, которые превышают 999 (то есть 1000 содержит запятую , которая также разделяется).
Поскольку формат Flair представлен в JSON, простое разбиение на него не всегда работает, и регулярное выражение для JSON практически невозможно. Несмотря на то, что есть библиотеки .NET JSON, я хотел сохранить решение в PowerShell (включая V1).
Далее используется класс JavaScript *erializer 3.5 * 1009, который требует от нас загрузки сборки в нашем скрипте.
Обновление
С PowerShell 2.0 гораздо проще создавать «пользовательские объекты» с хешами.
function Get-StackOverflowReputation
{
param ( $UserId )
$assembly = [Reflection.Assembly]::LoadWithPartialName("System.Web.Extensions")
$client = New-Object System.Net.WebClient
$json = $client.DownloadString("http://stackoverflow.com/users/flair/$UserId.json")
$transmogrifer = New-Object System.Web.Script.Serialization.JavaScriptSerializer
$jsonFlair = $transmogrifer.DeserializeObject( $json )
$flair = New-Object PSObject -Property @{ user = $jsonFlair["displayName"]; rep = $jsonFlair["reputation"] }
$flair
}
1> Get-StackOverflowReputation -UserId 45571
user rep
---- ---
Andy Schneider 779