【发布时间】:2015-11-16 10:51:45
【问题描述】:
我不是 Powershell 背景。
我即将安排需要发送邮件的任务;如果磁盘大小小于预期限制。
以下是我正在使用的脚本:
$servers = Get-Content "C:\serverlist.txt";
foreach($server in $servers)
{
# Get fixed drive info
$disks = Get-WmiObject -ComputerName $server -Class Win32_LogicalDisk -Filter "DriveType = 3";
foreach($disk in $disks)
{
$deviceID = $disk.DeviceID;
[float]$size = $disk.Size;
[float]$freespace = $disk.FreeSpace;
#Here you have to mention the drive id for example i mentioned 'C' drive below
if($deviceID -eq "C:")
{
$percentFree = [Math]::Round(($freespace / $size) * 100, 2);
$sizeGB = [Math]::Round($size / 1073741824, 2);
$freeSpaceGB = [Math]::Round($freespace / 1073741824, 2);
if($freeSpaceGB -lt 100)
{
$EmailFrom = "monitoring@mydomainname.no"
$EmailTo = "fatherazrael@evry.com"
$Subject = "Disk Space"
$Body = "$disk drive space is less free space in $server server: $freeSpaceGB"
$SMTPServer = "scan.opinkerfi.is"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 25)
#$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("<From mail ID>", "Password"); //Not Required
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
}
}
}
}
我不知道如何应用日志记录。有人能弄清楚问题出在哪里吗?事件查看器或任何地方都没有日志。
我可以使用事件查看器、任务计划程序和性能工具来配置所有这些,但我被告知要使用 Powershell。
【问题讨论】:
-
如果您直接从 powershell 运行脚本,您应该会收到错误消息(如果存在)
-
这里回答了如何将错误输出到日志文件中:stackoverflow.com/questions/3008545/…
-
如果您希望 PowerShell 脚本将某些内容记录到事件日志中,您需要 instruct it to actually do that。
-
注意:您的脚本非常适合我。
-
我在任务计划程序中使用它。我的磁盘是 227 GB C: 驱动器和 227 GB D 驱动器。我在服务器列表中使用计算机名称 something.domainname.com。我在任务调度程序中配置它,在操作启动程序并给出 .ps1 文件的路径下。
标签: powershell scheduled-tasks