Я хочу получить данные из 2 команд и объединить их в 1 объект.Моя цель - получить использование и стоимость Партнерского центра .Для этого я получил использование и стоимость с командой Get-PartnerCustomerSubscriptionUsage
модуля Центр партнеров .Но когда я получил информацию о моем клиенте / подписке, я получил уродливый ResourceID в своем отчете.И это не презентабельно.Вот почему мне нужно получить реальное ResourceName, а не имя ресурса, которое предоставляется командой Get-PartnerCustomerSubscriptionUsage
.
После некоторого поиска в документации у меня появилась идея извлечь ResourceUri, который имеет весь uri, например /subscription/xxxxx/Resourcegroup/xxxx/ms.vm/Имя, которое я хочу в своем отчете.Команда, имеющая это значение: Get-PartnerCustomerSubscriptionUtilization.Поэтому я догадался, что я просто отказываюсь от Get-PartnerCustomerSubscriptionUsage и использую вместо него PartnerCustomerSubscriptionUtilization
, но у него нет общей стоимости на каждый ресурс Azure.
Хорошо, держитесь за меня, проблема в том, чтобы туда добраться.
Итак, теперь я создал скрипт Powershell, который будет запускать обе команды и объединять их внутри объекта Powershell, который будет экспортирован в CSV.Я могу запустить одну команду, предоставив информацию из этого командного объекта в мой созданный пользовательский объект, и экспортировать ее в csv.Проблема начинается, когда я хочу объединить оба.
$Customers= Get-PartnerCustomer
for ($i=0 ; $i -lt $Customers.length; $i ++){
$subscription = Get-PartnerCustomerSubscription -CustomerId $Customers[$i].CustomerId
for ($j=0 ; $j -lt $subscription.length; $j ++){
if ( $subscription[$j].UnitType -eq "Usage-based" )
{
#Create title in csv
$customerId = $Customers[$i].CustomerId
$customerName= $Customers[$i].Name
$subscriptionId = $subscription[$j].SubscriptionId
$subscriptionName = $subscription[$j].OfferName
$usage = Get-PartnerCustomerSubscriptionUsage -CustomerId $customerId -SubscriptionId $subscriptionId
#new object for the export excel
$ExportExcel = New-Object -TypeName PSObject
$array = New-Object -TypeName PSObject
$End= (get-date).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss-08:00")
$Start = (Get-Date).AddDays(-1).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss-08:00")
$util = Get-PartnerCustomerSubscriptionUtilization -CustomerId $customerId -SubscriptionId $subscriptionId -StartDate $Start -EndDate $End -ShowDetails
for ($y=0 ; $y -lt $util.length; $y ++)
{
$array = [PSCustomObject][ordered]@{
"ResourceID"=$util[$y].Id
"ResourceName"=$util[$y].ResourceUri.OriginalString
}
}
for ($z=0 ; $z -lt $usage.length; $z ++)
{
$LastModifiedDate = $usage[$z].LastModifiedDate.DateTime.ToString("yyyy-MM-dd")
if ( $LastModifiedDate -ge $Lastdate )
{
if ($usage[$z].ResourceId -eq $array[$z].ResourceID){
#Add-Member -InputObject $ExportExcel -MemberType NoteProperty -Name "Category" -Value $array[$z].ResourceName -Force
**echo $array[$z].ResourceName**
}
Add-Member -InputObject $ExportExcel -MemberType NoteProperty -Name "Category" -Value $usage[$z].Category -Force
Add-Member -InputObject $ExportExcel -MemberType NoteProperty -Name "QuantityUsed" -Value $usage[$z].QuantityUsed -Force
Add-Member -InputObject $ExportExcel -MemberType NoteProperty -Name "ResourceId" -Value $usage[$z].ResourceId -Force
}
}
$ExportExcel | Export-Csv –append -Path "C:\$customername.csv" -NoTypeInformation
}
}
}
Как вы можете видеть, я прочитал все из одной команды внутри объекта, а затем перебрал другую.Как только ресурс идентифицируется по обеим командам, мне нужно добавить его в объект.(для тестирования я просто проверяю это с помощью эха) Эхо с ***** ничего не печатает.Поэтому я не могу получить Resourcename внутри моего CSV.Кто-нибудь знает, что я делаю не так.Где комбинация 2 объектов терпит неудачу?