J'écris un script PowerShell que je souhaite exécuter à partir du serveur A. Je souhaite me connecter au serveur B et copier un fichier sur le serveur A en tant que sauvegarde.
Si cela ne peut pas être fait, je voudrais me connecter au serveur B à partir du serveur A et copier un fichier dans un autre répertoire du serveur B.
Je vois la Copy-Item
commande, mais je ne vois pas comment lui donner un nom d'ordinateur.
J'aurais pensé que je pourrais faire quelque chose comme
Copy-Item -ComputerName ServerB -Path C:\Programs\temp\test.txt -Destination (not sure how it would know to use ServerB or ServerA)
Comment puis-je faire ceci?
powershell
powershell-2.0
chobo2
la source
la source
Réponses:
Cela ne fonctionne que lorsqu'une session PowerShell s'exécute sous l'utilisateur qui a des droits sur les deux partages administratifs.
Je suggère d'utiliser le partage réseau régulier sur le serveur B avec un accès en lecture seule à tout le monde et d'appeler simplement (à partir du serveur A):
la source
Copy-Item -FromSession
).À partir de PowerShell version 5 (inclus dans Windows Server 2016, téléchargeable dans le cadre de WMF 5 pour les versions antérieures ), cela est possible avec l'accès à distance. L'avantage est que cela fonctionne même si, pour une raison quelconque, vous ne pouvez pas accéder aux partages.
Pour que cela fonctionne, la session locale où la copie est lancée doit avoir PowerShell 5 ou une version ultérieure installée. La session à distance n'a pas besoin d'installer PowerShell 5 - elle fonctionne avec les versions PowerShell aussi basses que 2 et les versions Windows Server aussi basses que 2008 R2. [1]
À partir du serveur A, créez une session sur le serveur B:
Et puis, toujours de A:
La copie des éléments vers B se fait avec
-ToSession
. Notez que les chemins locaux sont utilisés dans les deux cas; vous devez garder une trace de quel serveur vous êtes.[1]: lors de la copie depuis ou vers un serveur distant qui n'a que PowerShell 2, méfiez-vous de ce bogue dans PowerShell 5.1 , qui au moment de l'écriture signifie que la copie de fichiers récursive ne fonctionne pas avec
-ToSession
, une copie apparemment ne fonctionne pas à tout avec-FromSession
.la source
scp
overssh
sur Linux ... pas besoin de s'embêter avec des partages embêtants!Utilisez
net use
ouNew-PSDrive
pour créer un nouveau lecteur:New-PsDrive: créez un nouveau PsDrive visible uniquement dans l'environnement PowerShell:
Net use: créez un nouveau lecteur visible dans toutes les parties du système d'exploitation.
la source
New-PSDrive : A specified logon session does not exist. It may already have been terminated
-> Je pense qu'une session précédente est toujours en cours -> J'ai donc essayé d'utiliserRemove-PSDrive
-> cela ne fonctionne toujours pas. Aussinet use <driveLetter> /delete
n'a pas aidé. Est-ce que je peux faire autre chose pour pouvoir exécuter cette commande dans une configuration de build logiciel?New-PSDrive
deux fois que vous auriez dûA drive with the name 'Y' already exists.
Juste au cas où le fichier distant a besoin de vos informations d'identification pour y accéder, vous pouvez générer un objet System.Net.WebClient à l' aide de l'applet de commande New-Object pour "Copier le fichier à distance", comme ceci
Ou si vous avez besoin de télécharger un fichier, vous pouvez utiliser UploadFile:
la source
Aucune des réponses ci-dessus n'a fonctionné pour moi. J'ai continué à recevoir cette erreur:
Alors ça l'a fait pour moi:
Ensuite, depuis mon hôte, ma machine dans la boîte Exécuter, je viens de faire ceci:
la source