Como gerar um relatório abrangente de LAN sem fio usando o PowerShell

Os relatórios de LAN sem fio são indispensáveis no setor de TI. A capacidade de entender de forma rápida e eficiente o estado, o desempenho e as possíveis vulnerabilidades de segurança das redes sem fio é vital para as empresas, grandes ou pequenas. Por meio de um script do PowerShell bem estruturado, é possível fazer isso sem problemas, oferecendo aos profissionais de TI e aos provedores de serviços gerenciados (MSPs) a capacidade de gerar um relatório abrangente da LAN sem fio

Histórico

Em uma época em que o tempo de atividade e a segurança da rede são fundamentais, a capacidade de gerar um relatório de LAN sem fiose torna uma necessidade. Esses relatórios ajudam os profissionais de TI a monitorar a integridade de suas redes, compreender o comportamento do usuário e detectar possíveis anomalias que possam indicar violações de segurança. Para os MSPs que gerenciam redes de vários clientes, esses relatórios oferecem uma maneira tangível de mostrar o trabalho realizado e os insights obtidos. O script fornecido é uma ferramenta que pode ser aproveitada pelos profissionais de TI para automatizar e simplificar esse processo de geração de relatórios, aproveitando o poder do script do PowerShell.

O roteiro

#Requires -Version 5.1

<#
.SYNOPSIS
    Saves a Wireless LAN report to a Multi-Line Custom Field.
.DESCRIPTION
    Saves a Wireless LAN report to a Multi-Line Custom Field.
.EXAMPLE
     -CustomField "wlanreport"
    Saves a Wireless LAN report to a Multi-Line Custom Field.
.OUTPUTS
    None
.NOTES
    Minimum OS Architecture Supported: Windows 10, Windows Server 2016
    Release Notes:
    Initial Release
By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https://www.ninjaone.com/terms-of-use.
    Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. 
    Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. 
    Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. 
    Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. 
    Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. 
    Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. 
    EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).
#>

[CmdletBinding()]
param (
    [Parameter()]
    [String]
    $CustomField = "wlanreport"
)

process {
    if (-not (Test-IsElevated)) {
        Write-Error -Message "Access Denied. Please run with Administrator privileges."
        exit 1
    }
    if ($env:CustomField) {
        # Use Script Variable and overwrite parameter
        $CustomField = $env:CustomField
    }
    $WLanReportXmlPath = "C:ProgramDataMicrosoftWindowsWlanReportwlan-report-latest.xml"
    # Generate the wlan report
    netsh.exe wlan show wlanreport | Out-Null
    # Check that the xml report exists
    if (-not $(Test-Path -Path $WLanReportXmlPath)) {
        Write-Host "[Error] $WLanReportXmlPath was not created by: netsh.exe wlan show wlanreport"
        exit 1
    }
    # Convert the report from XML to a hash table
    $WLanReport = [xml[]]$(Get-Content -Raw -Path $WLanReportXmlPath) | ConvertFrom-Xml
    # Get the date that the report was generated
    $ReportDate = [DateTime]::ParseExact($WLanReport.WlanReport.ReportInformation.ReportDate -replace 'Z', "yyyy'-'MM'-'dd'T'HH':'mm':'ss", $null)
    # Collect data into one variable
    $Report = if ($WLanReport) {
        # Output the date of the report
        Write-Output "Report Date : $ReportDate"
        # Output the user information
        $WLanReport.WlanReport.UserInformation | Format-Table
        # Output the saved Access Points
        $WLanReport.WlanReport.Profiles.'Wi-Fi'.Keys | ForEach-Object {
            $AccessPointName = $_
            $AccessPointData = [xml[]]$WLanReport.WlanReport.Profiles.'Wi-Fi'."$AccessPointName"
            if ($null -ne $AccessPointData) {
                $AccessPoint = $AccessPointData | ConvertFrom-Xml
                [PSCustomObject]@{
                    AccessPointName  = $AccessPointName
                    Authentication   = $AccessPoint."$AccessPointName".MSM.security.authEncryption.authentication
                    Encryption       = $AccessPoint."$AccessPointName".MSM.security.authEncryption.encryption
                    MacRandomization = $AccessPoint."$AccessPointName".MacRandomization.enableRandomization
                }
            }
        } | Format-Table
        
        # Output the system information
        $WLanReport.WlanReport.SystemInformation.Keys | ForEach-Object {
            $Data = $($WLanReport.WlanReport.SystemInformation."$($_)")
            if ($Data -is "String") {
                Write-Output "$_ : $Data"
            }
        }
        # Output network adapters
        Get-NetAdapter | Format-Table Name, InterfaceDescription, Status, MacAddress, LinkSpeed, MediaType
    }
    else {
        $null
    }

    if ($Report) {
        # Output report to Activity Feed
        $Report | Out-String | Write-Host
        # Save report to multi-line custom field
        Ninja-Property-Set -Name $CustomField -Value $($Report | Out-String)
    }
    else {
        Write-Host "Could not generate wlan report."
        exit 1
    }
    
}
begin {
    function Test-IsElevated {
        $id = [System.Security.Principal.WindowsIdentity]::GetCurrent()
        $p = New-Object System.Security.Principal.WindowsPrincipal($id)
        $p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)
    }
    function ConvertFrom-Xml {
        param([parameter(Mandatory, ValueFromPipeline)] [System.Xml.XmlNode] $node)
        process {
            if ($node.DocumentElement) { $node = $node.DocumentElement }
            $oht = [ordered] @{}
            $name = $node.Name
            if ($node.FirstChild -is [system.xml.xmltext]) {
                $oht.$name = $node.FirstChild.InnerText
            }
            else {
                $oht.$name = New-Object System.Collections.ArrayList 
                foreach ($child in $node.ChildNodes) {
                    $null = $oht.$name.Add((ConvertFrom-Xml $child))
                }
            }
            $oht
        }
    }
}
end {
    $ScriptVariables = @(
        [PSCustomObject]@{
            name           = "CustomField"
            calculatedName = "customfield"
            required       = $true
            defaultValue   = [PSCustomObject]@{
                type  = "TEXT"
                value = "wlanreport"
            }
            valueType      = "TEXT" # Must be uppercase!
            valueList      = $null
            description    = "A multi-line Custom Field that the report will be saved to."
        }
    )
}

 

