, но при извлечении в csv значения равны нулю
В этой строке кода $report_temp | Add-Member -MemberType NoteProperty -Name "Detail" -Value $output.Message
вы должны использовать $output.Message[0]
вместо $output.Message
(потому что тип $output.Message
это массив, вам нужно использовать индекс для извлечения значения, иначе он не будет добавлять детали к отчету.)
как я могу напечатать отдельное значение, например, StandardName
вам лучше преобразовать вывод в json, а затем преобразовать его в пользовательский объект PSCustomObject. И вы можете использовать свойства (например, StandardName) объекта.
Вот завершенный код:
$report =$null
$report= @()
$vms = get-azvm #vmname detail
foreach( $vm in $vms){
$data =get-azvm -ResourceGroupName $vm.resourcegroupname -Name $vm.name -Status
if ( ($data.OsName -contains "Windows Server 2016 Datacenter") -and ($data.Statuses.DisplayStatus -contains "VM running") )
{
Write-Host server name is : $data.Name
$invoke = Invoke-AzVMRunCommand -ResourceGroupName $vm.ResourceGroupName -VMName $vm.Name -CommandId RunPowerShellScript -ScriptPath ./timezone.ps1
$output=$invoke.Value[0,1]
$output
$report_temp = new-object psobject
$report_temp | Add-Member -MemberType NoteProperty -Name "VM Name" -Value $data.Name
$report_temp | Add-Member -MemberType NoteProperty -Name "Detail" -Value $output.Message[0]
#here convert the $output to json
$temp =$output.message[0]
$temp = $temp | ConvertTo-Json
$temp = $temp.Replace("\n\n","\n").replace("\n\n","\n").replace("\n",";")
$temp = $temp.Remove($temp.LastIndexOf(";"),1)
$temp = $temp -replace '\s',''
$temp = $temp -replace '\"',''
$items = [ordered]@{}
$temp.Split(";") | ForEach-Object {
$key, $value = $_.Split(":")
$items[$key] = $value
}
$t2 = $items | ConvertTo-Json
#here convert the json to custom PSCustomObject object
$b1 = $t2 | ConvertFrom-Json
#here, add the StandardName to the report
$report_temp | Add-Member -MemberType NoteProperty -Name "StandardName" -Value $b1.StandardName
#assiging value to variable which we had created eariler
$report += $report_temp
}
}
$report |export-csv "c:\date.csv"