Ahh got it, throw all this into a .ps1 file, then run it like:
powershell -FILE C:\yourScript.ps1
#Server/DB for your repository
$Server = "yourServerName"
$Database = "yourDBName"
## SQL connection function
# removes the need to install the SQL extensions for PowerShell
function Invoke-Sqlcmd2
{
param([string]$ServerInstance,
[string]$Database,
[string]$Query,
[Int32]$QueryTimeout=30
)
$conn=new-object System.Data.SqlClient.SQLConnection
$conn.ConnectionString="Server={0};Database={1};Integrated Security=True" -f $ServerInstance,$Database
$conn.Open()
$cmd=new-object system.Data.SqlClient.SqlCommand($Query,$conn)
$cmd.CommandTimeout=$QueryTimeout
$ds=New-Object system.Data.DataSet
$da=New-Object system.Data.SqlClient.SqlDataAdapter($cmd)
[void]$da.fill($ds)
$conn.Close()
$ds.Tables[0]
}
## Begin Code
$con = "Server=$Server;Database=$Database;Integrated Security=True"
$cmd = "SELECT DISTINCT ServerName FROM yourListofServers WHERE IsActive=1"
$da = new-object System.Data.SqlClient.SqlDataAdapter ($cmd, $con)
$dt = new-object System.Data.DataTable
$da.fill($dt) | out-null
foreach ($srv in $dt)
{
$ServerName = $srv.ServerName
$Reply = Test-Connection -ComputerName $ServerName -Count 1 -Quiet
# if ping returns then continue
if ($Reply –eq “True”)
{
#Write-Host $ServerName
$disks = Get-WMIObject -ComputerName $ServerName Win32_LogicalDisk -Filter "DriveType=3"
foreach ($disk in $disks)
{
[float]$freespace = $disk.FreeSpace;
[float]$capacity = $disk.Size;
$freeSpaceGB = [Math]::Round($freespace / 1073741824, 1);
$totalsizeGB = [Math]::Round($capacity / 1073741824, 1);
$driveletter = $disk.DeviceID
#Write-Host $disk.DeviceID", "$freeSpaceGB", "$totalsizeGB
$sql = "Exec spYourRefreshProc '$ServerName', '$driveletter', $freeSpaceGB, $totalsizeGB"
#Write-Host $sql
Invoke-Sqlcmd2 -serverinstance $Server -database $Database -query $sql
}
}
$Reply = ""
}
MCSA SQL 2014