我正在尝试在任务计划程序上运行powershell脚本,但我无法理解我的脚本的合适日志记录命令。我希望按计划运行。
该脚本将删除超过x天的文件和文件夹,并将创建输出日志。
function Out-Log {
param (
[Parameter(Mandatory=$true,ValueFromPipeline=$true)]
[string]$message,
[switch]$Error
)
$logPath = $env:TEMP + "\Filedeletion.log"
$message | Out-File -FilePath $logPath -Append
}
trap
{
"error:" | Out-Log
$_.exception.message | Out-Log
break
}
$Error.Clear()
try
{
"Starting" | Out-Log
$DateToDelete = 1
$dateLimit = (Get-Date).AddDays(-$DateToDelete)
$StartFolder = "c:\TEST1"
Get-ChildItem -Recurse -Force -Path $StartFolder |
foreach {
$currentItemIsFolder = $_.PsIsContainer;
$curentItemIsOld = $_.LastWriteTime -lt $dateLimit
if ($curentItemIsOld -and (-not $currentItemIsFolder))
{
"Removing '$($_.fullname)'." | Out-Log
Remove-Item -Path ($_.fullname) -Force -WhatIf
}
}
}
finally
{
if ($Error)
{
"`$error stack:" | Out-Log
$error | foreach {$_.exception.ToString() | Out-Log}
}
"Stopping" | Out-Log
}
我正在尝试使用
Powershell -file "c:\Powershell\Filedeletion_logs_test.ps1"
通过批处理来运行powershell。
我试过检查Powershell /中的命令?但没有找到适合我的脚本的任何合适的日志记录命令。
有人可以帮忙吗?
答案 0 :(得分:0)
您不需要在任务计划中运行powershell的单独批处理文件。所有你需要的是这个很好的教程。它是逐步详细的,但很容易设置。 http://community.spiceworks.com/how_to/show/17736-run-powershell-scripts-from-task-scheduler
答案 1 :(得分:0)
你不能用SCHTASKS做同样的事情吗?
http://ss64.com/nt/schtasks.html
您应该能够通过TYPE命令管道服务器列表,并将任务添加到服务器集。
例如:
http://www.robvanderwoude.com/ntadmincommands.php
FOR /F %%A IN (servers.txt) DO (
SCHTASKS /CREATE /S %%A /U "system" /P "" /TN "Powershell Task" /TR "Powershell -file \"c:\my folder\script.ps1\""
)