Question Erreur accès dossier

Plus d'informations
il y a 15 ans 11 mois #6408 par brutosaure
Erreur accès dossier a été créé par brutosaure
Bonjour,

Quand je lance une commande sur un server pour aller voir le contenu des fichiers log dans un dossier:

[code:1]Get-ChildItem -path D:\Logs\IIS -recurse | Where-object{($_.LastWriteTime -ge [datetime]::«»ParseExact(\"4/3/2010:00:01\",'d/M/yyyy:HH:mm',$null)) -and ($_.LastWriteTime -le [datetime]::«»ParseExact(\"10/3/2010:23:59\",'d/M/yyyy:HH:mm',$null))} | get-content | select-string -Pattern \"failed\"[/code:1]

j'ai ce message d'erreur suivant

[code:1]Get-Content : Access to the path 'D:\Logs\IIS' is denied.
At line:1 char:12
+ Get-Content <<<< -path D:\Logs\IIS | Where-object{($_.LastWriteTime -ge [datetime]::«»ParseExact(\"4/3/2010:00:01\",'d/M
/yyyy:HH:mm',$null)) -and ($_.LastWriteTime -le [datetime]::«»ParseExact(\"10/3/2010:23:59\",'d/M/yyyy:HH:mm',$null))} | se
lect-string -Pattern \"failed\"
+ CategoryInfo : PermissionDenied: (D:\Logs\IIS:«»String) [Get-Content], UnauthorizedAccessException
+ FullyQualifiedErrorId : GetContentReaderUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetContentCommand[/code:1]

Mais quand je lance la commande sans le get-content | select-string -Pattern \"failed\", cela me sort bien la liste des fichiers logs.
J'exécute cette commande en administrateur et j'ai les bons droits sur le fichier et dossier.

On dirait qu'il tente d'aller faire un get-content du dossier lui même.
J'ai ce genre d'erreur aussi bien sur 2003, que 2008

Quelqu'un aurait-il une idée?<br><br>Message édité par: brutosaure, à: 22/03/10 14:20

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 11 mois #6409 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Erreur accès dossier
Peut être faut-il filtrer les répertoires, Where-OBJECT...

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 11 mois #6410 par Arnaud Petitjean
Réponse de Arnaud Petitjean sur le sujet Re:Erreur accès dossier
Salut !

Get-Content s'applique à un fichier et non pas à un répertoire.

Exemple :

[code:1]
PS &gt; get-content C:\Windows
Get-Content : L'accès au chemin d'accès 'C:\Windows' est refusé.
Au niveau de ligne : 1 Caractère : 12
+ get-content &lt;&lt;&lt;&lt; C:\Windows
+ CategoryInfo : PermissionDenied: (C:\Windows:«»String) [Get-Content], UnauthorizedAccessException
+ FullyQualifiedErrorId : GetContentReaderUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetContentCommand[/code:1]

Il doit y avoir un problème dans ta commande.

Sinon, sache que tu n'as pas besoin de faire un Get-Content pour utiliser Select-String car Select-String s'applique aussi à des fichiers.

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 11 mois #6436 par brutosaure
Réponse de brutosaure sur le sujet Re:Erreur accès dossier
En fait quand j'utilise uniquement select-string, il m'affiche rien.
Pour ca que je faisait le get-content avant pour qu'il aille voir le contenu de ma liste de fichier log.
En utilisant le select-string, la commande passe, mais aucun résultat s'affiche, alors que mes fichier log contiennent bien le mot failed.
[code:1]$commandWithContent={param($paraStartdate, $paraEnddate, $paraPath, $paraKeyword) Get-ChildItem -path $paraPath -recurse | Where-object{($_.LastWriteTime -ge [datetime]::«»ParseExact($paraStartDate,'d/M/yyyy:HH:mm',$null)) -and ($_.LastWriteTime -le [datetime]::«»ParseExact($paraEndDate,'d/M/yyyy:HH:mm',$null))}| select-string -pattern $paraKeyword}
invoke-command -credential $user -Computername $server -scriptblock $CommandWithContent -ArgumentList $startdate,$enddate,$path,$keyword
[/code:1]

Mais si je fais [code:1]$commandWithContent={param($paraStartdate, $paraEnddate, $paraPath, $paraKeyword) Get-ChildItem -path $paraPath -recurse | Where-object{($_.LastWriteTime -ge [datetime]::«»ParseExact($paraStartDate,'d/M/yyyy:HH:mm',$null)) -and ($_.LastWriteTime -le [datetime]::«»ParseExact($paraEndDate,'d/M/yyyy:HH:mm',$null))}[/code:1]
Il me sort bien ma liste de fichiers log

Et quand je fais ceci
[code:1]$commandWithContent={param($paraStartdate, $paraEnddate, $paraPath, $paraKeyword) Get-ChildItem -path $paraPath -recurse | Where-object{($_.LastWriteTime -ge [datetime]::«»ParseExact($paraStartDate,'d/M/yyyy:HH:mm',$null)) -and ($_.LastWriteTime -le [datetime]::«»ParseExact($paraEndDate,'d/M/yyyy:HH:mm',$null))} | get-content}
$resultWithContent=invoke-command -credential $user -Computername $server -scriptblock $CommandWithContent -ArgumentList $startdate,$enddate,$path,$keyword
$resultWithContent | select-string -Pattern $keyword
[/code:1]
J'ai un résultat qui sort et qui contient bien le mot failed dedans.
Mais avec des erreur sur les dossier, vu qu'apparemment get-content pose prob avec un dossier et qu'il y a pas d'option pour lui dire de pas s'en occuper.

J'appelle mon script comme ceci
[code:1]./scptSearchLogIIS3.ps1 -startdate \&quot;4/3/2010:00:01\&quot; -enddate \&quot;17/3/2010:23:59\&quot; -path D:\Logs\IIS -server xxxxx -content y -keyword failed[/code:1]
J'arrive pas à ce qu'il me sorte le résultat juste avec select-string<br><br>Message édité par: brutosaure, à: 26/03/10 16:16

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.049 secondes
Propulsé par Kunena