Je travaille avec PowerShell, exécution d'un script (à partir de ma console) qui comprend cette ligne:J'ai besoin d'aide pour comprendre les problèmes de sécurité PowerShell et accès aux fichiers
$inpath = "C:\users\xxxxx\path\foo\bar"
et je continue à obtenir cette erreur:
Get-Content : Access to the path 'C:\users\xxxxx\path\foo\bar' is denied.
At C:\users\xxxxx\path\foo\testscript.ps1:53 char:12
+ Get-Content <<<< $txtfile | Get-WordCount -Exclude (Get-Content c:\temp\exclude.txt) | select -First 15
+ CategoryInfo : PermissionDenied: (C:\users\xxxxx\path\foo\bar:String) [Get-Content], UnauthorizedAcc
essException
+ FullyQualifiedErrorId : GetContentReaderUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetContentCommand
Les scripts et les fichiers cible se trouvent tous sur mon disque local. Je peux accéder aux fichiers dans l'Explorateur, les voir/éditer/les enregistrer en utilisant NotePad, et je n'ai aucune restriction de permissions. Lorsque je suis sur la ligne de commande, je peux exécuter la cmdlet get-content
avec succès sur les fichiers de mon chemin. Je peux changer les répertoires PS C:> cd C:\users\xxxxx\path\foo\bar
et liste avec succès ce qui est là. Encore plus intéressant, je peux dupliquer la ligne qui est erronée dans le script, et ne pas recevoir une erreur sur la ligne de commande.
PS C:\users\xxxxx\path\foo> $inpath = "C:\users\xxxxx\path\foo\bar"
PS C:\users\xxxxx\path\foo>
Cela me fait soupçonner que l'erreur « Autorisation refusée » est en fait quelque chose d'autre, ou quelque chose d'assez vague que j'ai aucune idée de comment procéder au dépannage. Est-il possible pour PS d'avoir des permissions différentes de l'utilisateur sous lequel il fonctionne? Quelqu'un at-il déjà vu ce comportement et comment avez-vous résolu le problème? Je suis sûr qu'il existe une solution simple que je ne connais pas.
Comment vous exécutez le script et avec quelle autorisation? Un travail dans le planificateur de tâches? Le script fonctionne-t-il si vous appelez le script depuis votre console? –
Quel fichier essayez-vous de lire? (Il est parfaitement possible d'avoir accès à un dossier mais pas aux fichiers qu'il contient.) – Richard
@Graimer - le script s'exécute depuis la console; Je ne sais pas quelles sont les autorisations du script, comment les rechercher ou comment les définir si elles diffèrent de celles de mes utilisateurs. Cela ne fonctionne pas à partir de la console AS A SCRIPT (par exemple, PS c: \ foo>. \ Script.ps1), mais cela fonctionne si je tape la ligne individuelle comme invite de la console. – dwwilson66