Я запускаю автоматизированный процесс на одном конкретном компьютере, по-разному для Windows 7 или Windows Server 2012. Эти ящики подключены к файловому серверу по сети. Сеть 40 ГБ, поэтому она не медленная. Мы должны передавать огромные объемы данных. Некоторые из этих передач являются просто копиями файлов с файлового сервера на файловый сервер. То есть на нашей машине AppServer мы (эффективно) выполняем такую команду, как

\AppServer\C $> copy \FileServer \Share \Dir1 * \FileServer \Share2 \Dir2

или, может быть

\AppServer\C $> robocopy \FileServer \Share \Dir1 \FileServer \Share2 \Dir2 /S *

Даже в сети 40 ГБ некоторые из этих копий занимают значительное количество времени, например 10 минут, и они могут повторяться 20 раз.

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

У кого-нибудь есть рекомендации по лучшему методу выполнения удаленной копии на самом файловом сервере? Благодарю.

2 ответа2

1
  1. Включите удаленное взаимодействие PowerShell на своих серверах.
  2. Используйте Invoke-Command.

Я также рекомендую убедиться, что PowerShell является одинаковой версией на всех ваших серверах. AFAIK, Server 2012 поставляется с PowerShell 3.0, а Serve 2012 R2 поставляется с 4.0. И 3.0, и 4.0 доступны для Win7 и Server 2008, поэтому нет особых причин не обновляться. Незначительные улучшения в синтаксисе - в частности, Get-ChildItem's -Directory и -File , Where-Object может передавать по конвейеру, и не нужно беспокоиться о вещах, которые иногда являются массивами и не массивами, когда вы хотите использовать метод Count() - стоят того, ИМО. Кроме того, ISE довольно хорош на 4.0.

0

PsExec - это инструмент, который часто используется для выполнения команд на удаленном компьютере.

PsExec, инструмент от Microsoft можно найти здесь.

PsExec - это легкая замена telnet, которая позволяет запускать процессы в других системах с полной интерактивностью для консольных приложений без необходимости устанавливать клиентское программное обеспечение вручную. Наиболее мощное использование PsExec включает запуск интерактивных командных приглашений на удаленных системах и средства удаленного включения, такие как IpConfig, которые в противном случае не имеют возможности отображать информацию об удаленных системах.

PsExec является частью PsTools.

Использование PsExec

См. Выпуск журнала IT IT Pro Magazine за июль 2004 года для статьи Марка, посвященной расширенному использованию PsExec.

Usage: psexec [\\computer[,computer2[,...] | @file]][-u user [-p psswd][-n s]
    [-r servicename][-h][-l][-s|-e][-x][-i [session]][-c [-f|-v]][-w directory]
    [-d][-][-a n,n,...] cmd [arguments]
-a  Separate processors on which the application can run with commas where 1 is 
    the lowest numbered CPU. For example, to run the application on CPU 2 and 
    CPU 4, enter: "-a 2,4"
-c  Copy the specified program to the remote system for execution. If you omit 
    this option the application must be in the system path on the remote system.
-d  Don't wait for process to terminate (non-interactive).
-e  Does not load the specified account’s profile.
-f  Copy the specified program even if the file already exists on the remote 
    system.
-i  Run the program so that it interacts with the desktop of the specified 
    session on the remote system. If no session is specified the process runs in
    the console session.
-h  If the target system is Vista or higher, has the process run with the 
    account's elevated token, if available.
-l  Run process as limited user (strips the Administrators group and allows only
    privileges assigned to the Users group). On Windows Vista the process 
    runs with Low Integrity.
-n  Specifies timeout in seconds connecting to remote computers.
-p  Specifies optional password for user name. If you omit this you will be 
    prompted to enter a hidden password.
-r  Specifies the name of the remote service to create or interact with.
-s  Run the remote process in the System account.
-u  Specifies optional user name for login to remote computer.
-v  Copy the specified file only if it has a higher version number or is newer
    on than the one on the remote system.
-w  Set the working directory of the process (relative to remote computer).
-x  Display the UI on the Winlogon secure desktop (local system only).
-priority   Specifies -low, -belownormal, -abovenormal, -high or -realtime to 
    run the process at a different priority. Use -background to run at low 
    memory and I/O priority on Vista.
computer    Direct PsExec to run the application on the remote computer or 
    computers specified. If you omit the computer name, PsExec runs the
    application  on the local system, and if you specify a wildcard (\\*), 
    PsExec runs the command on all computers in the current domain.
@file   PsExec will execute the command on each of the computers listed in the 
    file.
cmd Name of application to execute.
arguments   Arguments to pass (note that file paths must be absolute paths on 
    the target system).
-accepteula This flag suppresses the display of the license dialog.

Вы можете заключить приложения, в названии которых есть пробелы, кавычками, например:

psexec \marklap "c:\long name app.exe"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .