Как я могу просматривать свою репутацию с помощью функции PowerShell?
Репутация StackOverflow с использованием PowerShell
Ответ 1
Вы можете использовать следующую функцию
Function Get-StackOverFlowReputation {
param($userID)
$client = new-object System.Net.WebClient
$JSONFlair = $client.DownloadString("http://stackoverflow.com/users/flair/$userid.json")
$JSONFlair.split(",") | select-string "reputation","displayName"
}
260 > Get-StackOverFlowReputation -userID 45571
"displayName":"Andy Schneider"
"reputation":"344"
Это быстро и грязно. Я уверен, что вы могли бы использовать некоторую отличную библиотеку для преобразования JSON в PSobject, но это выполнит эту работу.
Ответ 2
Этот вопрос выглядел очень весело, и я должен был попробовать, хотя у него уже есть принятый ответ. Кроме того, принятый ответ, похоже, не работает должным образом для репутации более 999 (т.е. 1000 содержит запятую, которая также разделяется).
Будучи тем, что формат Flair находится в JSON, просто расщепление на нем не всегда работает, а регулярное выражение против JSON почти невозможно. Хотя там есть библиотеки .NET JSON, я хотел сохранить решение в PowerShell (включая V1).
В следующем примере используется класс 3.5 JavaScriptSerializer, который требует загрузки сборки в нашем script.
Update
С 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
Ответ 3
В Powershell v3 CTP1 он короче и проще:
function Get-StackOverflowReputation {
param($userID)
$JSON = (Invoke-WebRequest "http://stackoverflow.com/users/flair/$userid.json").content
convertfrom-Json $JSON
}
работает
Get-StackOverflowReputation 1021945
возвращает:
id : 1021945
gravatarHtml :
profileUrl : http://stackoverflow.com/users/1021945/jon-z
displayName : jon Z
reputation : 1,271
badgeHtml : <span title="1 silver badge"><span class="badge2">●</span><span class="badgecount">1</span></span><span title="7 bronze badges"><span lass="badge3">●/span><span class="badgecount">7</span></span>