2

タスク スケジューラで 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/? でコマンドを確認しようとしました。私のスクリプトで機能する適切なロギングコマンドが見つかりませんでした。

誰でも助けてもらえますか?

4

2 に答える 2

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\"" 
)
于 2013-09-08T22:48:36.333 に答える