Может кто-нибудь помочь мне с этим? Я запустил приведенный ниже скрипт, чтобы получить место на диске сервера SQL Server, но я получаю сообщение об ошибке, показанное здесь. LAPTOP-45
- это имя компьютера для SQL Сервера, а Power SQL - это имя базы данных.
*$params = @{"Server"="LAPTOP-45";"Database"="PowerSQL"}
Function writeDiskInfo
{
param($server,$devId,$volName,$frSpace,$totSpace)
$totSpace=[math]::Round(($totSpace/1073741824),2)
$frSpace=[Math]::Round(($frSpace/1073741824),2)
$usedSpace = $totSpace - $frspace
$usedSpace=[Math]::Round($usedSpace,2)
$freePercent = ($frspace/$totSpace)*100
$freePercent = [Math]::Round($freePercent,0)
$InsertResults = @"INSERT INTO [PowerSQL].[dbo].[TLOG_DiskDetails](servername, DriveName, DriveLabel, TotalCapacity, UsedCapacity, FreeSpace, FreeSpacePercentage)
VALUES (''$SERVER'', ''$devId'', ''$volName'', $totSpace, $usedSpace, $frSpace, $freePercent)
"@
invoke-sqlcmd @params -Query $InsertResults
}
Function Get-ServerDiskStatus ($SQLInstance)
{
$dp = Get-WmiObject win32_logicaldisk -ComputerName $SQLInstance| Where-Object {$_.drivetype -eq 3}
foreach ($item in $dp)
{
writeDiskInfo $SQLInstance $item.DeviceID $item.VolumeName $item.FreeSpace $item.Size
}
}
$Srv = invoke-sqlcmd @params -Query "SELECT ServerName from dbo.WinServers "
foreach ($Instance in $srv)
{
Get-ServerDiskStatus $Instance.ServerName
}*