2 votes

Powershell : Enregistrer le résultat du CSV dans un dossier

Cela devrait être très facile, mais je me heurte toujours à un mur. J'exécute un script Powershell script qui effectue un audit de mes tâches et enregistre le résultat dans un CSV. Je continue à obtenir un défaut de permissions cependant et je ne peux pas comprendre ce que je manque.

Voici mon code :

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

Voici ce que je reçois en réponse :

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

J'ai vérifié l'utilisateur sous lequel Powershell était exécuté :

[Environment]::UserName

Je me suis assuré que le compte disposait des droits complets pour le dossier de destination, mais je reçois toujours une erreur d'accès refusé.

J'utilise Windows Server 2012 R2 et Powershell 4.0.

4voto

thebigjc Points 391

Votre paramètre path semble pointer vers le nom du dossier à partir duquel vous exécutez le script, donc vous exécutez le script et il essaie de créer un fichier appelé C:\temp\scheduled_tasks_audit qui existe déjà en tant que dossier. Si vous exécutez Get-Help Export-CSV -Full, vous pouvez voir que le paramètre Path requiert le nom du fichier.

 -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

Changez votre code en

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

et vous devriez être prêt à partir.

2voto

vigilem Points 549

Vous devez spécifier un nom de fichier à la fin de votre variable -Path, comme ceci :

C:\temp\scheduled_tasks_audit\audit.csv

0 votes

Wow, je me sens stupide. Je savais que c'était quelque chose de simple. Merci pour l'aide !

0 votes

Pas de problème - nous avons tous besoin d'une aide occasionnelle sans jugement lorsqu'il s'agit de Powershell !

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X