Ao gerenciar um conjunto de servidores em um ambiente SQL Server, é importante ter uma compreensão clara dos tamanhos de disco em cada servidor. Essas informações podem ajudar no planejamento de capacidade, otimização de desempenho e solução de problemas. Neste artigo, exploraremos um script que pode ser usado para encontrar o tamanho do disco em um conjunto de servidores.
O script fornecido abaixo é um script PowerShell que pode ser executado para recuperar os tamanhos de disco:
# Script para encontrar a lista de unidades e tamanho da unidade em um conjunto de servidores
# Criado por - Vinoth N Manoharan
# Versão 1.1
# Data - 15/09/2011
Clear-Host
$List = @()
if ($args.Length -ne 2) {
Write-Host "Contagem de parâmetros incorreta. Use -s ou -f para especificar o nome do servidor/lista de servidores"
} elseif (($args[0] -eq "-s") -or ($args[0] -eq "-S")) {
$computer = $args[1]
$drives = @()
if ($computer -ne $null) {
$srt = "Nome do Servidor :- " + $computer
$srt Echo "---------------------------"
# Propriedades para objeto de disco lógico do PowerShell:
$drives = Get-WmiObject -ComputerName $computer Win32_LogicalDisk | Where-Object { $_.DriveType -eq 3}
$drives | Add-Member -MemberType ScriptProperty -Name SizeGB -Value {[math]::Round(($this.Size / 1GB),2)} -PassThru |
Add-Member -MemberType ScriptProperty -Name FreeSpaceGB -Value {[math]::Round(($this.FreeSpace / 1GB),2)} -PassThru |
ft Name, SizeGB, FreeSpaceGB -AutoSize
}
} elseif (($args[0] -eq "-f") -or ($args[0] -eq "-F")) {
$filename = $args[1]
$computers = get-content $filename
foreach ($computer in $computers) {
$drives = @()
if ($computer -ne $null) {
$srt = "Nome do Servidor :- " + $computer
$srt Echo "---------------------------"
# Propriedades para objeto de disco lógico do PowerShell:
$drives = Get-WmiObject -ComputerName $computer Win32_LogicalDisk | Where-Object { $_.DriveType -eq 3}
$drives | Add-Member -MemberType ScriptProperty -Name SizeGB -Value {[math]::Round(($this.Size / 1GB),2)} -PassThru |
Add-Member -MemberType ScriptProperty -Name FreeSpaceGB -Value {[math]::Round(($this.FreeSpace / 1GB),2)} -PassThru |
ft Name, SizeGB, FreeSpaceGB -AutoSize
}
}
} else {
Write-Host "Parâmetro incorreto. Use -s ou -f para especificar o nome do servidor/lista de servidores"
}
O script pode ser executado com dois parâmetros diferentes:
- -s: Este parâmetro é usado para especificar um único servidor. Por exemplo:
FindDiskSize.ps1 -s <nomedoservidor>
- -f: Este parâmetro é usado para especificar um arquivo contendo uma lista de servidores. Por exemplo:
FindDiskSize.ps1 -f <nomedoarquivo com caminho completo como c:\test.txt>
Ao usar o parâmetro -s, o script recuperará os tamanhos de disco para o servidor especificado. Ao usar o parâmetro -f, o script lerá a lista de servidores do arquivo especificado e recuperará os tamanhos de disco para cada servidor da lista.
O script utiliza o cmdlet Get-WmiObject
do PowerShell para recuperar informações sobre os discos lógicos nos servidores. Ele filtra os resultados para incluir apenas discos com um tipo de unidade 3, que representa discos locais.
O script também calcula os tamanhos de disco em gigabytes (GB) usando o método [math]::Round
. Os tamanhos calculados são então exibidos em formato de tabela, mostrando o nome do disco, tamanho em GB e espaço livre em GB.
Ao executar este script, você pode facilmente obter informações sobre os tamanhos de disco em seu ambiente SQL Server. Essas informações podem ser valiosas para monitorar o uso de disco, identificar possíveis problemas de armazenamento e planejar o crescimento futuro.
Lembre-se sempre de revisar e validar os resultados obtidos a partir do script para garantir precisão e confiabilidade.