2012-06-21 7 views
0

Ce que je cherche à faire semble assez simple, mais je ne peux pas le comprendre. Je cherche à exécuter un script Powershell pour lancer une session RDP, copier un fichier dans le répertoire c: \, puis exécuter ce fichier à partir d'une ligne de commande. Je voudrais qu'il boucle, obtenant les paramètres d'un fichier de csv, tels que l'IP de serveur, le nom d'utilisateur, et le mot de passe. Donc, en substance les étapes seraient les suivantes ...Exécuter mstsc.exe avec powershell

1.import infor from the csv file to define variables 
2.copy specefied file (then loop) 
3.launch mstsc.exe 
4.enter server IP, username, password 
5.paste copied file into the c:\ directory 
6.launch cmd.exe 
7.Run the file that was copied to the c:\ directory 
8.log off server 

Je voulais voir si quelqu'un pouvait me aider avec this.I suis nouveau shell puissance et ont été en mesure de travailler à travers beaucoup de celui-ci. Si quelqu'un pouvait me diriger dans la bonne direction, ou même me fournir le code pour remplir les blancs, je l'apprécierais grandement.

Pour être plus précis quant à ce que j'essaie de faire est d'installer un agent sur une machine. Le processus impliquerait la connexion sur un serveur via rdp, l'exécution d'un paquet d'installation silencieuse (msi) à partir d'une ligne de commande et c'est tout. Ce que je voudrais faire est de fournir une feuille de calcul à mon client et de lui faire remplir les détails, tels que l'adresse du serveur, nom d'utilisateur et mot de passe. Le I et se tourner vers un csv, exécutez le PowerShell, et installez plusieurs des agents via ce script, sorte de processus automatisé essentiellement. J'espère que ça l'explique un peu mieux.

Voici ce que j'ai jusqu'à présent ...

de Windows ....

$computers= gc "C:\Users\Desktop\Powershell\DeviceList.txt" 
foreach ($computername in $computers) 
{ 
mstsc 
Start-Sleep -s 2 
[System.Windows.Forms.SendKeys]::SendWait("$computername{ENTER}") 

Cela ne lancera la session mstsc, donc sa seule un morceau du casse-tête, ce que je dois faire alors est de copier un fichier sur ce périphérique, puis exécutez cmd.exe et une seule commande et déconnectez-vous.

UNIX >>>

$computers= gc "C:\Users\Desktop\Powershell\DeviceList.txt" 
foreach ($computername in $computers) 
{ 
c:\putty.exe 
Start-Sleep -s 2 
[System.Windows.Forms.SendKeys]::SendWait("$computername{ENTER}") 
} 

A peu près la même chose, mais je peux exécuter des commandes directement à partir du mastic pour faire ce travail et ne pas copier un fichier que je peux obtenir une autre façon par exécuter quelques commandes.

Toute aide ou des idées avec ceci est appréciée, merci.

+0

Qu'en est-psexec? –

+0

J'ai édité mon post d'origine avec ce que j'ai jusqu'ici. Le PSEXEC ne fonctionne pas vraiment bien, à partir de tout ce que vous voulez comprendre. Vous ne devez pas l'activer sur tous les appareils auxquels je cherche? Si cela devait éliminer le besoin, une fois arrivé à l'appareil, je viens juste de copier un fichier et d'exécuter une seule commande pour une installation silencieuse. Avec mstsc, je peux le démarrer, mais je n'arrive pas à trouver un moyen d'entrer une commande dans une session Windows. Avec unix c'est assez facile, je viens d'utiliser putty et la fonction SendKeys et, non testé, mais semble fonctionner. – user1462832

+1

Si PowerShell 2 est installé sur tous vos serveurs, alors allez à WS-management: Setup: http://technet.microsoft.com/fr-fr/magazine/ff700227.aspx & Utilisez: http://technet.microsoft. com/fr-fr/library/dd819505.aspx –

Répondre

0

J'ai l'impression que vous avez choisi un mauvais sens. PowerShell a de grandes capacités à distance, donc si tous vos clients ont Windows Management (qui est inclus à défaut des paquets dans Vista, sept et huit) vous pouvez essayer chose suivante:

# Comma separated list: 
$listRaw = @" 
Computer,User,Password 
computer1,"Domain\user1","passw1" 
computer2,"Domain\user2","passw2 with spaces" 
"@ 

# Parse CSV list 
$list = $listRaw | ConvertFrom-CSV -Delimiter ',' 

# Iterate targets 
foreach ($target in $list) { 
    Write-Host "Connecting to $($target.Computer) as $($target.User)" 

    # Creating credential from username and password 
    $SecurePassword = $target.Password | ConvertTo-SecureString -AsPlainText -Force 
    $Credentials = New-Object System.Management.Automation.PSCredential -ArgumentList $target.User, $SecurePassword 

    # Creating remote session to that computer 
    # Using given credentials 
    $session = New-PSSession -ComputerName $target.Computer -Credential $Credentials 

    # Invoking actions on that remote session 
    Invoke-Command -Session $session -ArgumentList $target.Computer -ScriptBlock { 
     Param($computerName) 

     # this code executes on remote computer 
     "Hello from $computerName" 
    } 
} 

S'il vous plaît, laissez-nous savoir, si cela fonctionne sur votre environnement.

0

mstsc prennent $ Computer comme argument en utilisant mstsc Computer $ Ajout d'un utilisateur de peut se faire via CMDKEY et vous pouvez enregistrer les informations d'identification de l'ordinateur distant

0

Une combinaison de PSSession et (éventuellement) Plink. exe de la page de téléchargement de Putty, devrait vous aider à atteindre votre objectif. Les cmdlets New-PSSession et Enter-PSSession vous permettent d'utiliser une session PowerShell distante avec vos cibles Windows (en supposant que WinRM est activé). De là, vous pouvez exécuter des commandes PShell sur votre cible.

$session - New-PSSession -computerName [targetName/ip] -Credential (get-credential) 
$session | Enter-PSSession 
{ Execute Silent install } 
Exit-PSSession 
$session | Disconnect-PSSession 

Ou vous pouvez utiliser Invoke-Command

Invoke-Command -ScriptBlock { install.exe /s } -computerName [target] -credential (Get-Credential) 

Pour les systèmes Linux, vous pourriez être en mesure d'utiliser Plink.exe pour exécuter des scripts distants via SSH. Pas quelque chose que j'ai déjà essayé, mais ça devrait bien fonctionner.

Ce lien pourrait être une aide: http://the.earth.li/~sgtatham/putty/0.53b/htmldoc/Chapter7.html

Questions connexes