Powershell 调度磁盘空间导入
Powershell Scheduling Diskspaces import
OS windows 8,我正在安排一个脚本来导入空闲磁盘空间以导入 csv 文件,使用 windows 任务 schedular.The 脚本手动运行但没有它在计划时给出的输出是 task schedular 。使用的代码如下
Set-ExecutionPolicy Unrestricted -Force
$filepath = "C:\Users\asdf\Downloads\Powershell\CheckFreeSpaceV3"
$servername = "abc"
#delete reports older than 7 days
$OldReports = (Get-Date).AddDays(-7)
#Removing Report older than 7 Days
Get-ChildItem $filepath\DiskReport*.* | `
Where-Object { $_.LastWriteTime -le $OldReports} | `
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue
#Create variable for log date
$LogDate = get-date -f yyyyMMddhhmm
$DiskReport = Get-WmiObject win32_logicaldisk `
-ComputerName $servername -Filter "Drivetype=3" `
-ErrorAction SilentlyContinue |
#return only disks with free space less than or equal to 0.1 (40%)
Where-Object { ($_.freespace/$_.size) -le '0.4'}
#Create Reports
$DiskReport |
Select-Object @{Label = "Server Name";Expression = {$_.SystemName}},
@{Label = "Drive";Expression = {$_.DeviceID}},
@{Label = "Total Space(GB)";Expression = {"{0:N1}" -f( $_.Size / 1gb)}},
@{Label = "Free Space (GB)";Expression = {"{0:N1}" -f( $_.Freespace / 1gb ) }},
@{Label = 'Free Space (%)'; Expression = {"{0:P0}" -f ($_.freespace/$_.size)}} |
I put the following arguments in taskschdular arguments
-NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File powershell_Script_path
您的脚本没有创建任何报告文件作为输出,而且额外的管道正在抛出异常。
我已经用您的脚本创建了一个 HTML 文件,现在可以正常工作了。
HTML 文件将生成在 D:\ 驱动器,名称为 HTML_Report.html。您可以使用 Google Chrome.
进行简单查看
因此,每次脚本都会创建新文件,如果该文件已经存在,那么它将覆盖现有文件。
现在,将脚本放在您想要的路径中,您可以使用上述脚本路径在任务计划程序中创建任务,这将触发并在上述位置创建输出文件。
注意:如果您没有驱动器,请指向其他位置。
Set-ExecutionPolicy Unrestricted -Force
$filepath = "C:\Users\farooq.GENIE\Downloads\Powershell\CheckFreeSpaceV3"
$servername = "GT030"
#delete reports older than 7 days
$OldReports = (Get-Date).AddDays(-7)
#Removing Report older than 7 Days
Get-ChildItem $filepath\DiskReport*.* | `
Where-Object { $_.LastWriteTime -le $OldReports} | `
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue
#Create variable for log date
$LogDate = get-date -f yyyyMMddhhmm
$DiskReport = Get-WmiObject win32_logicaldisk `
-ComputerName $servername -Filter "Drivetype=3" `
-ErrorAction SilentlyContinue |
#return only disks with free space less than or equal to 0.1 (40%)
Where-Object { ($_.freespace/$_.size) -le '0.4'}
#Create Reports
$DiskReport |
Select-Object @{Label = "Server Name";Expression = {$_.SystemName}},
@{Label = "Drive";Expression = {$_.DeviceID}},
@{Label = "Total Space(GB)";Expression = {"{0:N1}" -f( $_.Size / 1gb)}},
@{Label = "Free Space (GB)";Expression = {"{0:N1}" -f( $_.Freespace / 1gb ) }},
@{Label = 'Free Space (%)'; Expression = {"{0:P0}" -f ($_.freespace/$_.size)}} |ConvertTo-Html | Out-File D:\HTML_Report.html -Force
#Task scheduler Script as discussed
$jobname = "Powershell_Task"
$script = "D:\PsScript.ps1"
$repeat = New-TimeSpan -Hours 1
$Start_Time= Get-Date
$action = New-ScheduledTaskAction –Execute "$pshome\powershell.exe" -Argument "$script; quit"
$duration = ([timeSpan]::maxvalue)
$trigger = New-ScheduledTaskTrigger -Once -At $Start_Time -RepetitionInterval $repeat -RepetitionDuration $duration
$settings = New-ScheduledTaskSettingsSet -WakeToRun -DontStopIfGoingOnBatteries -StartWhenAvailable -RunOnlyIfNetworkAvailable -DontStopOnIdleEnd
Register-ScheduledTask -TaskName $jobname -Action $action -Trigger $trigger -Settings $settings
OS windows 8,我正在安排一个脚本来导入空闲磁盘空间以导入 csv 文件,使用 windows 任务 schedular.The 脚本手动运行但没有它在计划时给出的输出是 task schedular 。使用的代码如下
Set-ExecutionPolicy Unrestricted -Force
$filepath = "C:\Users\asdf\Downloads\Powershell\CheckFreeSpaceV3"
$servername = "abc"
#delete reports older than 7 days
$OldReports = (Get-Date).AddDays(-7)
#Removing Report older than 7 Days
Get-ChildItem $filepath\DiskReport*.* | `
Where-Object { $_.LastWriteTime -le $OldReports} | `
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue
#Create variable for log date
$LogDate = get-date -f yyyyMMddhhmm
$DiskReport = Get-WmiObject win32_logicaldisk `
-ComputerName $servername -Filter "Drivetype=3" `
-ErrorAction SilentlyContinue |
#return only disks with free space less than or equal to 0.1 (40%)
Where-Object { ($_.freespace/$_.size) -le '0.4'}
#Create Reports
$DiskReport |
Select-Object @{Label = "Server Name";Expression = {$_.SystemName}},
@{Label = "Drive";Expression = {$_.DeviceID}},
@{Label = "Total Space(GB)";Expression = {"{0:N1}" -f( $_.Size / 1gb)}},
@{Label = "Free Space (GB)";Expression = {"{0:N1}" -f( $_.Freespace / 1gb ) }},
@{Label = 'Free Space (%)'; Expression = {"{0:P0}" -f ($_.freespace/$_.size)}} |
I put the following arguments in taskschdular arguments
-NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File powershell_Script_path
您的脚本没有创建任何报告文件作为输出,而且额外的管道正在抛出异常。
我已经用您的脚本创建了一个 HTML 文件,现在可以正常工作了。
HTML 文件将生成在 D:\ 驱动器,名称为 HTML_Report.html。您可以使用 Google Chrome.
进行简单查看因此,每次脚本都会创建新文件,如果该文件已经存在,那么它将覆盖现有文件。
现在,将脚本放在您想要的路径中,您可以使用上述脚本路径在任务计划程序中创建任务,这将触发并在上述位置创建输出文件。
注意:如果您没有驱动器,请指向其他位置。
Set-ExecutionPolicy Unrestricted -Force
$filepath = "C:\Users\farooq.GENIE\Downloads\Powershell\CheckFreeSpaceV3"
$servername = "GT030"
#delete reports older than 7 days
$OldReports = (Get-Date).AddDays(-7)
#Removing Report older than 7 Days
Get-ChildItem $filepath\DiskReport*.* | `
Where-Object { $_.LastWriteTime -le $OldReports} | `
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue
#Create variable for log date
$LogDate = get-date -f yyyyMMddhhmm
$DiskReport = Get-WmiObject win32_logicaldisk `
-ComputerName $servername -Filter "Drivetype=3" `
-ErrorAction SilentlyContinue |
#return only disks with free space less than or equal to 0.1 (40%)
Where-Object { ($_.freespace/$_.size) -le '0.4'}
#Create Reports
$DiskReport |
Select-Object @{Label = "Server Name";Expression = {$_.SystemName}},
@{Label = "Drive";Expression = {$_.DeviceID}},
@{Label = "Total Space(GB)";Expression = {"{0:N1}" -f( $_.Size / 1gb)}},
@{Label = "Free Space (GB)";Expression = {"{0:N1}" -f( $_.Freespace / 1gb ) }},
@{Label = 'Free Space (%)'; Expression = {"{0:P0}" -f ($_.freespace/$_.size)}} |ConvertTo-Html | Out-File D:\HTML_Report.html -Force
#Task scheduler Script as discussed
$jobname = "Powershell_Task"
$script = "D:\PsScript.ps1"
$repeat = New-TimeSpan -Hours 1
$Start_Time= Get-Date
$action = New-ScheduledTaskAction –Execute "$pshome\powershell.exe" -Argument "$script; quit"
$duration = ([timeSpan]::maxvalue)
$trigger = New-ScheduledTaskTrigger -Once -At $Start_Time -RepetitionInterval $repeat -RepetitionDuration $duration
$settings = New-ScheduledTaskSettingsSet -WakeToRun -DontStopIfGoingOnBatteries -StartWhenAvailable -RunOnlyIfNetworkAvailable -DontStopOnIdleEnd
Register-ScheduledTask -TaskName $jobname -Action $action -Trigger $trigger -Settings $settings