ฉันมีความรู้จำกัดเกี่ยวกับ PowerShell แต่ฉันต้องการคำนวณ ขนาดรวม (เป็น GB) ของแต่ละบัญชีที่เก็บข้อมูล, หรือ แต่ละคอนเทนเนอร์ ในบัญชีที่เก็บข้อมูลของฉัน ฉันมี บัญชีการจัดเก็บและคอนเทนเนอร์หลายรายการใน กลุ่มทรัพยากรหลายกลุ่ม.
ฉันประสบปัญหาในการรวบรวมสคริปต์ที่ดึงบัญชีที่เก็บข้อมูลและคอนเทนเนอร์ทั้งหมด เนื่องจากฉันมีกลุ่มทรัพยากรมากกว่าหนึ่งกลุ่ม ฉันพบสคริปต์ด้านล่างที่ใช้งานได้ดี แต่ต้องป้อนชื่อของ บัญชีที่เก็บข้อมูลเดี่ยวและกลุ่มทรัพยากร.
เป็นการดีที่ฉันต้องการสามารถ เลือกบัญชีที่เก็บข้อมูลทั้งหมด ในการสมัครสมาชิกของฉันและ ไม่ ถูกบังคับให้ป้อนชื่อบัญชีที่เก็บข้อมูลแต่ละรายการและกลุ่มทรัพยากร ฉันขอขอบคุณสำหรับความช่วยเหลือ / คำแนะนำเกี่ยวกับสิ่งนี้ ขอบคุณ!
# เชื่อมต่อกับ Azure
เชื่อมต่อ AzureRmAccount
# ค่าคงที่สำหรับกลุ่มทรัพยากรและชื่อบัญชีที่เก็บข้อมูล
$resourceGroup = "RGP-01"
$storageAccountName = "storagestg3"
# รับการอ้างอิงไปยังบัญชีการจัดเก็บและบริบท
$storageAccount = รับ AzureRmStorageAccount `
-ResourceGroupName $resourceGroup `
-ชื่อ $storageAccountName
$ctx = $storageAccount.Context
# รับคอนเทนเนอร์ Blob ทั้งหมด
$AllContainers = Get-AzureStorageContainer -Context $ctx
$AllContainersCount = $AllContainers.Count
โฮสต์เขียน "เราพบคอนเทนเนอร์ '$($AllContainersCount)' ขนาดการประมวลผลสำหรับแต่ละคอนเทนเนอร์"
# เคาน์เตอร์ศูนย์
$TotalLength = 0
$TotalContainers = 0
# วนซ้ำเพื่อข้ามแต่ละคอนเทนเนอร์และคำนวณขนาด
Foreach ($คอนเทนเนอร์ใน $AllContainers){
$TotalContainers = $TotalContainers + 1
เขียนโฮสต์ "การประมวลผลคอนเทนเนอร์ '$($TotalContainers)'/'$($AllContainersCount)'"
$listOfBLobs = Get-AzureStorageBlob -คอนเทนเนอร์ $Container.Name -บริบท $ctx
#ศูนย์จากผลรวมของเรา
ความยาว $ = 0
# สิ่งนี้วนซ้ำผ่านรายการของ blobs และดึงความยาวสำหรับแต่ละ blob และเพิ่มเข้ากับผลรวม
$listOfBlobs | ForEach-Object {$length = $length + $_.Length}
$TotalLength = $TotalLength + $ความยาว
}
# จบลูปคอนเทนเนอร์
#แปลงความยาวเป็น GB
$TotalLengthGB = ความยาวทั้งหมด $/1024/1024/1024
#ผลลัพธ์ที่ออกมา
โฮสต์การเขียน "ความยาวทั้งหมด = " $TotallengthGB "GB"