Я должен убрать тот же каталог на нескольких серверах через сеть. Как я делаю это?

99% времени, просто загрузите источник новой версии (или патч), сборка и установка.

2
задан 10 November 2011 в 20:37
3 ответа

У меня больше нет Windows-машины, но раньше я делал это на работе. Существует psexec, который позволяет удаленно подключаться к другому серверу. Вы также можете изучить удаленное взаимодействие с PowerShell.

Удаленное взаимодействие с Powershell см. http://msdn.microsoft.com/en-us/library/windows/desktop/ee706585 (v = vs.85) .aspx

Использование Dos / Batch см. http: // ss64.com/nt/psexec.html

Если вы хотите, чтобы они работали одновременно, вы можете сделать это, запустив задания в PowerShell, см. тот же сайт ss64.

Если вам интересно ...

Если ваши серверы перечислены в активном каталоге, вы можете проделать небольшой трюк, сказав прокрутите компьютеры с помощью Active Directory

dsquery computer -limit 0 | ?{$_ -imatch "CN=([^,]+),"} | % {
  #remotely run your script here through ps remote
}

или замените dsquery ... на gc $ your_file_name, содержащий список файлов. Dos / Batch - мой синтаксис может быть отключен, но это хороший способ перебрать компьютеры

for /f "eol=, tokens=1, delims=" %cc in ('dsquery computer -name -limit 0 ^| find /i /r /c:'"CN=([^,]+),"') do (

  @REM cannot recall how i used to get back references in dos like this, so may be off.
  @REM call your script here, passing your batch program to psexec
  set computer=%%c
  echo computer=!computer!
)

или заменить dsquery ... на тип "% your file name%"

Кроме того, если вы когда-нибудь столкнетесь с проблемой установка переменных в цикле в пакетном режиме, где они не сохраняются, как вы ожидали, поместите setlocal enabledelayedexpansion в начало программы и оцените свои переменные следующим образом ! var_name! вместо% var_name%

3
ответ дан 3 December 2019 в 11:00

Я хотел бы предложить комбинацию WinRM / WinRS (удаленное управление Windows / удаленная оболочка Windows), которая требует предварительной настройки, но использует инструменты, уже встроенные в Windows.

После завершения настройки ваш сценарий необходимо будет изменить, включив в него команду winrs для подключения. Вы можете создать список серверов в другом текстовом файле и обернуть еще один цикл FOR вокруг вашего текущего скрипта, чтобы избежать 20 строк, которые все делают одно и то же.

0
ответ дан 3 December 2019 в 11:00

Frankly kikuchiyo's answer is awesome and I have voted as much. However for completeness sake I will suggest that you could map to each server and delete the files via a remote share.

I am assuming a domain administrator here, or at least an account that has admin on each of the machines.

But basically I would do womething like this (keeping your code to do the work, not how I woud have perosnally done it but that doesn't mean I'm right)

servers.txt is just a list of the server hostname/IP address

for /f %%a in (servers.txt) do :process %%a

:process

set SERVER=%1

IF [%SERVER%]==[] GOTO EOF

NET USE T: \%SERVER%\C$\Deployments

set CAT=T:

dir "%%CAT%%"/s/b/a | sort /r >> %TEMP%\files2del.txt

for /f "delims=;" %%D in (%TEMP%\files2del.txt) do (del /q "%%D" & rd "%%D")

del /q %TEMP%\files2del.txt

:EOF

0
ответ дан 3 December 2019 в 11:00

Теги

Похожие вопросы