es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Guardar las propiedades de una cuenta de almacenamiento de Azure en formato CSV

Estoy ejecutando el siguiente código para obtener la versión de TLS de todas mis cuentas de almacenamiento en todas mis suscripciones. El único problema en este momento es que no puedo exportar el resultado a un archivo CSV para poder enviar los resultados. ¿Qué debo agregar al código para que guarde el nombre de la cuenta de almacenamiento, el grupo de recursos, la suscripción y la versión de TLS en una fila pero en columnas separadas?

  [PsObject[]]$data = @()

#$Subscriptions = Get-AzSubscription
#foreach ($sub in $Subscriptions) {
    #Get-AzSubscription -SubscriptionName $sub.Name | Set-AzContext
    $storageaccounts = Get-AzStorageAccount
    $storageaccounts| ForEach-Object {
      Write-Host Comprobando $_.StorageAccountName
      $tls = (Get-AzStorageAccount -ResourceGroupName $_.ResourceGroupName -Name $_.StorageAccountName).MinimumTlsVersion
      # crear un objeto personalizado para almacenar la información de una cuenta de almacenamiento
      $tlsVersionData = [PsObject]@{
        "NombreCuentaAlmacenamiento" = $_.StorageAccountName
        "NombreGrupoRecursos" = $_.ResourceGroupName
        "VersionTLS" = $tls
      }
      # agregar ese objeto personalizado al arreglo
      $data += $tlsVersionData
    }
#}

# escribir un archivo CSV que contenga estos datos
$data | Export-Csv C:\temp\data.csv

Write-Host muestra la información correcta sobre la cuenta de almacenamiento en la pantalla, pero estoy un poco perdido en cómo guardar los datos en un archivo CSV.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para guardar el nombre de la cuenta de almacenamiento, el grupo de recursos, la suscripción y la versión de TLS en una única fila en columnas separadas en un archivo CSV, puedes modificar el objeto $tlsVersionData y especificar el nombre de la suscripción también.

    Puedes agregar la siguiente línea después de la propiedad ResourceGroupName:

    "SubscriptionName" = (Get-AzContext).Name

    Esta línea obtendrá el nombre de la suscripción actualmente seleccionada y lo almacenará en la propiedad SubscriptionName del objeto $tlsVersionData.

    Luego, para exportar los datos a un archivo CSV en el formato deseado, puedes utilizar el cmdlet Export-Csv con el parámetro -NoTypeInformation para excluir la información del tipo de objeto en la salida CSV.

    El código modificado se vería así:

    [PsObject[]]$data = @()
    
    $storageaccounts = Get-AzStorageAccount
    foreach ($sa in $storageaccounts) {
        Write-Host Verificando $sa.StorageAccountName
        $tls = (Get-AzStorageAccount -ResourceGroupName $sa.ResourceGroupName -Name $sa.StorageAccountName).MinimumTlsVersion
    
        # crear un objeto personalizado para almacenar la información sobre una cuenta de almacenamiento
        $tlsVersionData = [PsObject]@{
            "StorageAccountName" = $sa.StorageAccountName
            "ResourceGroupName" = $sa.ResourceGroupName
            "SubscriptionName" = (Get-AzContext).Name
            "TLSVersion" = $tls
        }
    
        # agregar ese objeto personalizado al arreglo
        $data += $tlsVersionData
    }
    
    # escribir un archivo CSV que contenga estos datos
    $data | Export-Csv -Path "C:\temp\data.csv" -NoTypeInformation
    

    Este código modificado debería guardar los datos en el formato requerido en el archivo CSV especificado.

Comments are closed.