Question

Je veux automatiser un grand nombre de mes tâches quotidiennes via Powershell. Un processus que nous avons est des postes de travail d'imagerie après les heures. Une fois cette opération terminée, les fichiers d'image doivent être déplacés hors des disques durs du serveur à un lecteur réseau. J'écris une application pour exécuter en tant que service sur ma machine qui appellera le script Powershell et frapper tout en me alerter seulement quand il y a un problème.

Je mis en place un répertoire sur le serveur pour les scripts. Il fonctionne très bien si je l'appelle mon script, FileCopy.ps1, à partir du serveur:

copy-item C:\scripts\myFile1.txt -destination C:\scripts\myFile2.txt

Cependant, dans mon application .Net, j'appelle le script de ma machine locale:

RunScript(LoadScript(@"\\Server\ServerShare\FileCopy.ps1")); 

ne fonctionne pas. C'est parce qu'il voit C: \ scripts comme sur la machine locale. Alors, je le change:

copy-item \\Server\ServerShare\myFile1.txt -destination \\Server\ServerShare\myFile2.txt

ne fonctionne pas. J'ajoute une autre ligne au script:

copy-item \\Server\ServerShare\myFile1.txt -destination \\Server\ServerShare\myFile2.txt
get-childitem \\Server\ServerShare | format-table name

Il ne fonctionne toujours pas copier le fichier, mais il fait retourner le contenu du répertoire des scripts sur le serveur.

Je reviens donc au serveur et exécuter le script avec les chemins UNC en place - retours powershell une erreur

Copy-Item : Access to the path '\\Server\ServerPath\myFile2.txt' is denied.

Cela semble être la racine du problème. Toute idée comment je peux contourner ce problème? Je suis ouvert une session sur le serveur en tant qu'Administrateur.

Était-ce utile?

La solution

L'exécution du script en tant qu'administrateur n'a pas d'importance avec les partages réseau IIRC. La part par défaut l'autorisation autorisant la lecture seule. Ces perms doivent être mis à jour pour permettre l'écriture de la part.

Pour votre information, si vous utilisez net share pour créer les actions sous Windows 7, vous devez utiliser le /grant:<users>,CHANGE d'accorder ces autorisations à un utilisateur.

Autres conseils

Je suis sur le serveur 2003 R2. Administrateur avait accès sous l'onglet Sécurité, mais je suis allé à l'onglet de partage, les autorisations et Tout le monde a été mis à l'accès en lecture. J'ai ajouté admin et moi-même que le contrôle total, maintenant la vie est bonne !!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top