2012-06-21 2 views
0

То, что я ищу, кажется довольно простым, но я не могу понять это. Я хочу запустить сценарий Powershell для запуска сеанса RDP, скопировать файл в каталог c: \, а затем запустить этот файл из командной строки. Я бы хотел, чтобы он зациклился, получив paramars из csv-файла, такого как IP-адрес сервера, имя пользователя и пароль. Таким образом, по сути шагов, будут следующие ...Запуск mstsc.exe с 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 

Я хотел бы видеть, если кто-то может помочь мне с this.I новичка в силовую оболочку и была в состоянии работать через много. Если кто-то может указать мне в правильном направлении или даже предоставить мне код, чтобы заполнить пробелы, я бы очень его воспринял.

Чтобы быть более пространным относительно того, что я пытаюсь сделать, это установить агент на машину. Этот процесс повлечет за собой регистрацию на сервере через rdp, запускает пакет безмолвной установки (msi) из командной строки, и это он. То, что я хотел бы сделать, это предоставить электронную таблицу моему клиенту и попросить его заполнить детали, такие как адрес сервера, имя пользователя и пароль. Я и превращаюсь в csv, запускаю powershell и устанавливаю многие из агентов через этот скрипт, вроде как автоматизированный процесс по существу. Надеюсь, что это немного лучше.

Вот то, что я до сих пор ...

Окна ....

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

Это будет только запустить Mstsc сессию, поэтому ее только часть головоломки, что мне нужно для этого нужно скопировать файл на это устройство, а затем запустить cmd.exe и одну команду и выйти из системы.

Для 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}") 
} 

Практически то же самое, но я могу запускать команды непосредственно из шпатлевки, чтобы сделать эту работу и не нужно копировать файл, как я могу получить это еще один путь к выполнив несколько команд.

Любая помощь или идеи с этим связаны, спасибо.

+0

насчет PsExec? –

+0

Я отредактировал мой пост с тем, что у меня есть. PSEXEC действительно не работает так хорошо, как от yunderstandings, dont yuo должен включить его на всех устройствах, которые я ищу для доступа? Если это так устранит необходимость, как только я доберусь до устройства, мне просто нужно скопировать файл и запустить одну команду для бесшумной установки. С mstsc я могу запустить его, но я не могу определить способ ввода команд в сеанс Windows. С unix довольно легко, я просто использую putty и функцию SendKeys и, непроверенную, но, похоже, работает. – user1462832

+1

Если powershell 2 установлен на всех ваших серверах, тогда перейдите на WS-management: Setup: http://technet.microsoft.com/en-us/magazine/ff700227.aspx & Use: http://technet.microsoft. ком/EN-US/библиотека/dd819505.aspx –

ответ

0

Похоже, вы выбрали неправильный путь. PowerShell имеет большие дистанционные способности, так что если все ваши клиенты (Windows Management, которая включена по умолчанию пакетов в Vista, семь и восемь), вы можете попробовать следующее вещь:

# 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" 
    } 
} 

Пожалуйста, дайте нам знать, если он работает в вашей среде.

0

Mstsc взять $ компьютера в качестве аргумента, используя Mstsc -v $ Computer Добавление пользователя может быть сделано с помощью cmdkey и вы можете сохранить учетные данные удаленного компьютера

0

Сочетание PSSession и (возможно) Plink. exe из страницы загрузки Putty, должен помочь вам достичь своей цели.

Командлеты New-PSSession и Enter-PSSession позволят вам использовать удаленный сеанс PowerShell с вашими объектами Windows (при условии, что WinRM включен). Оттуда вы можете выполнять команды PShell на своей цели.

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

Или вы можете использовать Invoke-Command

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

Для ящиков Linux, вы можете быть в состоянии использовать палить.exe для запуска удаленных скриптов через SSH. Не то, что я пробовал раньше, но он должен работать нормально.

Эта ссылка может иметь некоторую помощь: http://the.earth.li/~sgtatham/putty/0.53b/htmldoc/Chapter7.html

Смежные вопросы