Question
[Résolu] Accès distance plusieurs serveurs
- dimshell
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 86
- Remerciements reçus 0
il y a 7 ans 3 mois #28268
par dimshell
[Résolu] Accès distance plusieurs serveurs a été créé par dimshell
Bonjour,
Je réalises actuellement un script pour la connexion à distance sur des serveurs.
[code:1]
$Key = [byte]35,31,32,45,55,11,09,08,11,34,67,99,12,20,09,98
\"MOT2pass!\" | Convertto-SecureString -AsPlainText -Force | ConvertFrom-SecureString -key $key| Out-file C:\Users\\Documents\Cred.txt
$password = Get-Content C:\Users\\Documents\Cred.txt | ConvertTo-SecureString -Key $key
$creds = New-Object -TypeName System.Management.Automation.PsCredential -ArgumentList (\"svc_portscan\", $password)
$idsession= New-PSSession -ComputerName ARRFSRAD -Credential $creds
#Invoke-Command -Session $idsession -ScriptBlock {powershell C:\Users\svc_portscan\Desktop\ScriptWinDump.ps1}
Copy-Item -Path C:\Users\svc_portscan\Documents\Windump.csv -FromSession $idsession -Destination C:\Users\\Documents\test
Remove-PSSession $idsession[/code:1]
le script marche niquel.
Sur le serveur il y a :
-un script
[code:1]# Permets de lister les cartes réseau connectées
$eth=Invoke-Expression \"$env:USERPROFILE\Desktop\Windump.exe -ArgumentList -D\"
# Parcours les cartes et si il y a intel dedans stock le premier caractére donc le numéro de la carte pour notre commande Windump de la varaible $argum
foreach($item in $eth){
if ($item -match 'intel'){
$newitem =$item.Substring(0,1)
}
else{
$newitem =1
}
}
# Variable contenant des variables d'environnementspour le chemin d'accès au différents fichiers
$path=\"$($env:USERPROFILE)\Documents\"
$pathexec=\"$($env:USERPROFILE)\Desktop\"
# Commande WinDump
$argum=\"-i $newitem -q -n -t -c 500 tcp\"
# Contenant le résultat du WinDump
$fichier = \"$path\Windump.txt\"
# Contenant le résultat après modifiction de la variable $fichier
$newcontenu = \"$path\WindumpTri.txt\"
# Colonne du CSV
$Header = \"c1\",\"ipsrc\", \"portsrc\", \"ipdest\", \"portdest\", \"c6\"
# Lancement d'une application Windump.exe avec l'argument une variable contenant la commande WinDump et écrit dans le fichier fournit
$process=Start-Process $pathexec\Windump.exe -PassThru -ArgumentList $argum -RedirectStandardOutput $fichier
# Attends la fin d'execution du processus pour continuer le script
$process.WaitForExit()
# Lecture du fichier comme ci celui-ci été un CSV
$dump = Import-Csv $fichier -Header $Header -Delimiter \" \"
# Remplace après l'ip de destination le : par du vide (parcours l'ensemble des objets)
$dump | foreach {
$_.ipdest = $_.ipdest -replace \":\",\" \"
}
# Remplace via une regex les differentes colonnes (parcours l'ensemble des objets)
$result = $dump | foreach {
$portsrc = $_.ipsrc -replace [regex]\"([0-9]{1,3}\.){3}[0-9]{1,3}(\.)\",\"\"
$ipsrc = ($_.ipsrc -split [regex]\"([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\"«»)[1]
$portdest = $_.ipdest -replace [regex]\"([0-9]{1,3}\.){3}[0-9]{1,3}(\.)\", \"\"
$ipdest = ($_.ipdest -split [regex]\"([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\"«»)[1]
$_ | select @{n=\"ipsrc\";e={$ipsrc}},@{n=\"portsrc\";e={$portsrc}},@{n=\"ipdest\";e={$ipdest}},@{n=\"portdest\";e={$portdest}}
}
# écrit dans le résultat dans le fichier $newcontenu et ajoute entre l'ip dest/ source / port un ; (parcours l'ensemble des objets)
$result | foreach {
\"$($_.ipsrc);$($_.portsrc);$($_.ipdest);$($_.portdest)\"
} | Set-Content $newcontenu
# export en CSV sans doublons
$result| select ipsrc, portsrc, ipdest, portdest -Unique | export-csv $path\Windump.csv \";\" -NoTypeInformation
[/code:1]
-le logiciel windump
Problème
Je voudrais réaliser sur le premier script une redondance mais avec plusieurs serveurs.
Exemple :
[code:1]$password = Get-Content C:\Users\\Documents\Cred.txt | ConvertTo-SecureString -Key $key
$creds = New-Object -TypeName System.Management.Automation.PsCredential -ArgumentList (\"svc_portscan\", $password)
$idsession= New-PSSession -ComputerName SERVEUR1 -Credential $creds
#Invoke-Command -Session $idsession -ScriptBlock {powershell C:\Users\svc_portscan\Desktop\ScriptWinDump.ps1}
Copy-Item -Path C:\Users\svc_portscan\Documents\Windump.csv -FromSession $idsession -Destination C:\Users\\Documents\test
Remove-PSSession $idsession
$password = Get-Content C:\Users\\Documents\Cred.txt | ConvertTo-SecureString -Key $key
$creds = New-Object -TypeName System.Management.Automation.PsCredential -ArgumentList (\"svc_portscan\", $password)
$idsession= New-PSSession -ComputerName SERVEUR2 -Credential $creds
#Invoke-Command -Session $idsession -ScriptBlock {powershell C:\Users\svc_portscan\Desktop\ScriptWinDump.ps1}
Copy-Item -Path C:\Users\svc_portscan\Documents\Windump.csv -FromSession $idsession -Destination C:\Users\\Documents\test
#Invoke-Command -Session $idsession -ScriptBlock {Copy-Item -Path C:\Users\svc_portscan\Documents\Windump.csv -Destination C:\Users\\Documents\test}
Remove-PSSession $idsession[/code:1]
Mais il ne veut pas copier mon fichier csv du second serveur pourtant c'est le même chemin de destination et même commande.je ne comprends pas.
[code:1]Copy-Item : Impossible d'indexer dans un objet de type System.IO.FileInfo.
Au caractère C:\Users\\Desktop\accesservetcopy.ps1:25 : 1
+ Copy-Item -Path C:\Users\svc_portscan\Documents\Windump.csv -FromSess ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : (0:Int32) [Copy-Item], RuntimeException
+ FullyQualifiedErrorId : CannotIndex
Copy-Item : Les attributs de paramètre doivent être une constante ou un bloc de script.
Au caractère C:\Users\\Desktop\accesservetcopy.ps1:25 : 1
+ Copy-Item -Path C:\Users\svc_portscan\Documents\Windump.csv -FromSess ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : (System.Management.Automation.PowerShell:PowerShell) [Copy-Item], RemoteException
+ FullyQualifiedErrorId : CopyFileRemoteExecutionError,Microsoft.PowerShell.Commands.CopyItemCommand
Copy-Item : Le terme «PSCopyFromSessionHelper» n'est pas reconnu comme nom d'applet de commande, fonction, fichier de script ou programme exécutable. Vérifiez
l'orthographe du nom, ou si un chemin d'accès existe, vérifiez que le chemin d'accès est correct et réessayez.
Au caractère C:\Users\\Desktop\accesservetcopy.ps1:25 : 1
+ Copy-Item -Path C:\Users\svc_portscan\Documents\Windump.csv -FromSess ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : (System.Management.Automation.PowerShell:PowerShell) [Copy-Item], RemoteException
+ FullyQualifiedErrorId : CopyFileRemoteExecutionError,Microsoft.PowerShell.Commands.CopyItemCommand
Copy-Item : Échec de la lecture du fichier distant « C:\Users\svc_portscan\Documents\Windump.csv ».
Au caractère C:\Users\\Desktop\accesservetcopy.ps1:25 : 1
+ Copy-Item -Path C:\Users\svc_portscan\Documents\Windump.csv -FromSess ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (C:\Users\svc_po...nts\Windump.csv:String) [Copy-Item], IOException
+ FullyQualifiedErrorId : CopyItemRemotelyFailedToReadFile,Microsoft.PowerShell.Commands.CopyItemCommand
[/code:1]
Message édité par: dimshell, à: 20/02/19 10:39
Message édité par: dimshell, à: 20/02/19 13:35<br><br>Message édité par: dimshell, à: 20/02/19 15:31
Je réalises actuellement un script pour la connexion à distance sur des serveurs.
[code:1]
$Key = [byte]35,31,32,45,55,11,09,08,11,34,67,99,12,20,09,98
\"MOT2pass!\" | Convertto-SecureString -AsPlainText -Force | ConvertFrom-SecureString -key $key| Out-file C:\Users\\Documents\Cred.txt
$password = Get-Content C:\Users\\Documents\Cred.txt | ConvertTo-SecureString -Key $key
$creds = New-Object -TypeName System.Management.Automation.PsCredential -ArgumentList (\"svc_portscan\", $password)
$idsession= New-PSSession -ComputerName ARRFSRAD -Credential $creds
#Invoke-Command -Session $idsession -ScriptBlock {powershell C:\Users\svc_portscan\Desktop\ScriptWinDump.ps1}
Copy-Item -Path C:\Users\svc_portscan\Documents\Windump.csv -FromSession $idsession -Destination C:\Users\\Documents\test
Remove-PSSession $idsession[/code:1]
le script marche niquel.
Sur le serveur il y a :
-un script
[code:1]# Permets de lister les cartes réseau connectées
$eth=Invoke-Expression \"$env:USERPROFILE\Desktop\Windump.exe -ArgumentList -D\"
# Parcours les cartes et si il y a intel dedans stock le premier caractére donc le numéro de la carte pour notre commande Windump de la varaible $argum
foreach($item in $eth){
if ($item -match 'intel'){
$newitem =$item.Substring(0,1)
}
else{
$newitem =1
}
}
# Variable contenant des variables d'environnementspour le chemin d'accès au différents fichiers
$path=\"$($env:USERPROFILE)\Documents\"
$pathexec=\"$($env:USERPROFILE)\Desktop\"
# Commande WinDump
$argum=\"-i $newitem -q -n -t -c 500 tcp\"
# Contenant le résultat du WinDump
$fichier = \"$path\Windump.txt\"
# Contenant le résultat après modifiction de la variable $fichier
$newcontenu = \"$path\WindumpTri.txt\"
# Colonne du CSV
$Header = \"c1\",\"ipsrc\", \"portsrc\", \"ipdest\", \"portdest\", \"c6\"
# Lancement d'une application Windump.exe avec l'argument une variable contenant la commande WinDump et écrit dans le fichier fournit
$process=Start-Process $pathexec\Windump.exe -PassThru -ArgumentList $argum -RedirectStandardOutput $fichier
# Attends la fin d'execution du processus pour continuer le script
$process.WaitForExit()
# Lecture du fichier comme ci celui-ci été un CSV
$dump = Import-Csv $fichier -Header $Header -Delimiter \" \"
# Remplace après l'ip de destination le : par du vide (parcours l'ensemble des objets)
$dump | foreach {
$_.ipdest = $_.ipdest -replace \":\",\" \"
}
# Remplace via une regex les differentes colonnes (parcours l'ensemble des objets)
$result = $dump | foreach {
$portsrc = $_.ipsrc -replace [regex]\"([0-9]{1,3}\.){3}[0-9]{1,3}(\.)\",\"\"
$ipsrc = ($_.ipsrc -split [regex]\"([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\"«»)[1]
$portdest = $_.ipdest -replace [regex]\"([0-9]{1,3}\.){3}[0-9]{1,3}(\.)\", \"\"
$ipdest = ($_.ipdest -split [regex]\"([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\"«»)[1]
$_ | select @{n=\"ipsrc\";e={$ipsrc}},@{n=\"portsrc\";e={$portsrc}},@{n=\"ipdest\";e={$ipdest}},@{n=\"portdest\";e={$portdest}}
}
# écrit dans le résultat dans le fichier $newcontenu et ajoute entre l'ip dest/ source / port un ; (parcours l'ensemble des objets)
$result | foreach {
\"$($_.ipsrc);$($_.portsrc);$($_.ipdest);$($_.portdest)\"
} | Set-Content $newcontenu
# export en CSV sans doublons
$result| select ipsrc, portsrc, ipdest, portdest -Unique | export-csv $path\Windump.csv \";\" -NoTypeInformation
[/code:1]
-le logiciel windump
Problème
Je voudrais réaliser sur le premier script une redondance mais avec plusieurs serveurs.
Exemple :
[code:1]$password = Get-Content C:\Users\\Documents\Cred.txt | ConvertTo-SecureString -Key $key
$creds = New-Object -TypeName System.Management.Automation.PsCredential -ArgumentList (\"svc_portscan\", $password)
$idsession= New-PSSession -ComputerName SERVEUR1 -Credential $creds
#Invoke-Command -Session $idsession -ScriptBlock {powershell C:\Users\svc_portscan\Desktop\ScriptWinDump.ps1}
Copy-Item -Path C:\Users\svc_portscan\Documents\Windump.csv -FromSession $idsession -Destination C:\Users\\Documents\test
Remove-PSSession $idsession
$password = Get-Content C:\Users\\Documents\Cred.txt | ConvertTo-SecureString -Key $key
$creds = New-Object -TypeName System.Management.Automation.PsCredential -ArgumentList (\"svc_portscan\", $password)
$idsession= New-PSSession -ComputerName SERVEUR2 -Credential $creds
#Invoke-Command -Session $idsession -ScriptBlock {powershell C:\Users\svc_portscan\Desktop\ScriptWinDump.ps1}
Copy-Item -Path C:\Users\svc_portscan\Documents\Windump.csv -FromSession $idsession -Destination C:\Users\\Documents\test
#Invoke-Command -Session $idsession -ScriptBlock {Copy-Item -Path C:\Users\svc_portscan\Documents\Windump.csv -Destination C:\Users\\Documents\test}
Remove-PSSession $idsession[/code:1]
Mais il ne veut pas copier mon fichier csv du second serveur pourtant c'est le même chemin de destination et même commande.je ne comprends pas.
[code:1]Copy-Item : Impossible d'indexer dans un objet de type System.IO.FileInfo.
Au caractère C:\Users\\Desktop\accesservetcopy.ps1:25 : 1
+ Copy-Item -Path C:\Users\svc_portscan\Documents\Windump.csv -FromSess ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : (0:Int32) [Copy-Item], RuntimeException
+ FullyQualifiedErrorId : CannotIndex
Copy-Item : Les attributs de paramètre doivent être une constante ou un bloc de script.
Au caractère C:\Users\\Desktop\accesservetcopy.ps1:25 : 1
+ Copy-Item -Path C:\Users\svc_portscan\Documents\Windump.csv -FromSess ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : (System.Management.Automation.PowerShell:PowerShell) [Copy-Item], RemoteException
+ FullyQualifiedErrorId : CopyFileRemoteExecutionError,Microsoft.PowerShell.Commands.CopyItemCommand
Copy-Item : Le terme «PSCopyFromSessionHelper» n'est pas reconnu comme nom d'applet de commande, fonction, fichier de script ou programme exécutable. Vérifiez
l'orthographe du nom, ou si un chemin d'accès existe, vérifiez que le chemin d'accès est correct et réessayez.
Au caractère C:\Users\\Desktop\accesservetcopy.ps1:25 : 1
+ Copy-Item -Path C:\Users\svc_portscan\Documents\Windump.csv -FromSess ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : (System.Management.Automation.PowerShell:PowerShell) [Copy-Item], RemoteException
+ FullyQualifiedErrorId : CopyFileRemoteExecutionError,Microsoft.PowerShell.Commands.CopyItemCommand
Copy-Item : Échec de la lecture du fichier distant « C:\Users\svc_portscan\Documents\Windump.csv ».
Au caractère C:\Users\\Desktop\accesservetcopy.ps1:25 : 1
+ Copy-Item -Path C:\Users\svc_portscan\Documents\Windump.csv -FromSess ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (C:\Users\svc_po...nts\Windump.csv:String) [Copy-Item], IOException
+ FullyQualifiedErrorId : CopyItemRemotelyFailedToReadFile,Microsoft.PowerShell.Commands.CopyItemCommand
[/code:1]
Message édité par: dimshell, à: 20/02/19 10:39
Message édité par: dimshell, à: 20/02/19 13:35<br><br>Message édité par: dimshell, à: 20/02/19 15:31
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 7 ans 3 mois #28273
par Arnaud Petitjean
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 ?
Réponse de Arnaud Petitjean sur le sujet Re:Accès distance sur plusieurs serveurs
Hello,
Tu as doublé tes backslashs :
[code:1]
C:\Users\\Documents\test
[/code:1]
C'est normal ?
Tu as doublé tes backslashs :
[code:1]
C:\Users\\Documents\test
[/code:1]
C'est normal ?
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.
- dimshell
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 86
- Remerciements reçus 0
il y a 7 ans 3 mois #28275
par dimshell
Réponse de dimshell sur le sujet Re:Accès distance sur plusieurs serveurs
Oui c'est normal. C'est pour éviter que quand les gens test.
Je crois que l'erreur viens de la version de powershell.
C'est de la version 2.0 car j'ai un Windows 2008R2
Je crois que l'erreur viens de la version de powershell.
C'est de la version 2.0 car j'ai un Windows 2008R2
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 7 ans 3 mois #28280
par Arnaud Petitjean
A bah oui c'est probable !
Tiens nous au courant.
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 ?
Réponse de Arnaud Petitjean sur le sujet Re:Accès distance sur plusieurs serveurs
C'est de la version 2.0 car j'ai un Windows 2008R2
A bah oui c'est probable !
Tiens nous au courant.
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.
- dimshell
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 86
- Remerciements reçus 0
il y a 7 ans 3 mois #28282
par dimshell
Réponse de dimshell sur le sujet Re:Accès distance sur plusieurs serveurs
C'est bon arnaud c'est bien cela j'ai mis à jour le serveur , le powershell en version 4.0 et modifié un peu le WINRM (pare-feu) pour les accès a distance et voilà niquel.
Bientôt la certif powershell
Bientôt la certif powershell
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 7 ans 3 mois #28283
par Arnaud Petitjean
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 ?
Réponse de Arnaud Petitjean sur le sujet Re:Accès distance sur plusieurs serveurs
Génial !! 
Malheureusement elle n'existe pas la certif PowerShell mais pourquoi pas en créer une !?
Certifié PowerShell-Scripting.com/fr !!!
Ca pourrait être pas mal
Malheureusement elle n'existe pas la certif PowerShell mais pourquoi pas en créer une !?
Certifié PowerShell-Scripting.com/fr !!!
Ca pourrait être pas mal
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.
Temps de génération de la page : 0.055 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu] Accès distance plusieurs serveurs