So we are moving to Windows server core. What do you know, the SQL DBA's life has become bit more complicated and the SQL DBA's need few more tool added to their belt.
Just wanted to share my first .ps1 . The objective of the script was to identify the space usage of the server participating in HADR replication.
Few things to Note
- The user executing the script should have permission to read data off the "Sys.dm_hadr_availability_replica_cluster_nodes" DMV
- Should have a folder "ServerDetails" in the desktop or should have the permission to create the folder under the ps1 user context.
- A text file will be created in the "ServerDetails" folder which will be automatically created.
I am sure there will be more versions of this PS1 in the next few weeks. But for the moment, i want to share my success :)
Cheers yo
#--===============================================================================
#-- Input to get the AG details$Str_Server_AG_name = Read-Host ' What is the AG name ? '
#-- Get the current user path to dump the data to the folder
$Str_UserDesktopPath = [Environment]::GetFolderPath("Desktop")
$Str_UserDesktopPath = $Str_UserDesktopPath + "\ServerDetails"
#--- Create th folder if it didn't exists
if(!(Test-Path -Path $Str_UserDesktopPath))
{
new-item -Path $Str_UserDesktopPath -Value "new Folder" –itemtype directory
}
$Str_ServerDetailsFile = $Str_UserDesktopPath + "\"+ $Str_Server_AG_name +".txt"
#-- identify the servers in the AG and addes the server to a array
$Arr_ReplicaList = Invoke-Sqlcmd -Query "Select Node_name from Sys.dm_hadr_availability_replica_cluster_nodes;" -ServerInstance $Str_Server_AG_name
if($Arr_ReplicaList.Count -eq 0 )
{
Write-Host 'There are no Server inwerwer the AG OR the AG does not exits'
Exit
}
#-- Loops through the list of server
for ($i=0;$i -lt $Arr_ReplicaList.Length; $i++)
{
$Compname = $Arr_ReplicaList[$i].Node_name
$Compname >> $Str_ServerDetailsFile
Get-WmiObject -ComputerName $Compname -Class Win32_LogicalDisk |
Where-Object {$_.DriveType -eq 3 } |
Sort-Object -Property Name |
Select-Object Name, VolumeName, FileSystem, Description, VolumeDirty, `
@{"Label"="DiskSize(GB)";"Expression"={"{0:N}" -f ($_.Size/1GB) -as [float]}}, `
@{"Label"="FreeSpace(GB)";"Expression"={"{0:N}" -f ($_.FreeSpace/1GB) -as [float]}}, `
@{"Label"="%Free";"Expression"={"{0:N}" -f ($_.FreeSpace/$_.Size*100) -as [float]}} |
Format-Table -AutoSize >> $Str_ServerDetailsFile
}
#-- Open the file that has the server details which is in $Str_ServerDetailsFile
Invoke-Item $Str_ServerDetailsFile
Comments
Post a Comment