Назад | Перейти на главную страницу

Powershell: сохранить результат CSV в папку

Это должно быть абсолютно легко, но я все время натыкаюсь на кирпичную стену. Я запускаю сценарий Powershell, который выполняет аудит моих задач и сохраняет результат в CSV. Однако я продолжаю получать ошибку с разрешениями, и я не могу понять, что мне не хватает.

Вот мой код:

Get-ScheduledTask | 
    Where State -ne "Disabled" | 
    Get-ScheduledTaskInfo | 
    Select TaskName,TaskPath,LastRunTime, LastTaskResult,NextRunTime,NumberofMissedRuns | 
    Where { $_.TaskName -like "test_*"} |
    Export-Csv -NoTypeInformation -Path C:\temp\scheduled_tasks_audit

Вот что я получаю в ответ:

Export-Csv : Access to the path 'C:\temp\scheduled_tasks_audit' is denied.
At C:\temp\scheduled_tasks_audit\example_task_audit.ps1:6 char:5
+     Export-Csv -NoTypeInformation -Path C:\temp\scheduled_tasks_audit
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OpenError: (:) [Export-Csv], UnauthorizedAccessException
    + FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.ExportCsvCommand

Я проверил пользователя, под которым работал Powershell, используя:

[Environment]::UserName

И убедился, что у учетной записи есть полные разрешения для папки назначения, но я все еще получаю ошибку отказа в доступе.

Я использую Windows Server 2012 R2 и Powershell 4.0

Кажется, что ваш параметр пути указывает на имя папки, из которой вы запускаете скрипт, поэтому вы запускаете скрипт, и он пытается создать файл с именем C: \ temp \ schedule_tasks_audit, который уже существует как папка. Если вы запустите Get-Help Export-CSV -Full, вы увидите, что для параметра Path требуется имя файла.

 -Path [<String>]
        Specifies the path to the CSV output file. This parameter is required.

        Required?                    false
        Position?                    1
        Default value                none
        Accept pipeline input?       false
        Accept wildcard characters?  false

Измените свой код на

Get-ScheduledTask | 
    Where State -ne "Disabled" | 
    Get-ScheduledTaskInfo | 
    Select TaskName,TaskPath,LastRunTime, LastTaskResult,NextRunTime,NumberofMissedRuns | 
    Where { $_.TaskName -like "test_*"} |
    Export-Csv -NoTypeInformation -Path C:\temp\scheduled_tasks_audit\output.csv

и вам должно быть хорошо идти.

Вам нужно указать имя файла в конце вашей переменной -Path, например:

C: \ темп \ запланированные_задачи_аудит \ audit.csv