Scheduled Tasks in Powershell, Alpha

Scheduled tasks don’t have any good way to be edited in Powershell, at least from what I have seen. The other day I set out to write some scripts to help me out. This isn’t really cleaned up or final (aka I haven’t figured out the best error checking yet and it could use a decent refactoring), but I figured I would go ahead and throw them up here to get some feedback.

function get-scheduledtask($server=$env:COMPUTERNAME)
{
    $tempFile = $env:TEMP + "\scheduledtaskstemp.csv"
    schtasks /query /S $server /FO csv /V | where { $_.length -gt 0 } | Set-Content $tempFile
    Import-Csv $tempFile
    Remove-Item $tempFile
}

function remove-scheduledtask($taskname, $server=$env:COMPUTERNAME, [switch]$verbose, [switch]$whatif=$variable:whatifpreference)
{
    if(-not $taskname) { throw "Must provide taskname" }
    $command = "schtasks /DELETE /TN '$taskName'"
    if($server) { $command += " /S '$server' " }

    if($verbose -or $whatif) { $command }
    if(-not $whatif) { Invoke-Expression $command }
}

function run-scheduledtask($taskname, $server=$env:COMPUTERNAME, [switch]$verbose, [switch]$whatif=$variable:whatifpreference){
    if(-not $taskname) { throw "Must provide taskname" }
    $command = "schtasks /RUN /TN '$taskname'"

    if($server) { $command += " /S '$server' " }

    if($verbose -or $whatif) { $command }
    if(-not $whatif) { Invoke-Expression $command }
}

function add-scheduledtask {
    param
    (
        [string] $user, 
        [string] $password, 
        [string] $schedule,
        [string] $runUser,
        [string] $runPassword,
        $modifier, 
        $days, 
        $idleTime, 
        $taskName, 
        $taskRun, 
        $startTime, 
        $months, 
        $startDate, 
        $endDate, 
        $server=$env:COMPUTERNAME,
        [switch]$verbose,
        [switch]$whatif = $variable:whatifpreference
    )   

    if(-not $taskName) { throw "Must Provide a taskName" }
    if(-not $taskRun) { throw "Must provide a taskRun" }
    if(-not $schedule) { throw "Must provide a schedule" }
    if(-not $runPassword) { throw "Must provide a runPassword" }
    if(-not $runUser) { throw "Must provide a runUser"}

    $command = "schtasks /CREATE /TN '$taskname' /TR '$taskRun' /SC '$schedule' /RU '$runUser' /RP '$runPassword' "

    ($user,"U"),
    ($password,"P"),
    ($modifer,"MO"),
    ($days,"D"),
    ($months,"M"),
    ($idleTime,"I"),
    ($startTime,"ST"),
    ($server,"S"),
    ($startDate,"SD"),
    ($endDate,"ED")| 
        %{
            if($_[0]) { $command += " /$($_[1]) '$($_[0])' " }
        }

    if($verbose -or $whatif) { $command }
    if(-not $whatif) { Invoke-Expression $command }
}