Acesse mais de 300 scripts no NinjaOne Dojo

Obter acesso

Detalhamento

O script começa verificando a versão necessária, que é a 5.1, garantindo a compatibilidade. Em seguida, são fornecidos uma sinopse, uma descrição e exemplos, oferecendo uma explicação sucinta do objetivo do script.

Em seguida, os parâmetros são definidos para o script, sendo o padrão “wlanreport” No bloco “processo”, o script verifica se há privilégios elevados. Sem direitos de administrador, o script não será executado. Em seguida, ele verifica se há uma variável de ambiente chamada “CustomField” Se for encontrado, ele substituirá o parâmetro do script.

A parte principal do script gera o relatório da WLAN por meio do comando netsh.exe wlan show wlanreport e, em seguida, verifica se o relatório foi criado com êxito. Após a validação, ele converte esse relatório XML em uma tabela de hash mais legível, extrai dados úteis, como informações do usuário, pontos de acesso e informações do sistema, e os formata de forma adequada em um formato de tabela.

O bloco final do script define algumas funções personalizadas, como Test-IsElevated, que verifica se o script é executado com direitos elevados, e ConvertFrom-Xml, uma função para converter dados XML.

Casos de uso em potencial

Imagine Sarah, uma profissional de TI em uma empresa de médio porte. Recentemente, o escritório sofreu algumas flutuações na rede e a tarefa de Sarah é diagnosticar qualquer problema com a WLAN. Usando esse script, ela pode gerar rapidamente um relatório detalhado da WLAN, revelando dados relacionados a conexões de usuários, pontos de acesso ativos e detalhes do sistema, ajudando-a a identificar a causa raiz do problema.

Comparações

Tradicionalmente, a geração de um relatório de WLAN envolveria intervenções manuais, usando ferramentas integradas do sistema operacional, software de terceiros ou até mesmo ferramentas de hardware. Embora esses métodos ainda sejam válidos, o script do PowerShell fornecido oferece automação, velocidade e consistência, o que é especialmente vantajoso para os MSPs que gerenciam várias redes e precisam de uma abordagem padronizada.

Implicações

Embora o script ajude a gerar relatórios abrangentes de WLAN, os usuários devem entender seus resultados para tomar decisões de segurança significativas. Deixar de observar detalhes específicos ou interpretar mal os dados pode fazer com que as vulnerabilidades de segurança passem despercebidas.

Recomendações

  • Sempre execute o script com as permissões necessárias.
  • Certifique-se de que sua versão do PowerShell seja compatível.
  • Analise e interprete regularmente os relatórios gerados para tomar decisões eficazes.

Considerações finais

Para os profissionais de TI, o NinjaOne oferece uma plataforma centralizada para gerenciar a infraestrutura de TI. O acoplamento desse script com os recursos do NinjaOne pode aprimorar o monitoramento, o gerenciamento e a geração de relatórios sobre redes sem fio, fornecendo uma abordagem holística para o gerenciamento de redes de TI. Ao aproveitar ferramentas como o script do PowerShell fornecido, os profissionais de TI podem trabalhar de forma mais inteligente, e não mais difícil, garantindo que suas redes estejam sempre com o melhor desempenho.

FAQs

Esse script requer especificamente a versão 5.1 devido a algumas funcionalidades que ele aproveita. A tentativa de usá-lo com versões mais antigas pode levar a problemas de compatibilidade.

O script pode ser modificado. Você precisaria alterar a variável $WLanReportXmlPath para o local desejado.

Próximas etapas

Montar uma equipe de TI eficaz requer uma solução centralizada que seja a principal ferramenta de entrega de serviços. Com NinjaOne, a TI monitora, gerencia, protege e oferece suporte a todos os dispositivos, onde quer que estejam, dispensando infraestrutura complexa no local.

Saiba mais sobre a solução NinjaOne Remote Script Deployment, agende uma demonstração, ou inicie sua avaliação gratuita da plataforma NinjaOne.

Categories:

You might also like

Como instalar o .NET Framework 4 usando o PowerShell

Como gerar um relatório abrangente de LAN sem fio usando o PowerShell

Como habilitar o Microsoft Store para todos os usuários usando o PowerShell

Como detectar software de acesso remoto em um sistema usando o PowerShell

Como identificar unidades desbloqueadas e totalmente descriptografadas usando o PowerShell

Como detectar o tempo ocioso do usuário usando o PowerShell