Question [Résolu] Accès distance plusieurs serveurs

Plus d'informations
il y a 7 ans 3 mois #28268 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

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

Plus d'informations
il y a 7 ans 3 mois #28273 par Arnaud Petitjean
Hello,

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.

Plus d'informations
il y a 7 ans 3 mois #28275 par dimshell
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

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

Plus d'informations
il y a 7 ans 3 mois #28280 par Arnaud Petitjean

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.

Plus d'informations
il y a 7 ans 3 mois #28282 par dimshell
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 :woohoo: :lol: :lol:

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

Plus d'informations
il y a 7 ans 3 mois #28283 par Arnaud Petitjean
Génial !! B)

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.047 secondes
Propulsé par Kunena