Powershell: salvar o resultado do CSV na pasta

2

Isso deve ser fácil, mas eu continuo correndo em uma parede de tijolos. Estou executando um script Powershell que executa uma auditoria das minhas tarefas e salva o resultado em um CSV. Eu continuo recebendo uma falha de permissões e não consigo entender o que estou perdendo.

Aqui está o meu código:

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

Aqui está o que recebo em resposta:

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

Eu verifiquei o usuário que o Powershell estava usando:

[Environment]::UserName

E garantimos que a conta tinha permissões completas para a pasta de destino, mas ainda estou recebendo um erro de acesso negado.

Estou executando o Windows Server 2012 R2 e o Powershell 4.0

    
por Matthew Crews 22.02.2016 / 20:53

2 respostas

4

Seu parâmetro path parece estar apontando para o nome da pasta da qual você está executando o script, então você executa o script e ele tenta criar um arquivo chamado C: \ temp \ scheduled_tasks_audit que já existe como uma pasta . Se você executar o comando Get-Help Export-CSV-Full, poderá ver que o parâmetro Path requer o nome do arquivo

 -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

Altere seu código para

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

e você deve ser bom para ir.

    
por 22.02.2016 / 21:14
2

Você precisa especificar um nome de arquivo no final da sua variável -Path, assim:

C: \ temp \ scheduled_tasks_audit \ audit.csv

    
por 22.02.2016 / 21:08