Before I could get started, I grabbed some of the Rackspace PowerShell bits at http://developer.rackspace.com/blog/powerclient-rackspace-cloud-api-powershell-client.html. It turns out that, as of my time of need for this module from Rackspace, the module had no Cloud Files features in it. So I rolled my own. I was given a quick curl command from the fanatical support tech at Rackspace to grab the data I needed for my reports. I'm working on learning PowerShell, so I decided to find a nice PowerShell way to get my curl goodies. Most folks will say that you should use Invoke-RestMethod, but the problem with this approach is that it does not return any headers. Rackspace returns the information I need in the header. Instead, I need to use Invoke-WebRequest. The return value has a Headers property that gives you access to the response headers. So my cool little script looks like this:
function WriteOutFileStats($count, $byteCount){ Write-Host ([string]::Format("Files = {0:N0}", $count)) $gbCount = $byteCount / 1024 / 1024 / 1024 Write-Host ([string]::Format("Size(GB) = {0:N2}", $gbCount)) } Write-Host "Rackspace------------------------------------------------------------------------------" Import-Module PowerClient Get-AuthToken $rackspaceUrl = "" foreach ($service in $token.access.serviceCatalog.service) { if ($service.name -eq "cloudFiles") { foreach ($endpoint in $service.endpoint) { if ($endpoint.region -eq "ORD") { $rackspaceUrl = $endpoint.publicURL } } } } $resp = Invoke-WebRequest -Uri $rackspaceUrl -Headers $HeaderDictionary -Method Head WriteOutFileStats $resp.Headers["X-Account-Object-Count"] $resp.Headers["X-Account-Bytes-Used"] Write-Host (Get-Date)
No comments:
Post a Comment