Обновлено 15.02.2022
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов в рунете Pyatilistnik.org. В прошлый раз мы с вами разобрали замечательную утилиту командной строки robocopy, и с ее помощью научились создавать точные копии папок, двигать их в нужное расположение и многое другое. В сегодняшней публикации я покажу вам, как устранять ошибку «Сервер RPC недоступен (The rpc server is unavailable)», покажу примеры, когда ее мониторинг очень важен в работе корпоративных сервисов.
Для чего нужна служба «Удаленный вызов процедур (RPC)»
Удаленный вызов процедур (RPC) — это протокол, который одна программа может использовать для запроса услуги у программы, расположенной на другом компьютере в сети, без необходимости разбираться в деталях сети. RPC используется для вызова других процессов на удаленных системах, таких как локальная система. Вызов процедуры также иногда называют вызовом функции или вызовом подпрограммы .
RPC использует модель клиент-сервер. Запрашивающая программа — это клиент, а программа, предоставляющая услуги, — это сервер. Подобно обычному или локальному вызову процедуры, RPC — это синхронная операция, требующая приостановки запрашивающей программы до тех пор, пока не будут возвращены результаты удаленной процедуры. Однако использование облегченных процессов или потоков, которые совместно используют одно и то же адресное пространство, позволяет одновременно выполнять несколько RPC.
Язык определения интерфейса (IDL) — язык спецификации, используемый для описания интерфейса прикладного программирования (API) программного компонента — обычно используется в программном обеспечении удаленного вызова процедур. В этом случае IDL обеспечивает мост между машинами на обоих концах связи, которые могут использовать разные операционные системы (ОС) и компьютерные языки.
Процедура сообщения RPC
Когда программные операторы, использующие структуру RPC, компилируются в исполняемую программу, в скомпилированный код включается заглушка, которая выступает в качестве представителя кода удаленной процедуры. Когда программа запускается и выполняется вызов процедуры, заглушка получает запрос и пересылает его клиентской программе и времени выполнения на локальном компьютере. При первом вызове клиентской заглушки она связывается с сервером имен, чтобы определить транспортный адрес, по которому находится сервер.
Программа среды выполнения клиента знает, как обращаться к удаленному компьютеру и серверному приложению, и отправляет сообщение по сети, которое запрашивает удаленную процедуру. Точно так же сервер включает исполняющую программу и заглушку, которая взаимодействует с самой удаленной процедурой. Протоколы ответа-запроса возвращаются таким же образом.
Данная служба есть в любой операционной системе Windows, начиная от Windows 7 и заканчивая Windows 11 и в любой из Windows Server редакции.
Как работает RPC?
Когда вызывается служба RPC (удаленный вызов процедуры), вызывающая среда приостанавливается, параметры процедуры передаются по сети в среду, в которой должна выполняться процедура, а затем процедура выполняется в этой среде. Когда процедура завершается, результаты передаются обратно в вызывающую среду, где выполнение возобновляется, как если бы оно возвращалось из обычного вызова процедуры.
Во время RPC выполняются следующие шаги:
- Клиент вызывает клиентскую заглушку. Вызов представляет собой вызов локальной процедуры с параметрами, помещенными в стек обычным способом.
- Клиентская заглушка упаковывает параметры процедуры в сообщение и выполняет системный вызов для отправки сообщения. Упаковка параметров процедуры называется маршалингом.
- Локальная ОС клиента отправляет сообщение с клиентского компьютера на удаленный сервер.
- Серверная ОС передает входящие пакеты на серверную заглушку.
- Заглушка сервера распаковывает параметры из сообщения — это называется демаршалингом .
- Когда серверная процедура завершается, она возвращается к серверной заглушке, которая маршалирует возвращаемые значения в сообщение. Затем заглушка сервера передает сообщение на транспортный уровень.
- Транспортный уровень отправляет полученное сообщение обратно на клиентский транспортный уровень, который возвращает сообщение клиентской заглушке.
- Клиентская заглушка не упорядочивает возвращаемые параметры, и выполнение возвращается вызывающей стороне.
Клиент RPC по 135 порту подключается к службе RPC Endpoint Mapper (сопоставления конечных точек), а далее уже запрашивает номер порта, где запущено нужное RPC приложение. Служба сопоставления конечных точек вернет клиенту RPC номер динамического RPC порта (диапазон 1024 – 65535), на котором работает нужная служба. Дальше уже все взаимодействие идет по TCP порту
Если вы видите ошибку «Сервер RPC недоступен” (The RPC server is unavailable)», то у вас точно недоступен порт 135. Это может быть критичным для ряда ситуации. Например вы не сможете сохранить настройки RDS фермы, если у одного из хостов RDSH есть проблемы с RPC, то вы будите видеть ошибку «Could not change the connection state for server», вы не сможете перевести его в режим обслуживания (Drain Mode)
Или в приложении Terminal Services Manager будет ошибка при попытке получения данных «Сервер RPC недоступен«.
Так же RPC может быть причиной проблемы в репликации контроллеров домена, где в логах Windows будет фигурировать ошибка ID 1722. Это очень не приятный момент, который может привести к большим проблемам.
Типы RPC
Существует пять типов RPC:
- Обычный метод работы, при котором клиент выполняет вызов и не продолжает работу до тех пор, пока сервер не вернет ответ.
- Клиент звонит и продолжает свою обработку. Сервер не отвечает.
- Средство для отправки нескольких клиентских неблокирующих вызовов в одном пакете.
- У клиентов RPC есть средство широковещательной рассылки, т. е. Они могут отправлять сообщения на множество серверов, а затем получать все полученные ответы.
- Клиент делает неблокирующий вызов клиент/сервер; сервер сигнализирует о завершении вызова путем вызова процедуры, связанной с клиентом.
Почему может не работать служба RPC
- Удаленный компьютер с которым идет взаимодействие выключен
- На удаленном сервере не запущена или перестала работать служба RPC
- Подключение по RPC происходит не к тому серверу (Может быть проблема с DNS или IP адресом)
- Есть блокировки между клиентом и сервером на фаэрволе
- Используются некорректные настройки сетевого подключение на клиенте или сервере
Преимущества удаленного вызова процедур
К преимуществам удаленного вызова процедур можно отнести следующее:
- помогает клиентам общаться с серверами посредством традиционного использования вызовов процедур на языках высокого уровня;
- может использоваться как в распределенной, так и в локальной среде;
- поддерживает процессно-ориентированные и поточно-ориентированные модели;
- скрывает внутренний механизм передачи сообщений от пользователя;
- требует минимальных усилий для переписывания и повторной разработки кода;
- обеспечивает абстракцию, т. е. характер передачи сообщений по сети скрыт от пользователя;
- опускает многие уровни протокола для повышения производительности.
Недостатки RPC
Некоторые из недостатков RPC включают следующее:
- Клиент и сервер используют разные среды выполнения для своих соответствующих подпрограмм, и использование ресурсов, например файлов, также является более сложным. Следовательно, системы RPC не подходят для передачи больших объемов данных.
- RPC очень уязвим для сбоев, потому что он включает в себя систему связи, другую машину и другой процесс.
- Единого стандарта для RPC не существует; это может быть реализовано множеством способов.
- RPC основан только на взаимодействии и, как таковой, не предлагает гибкости, когда дело касается аппаратной архитектуры.
Проверка доступности службы RPC
- Как я и писал выше, в первую очередь вы должны убедиться, что удаленный компьютер к которому вы делаете проверку RPC доступен по сети. Для этого элементарно откройте командную строку или оболочку PowerShell и воспользуйтесь командой Ping, NSlookup, Test-NetConnection. Я буду производить проверку службы удаленного вызова в PowerShell. Выполним для начала команду Ping. Мой удаленный сервер называется SVT201S01.root.pyatilistnik.org. Пишем команду:
ping SVT201S01.root.pyatilistnik.org
Если вдруг компьютер не ответил, то это не значит, что он не работает, может работать брандмауэр и просто блокировать ping пакеты.
- Далее выполните Nslookup, чтобы удостовериться, что нужное вам имя компьютера преобразовывается в нужный IP-адрес. Выполните:
nslookup SVT201S01.root.pyatilistnik.org
Небольшой пример из практики, предположим, что вы мигрировали сервер в другую подсеть, в итоге в DNS должна быть изменена соответствующая запись, но Windows это поймет не сразу, так как у нее есть свой локальный кэш, он живет 15 минут, поэтому если при проверке DNS имени вам выдается не тот IP-адрес, вам необходимо произвести очистку кэша DNS.
- Далее я вам советую проверить отвечает ли порт. Напоминаю, что служба RPC Endpoint Mapper слушает порт под номером 135. В PowerShell введите команду:
Test-NetConnection svt2019s01.root.pyatilistnik.org -Port 135
Если удаленный RPC порт доступен вы в в строке TcpTestSucceeded будет стоять статус «True».
Если будет порт закрыт или блокируется, то ошибка «Сервер RPC недоступен (The rpc server is unavailable)» вам обеспечена. Поняв, что порт не отвечает, нужно удостовериться, что трафик от клиента до сервера не блокирует фаервол. По умолчанию в любой версии Windows есть встроенный брандмауэр. На время тестирования и поиска причины, я советую его выключить для всех профилей. Сделаем мы это через командную строку:
Netsh Advfirewall set allprofiles state off
Данная команда выключит брандмауэр на всех трех профилях сетевой карты.
Далее если порт 135 стал доступен, то можно делать правила на удаленном сервере. Напоминаю, что нужно сделать правило для трех служб:
- Remote Procedure Call (RPC) — Удаленный вызов процедур (RPC)
- RPC Endpoint Mapper — Сопоставитель конечных точек RPC
- COM Server Process Launcher — Модуль запуска процессов DCOM-сервера
Подробнее, о том как сделать правила — https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-firewall/create-inbound-rules-to-support-rpc)
Еще хочу отметить, что если у вас есть сторонние антивирусные решения, например Касперский, то там так же есть встроенный сетевой экран, где так же нужно будет создать необходимые, разрешающие правила, которые корректно будут обрабатывать трафик динамических RPC портов.
Проверка работы служб RPC
Следующим шагом является проверка состояния службы на нужном вам сервере или компьютере. Проверять следует три службы:
- Remote Procedure Call (RPC) — Удаленный вызов процедур (RPC)
- RPC Endpoint Mapper — Сопоставитель конечных точек RPC
- COM Server Process Launcher — Модуль запуска процессов DCOM-сервера
В оболочке PowerShell выполните команду:
Для локального сервера — Get-Service RpcSs,RpcEptMapper,DcomLaunch| Select DisplayName,Status,StartType
Для удаленного выполнения Enter-PSSession svt2019s01 далее Get-Service RpcSs,RpcEptMapper,DcomLaunch| Select DisplayName,Status,StartType
Напоминаю, что в команде svt2019s01, это имя удаленного сервера. Как видно из примера, все службы RPC запущены и имею автоматический тип запуска.
Если службы не запущены, то откройте оснастку «services.msc’, зайдите в свойства службы и выставите автозапуск и попробуйте запустить вручную.
Если по каким, то причинам вы не можете запустить службу из оснастки, то можно это сделать через реестр (Кстати реестр можно править и удаленно). Для этого есть несколько веток, но для начала откройте окно «Выполнить» и введите regedit.
- Модуль запуска процессов DCOM-сервера — HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesDcomLaunch
- Сопоставитель конечных точек RPC — HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesRpcEptMapper
- Удаленный вызов процедур (RPC) — ветка реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesRpcSs
В каждом из этих расположений есть ключик «Start«, выставите ему значение «2«, это будет означать автоматический запуск службы.
Дополнительные сетевые проверки
В некоторых случаях причиной ошибок с доступностью RPC выступает сбой на сетевых адаптерах. Помогает сброс сетевых настроек и перезагрузка. В сети с Active Directory, старайтесь, чтобы на всех ваших сетевых адаптерах в свойствах были выставлены обе галки IPV4 и IPV6, особенно это актуально для контроллеров домена, где вы легко можете получать ошибку 1722. Еще может помочь отключение протокола Teredo у IPv6. В командной строке выполните:
netsh interface teredo set state disabled
Для включения обратно введите:
netsh interface teredo set state enabled
Еще на сайте Майкрософт пишут, что необходимо на сервере RPC иметь включенную службу «Удаленный реестр«. На этом у меня все, с вами был Иван Сёмин, автор и создатель IP портала Pyatilistnik.org.
Доброго времени суток.
Делаю следующее:
При загрузке формы подключаю книгу EXCEL, вывожу данные на LIstview.
В listbox вывожу список листов книги.
Дальше написан обработчик на двойной клик в Listbox — (Если индекс — 2, то считать данные со второго листа)
Для записи в Listview создал метод.
C# | ||
|
Проблема в том, что при вызове его из обработчика выскакивает ошибка:
Необработанное исключение типа «System.Runtime.InteropServices.COMException» произошло в mau.exe
Дополнительные сведения: Сервер RPC недоступен. (Exception from HRESULT: 0x800706BA)
Отладчик ссылается на:
C# | ||
|
Помогите пожалуйста исправить.
I have the following code that converts an excel sheets to csv files. If the csv files do not exist/or exist already but not in use (e.g. opened in excel), the script generates the csv files successfully (overwriting them if they exist already)!
However, if the csv file is opened in excel, then i get an error «Can’t access csv file» which i have determined is because its in use by excel (when opened). I know this is 100% the reason because if i have the existing csv file opened in notepad,
the script still overwrites the csv file, running successfully.
so i tried implementing an automatic resolution, which is Get-Process 'exce[l]' | Stop-Process -Force
, and although it does stop the process (closes excel), I get yet another error:
Convert-ExcelSheetsToCsv : Failed to save csv! Path: 'C:UsersDocumentsFolder1CSV_FilesCOS.csv'. The remote
procedure call failed. (Exception from HRESULT: 0x800706BE)
Convert-ExcelSheetsToCsv : Failed to save csv! Path: 'C:UsersDocumentsFolder1CSV_Files.csv'. The RPC server is
unavailable. (Exception from HRESULT: 0x800706BA)
After some research, I disabled my COM-Excel Addins, ran the script again, and the exceptions still occurred again…
why is that?
code:
$currentDir = $PSScriptRoot $csvPATH = Join-Path -Path $currentDir -ChildPath CSV_Files New-Item -ItemType Directory -Force -Path $csvPATH | out-null function Convert-ExcelSheetsToCsv { param( [Parameter(Mandatory, ValueFromPipelineByPropertyName, Position=1)] [ValidateNotNullOrEmpty()] [Alias('FullName')] [string]$Path, [Parameter(Mandatory = $false, Position=0)] [bool]$AppendFileName, [Parameter(Mandatory = $false, Position=2)] [bool]$ExcludeHiddenSheets, [Parameter(Mandatory = $false, Position=3)] [bool]$ExcludeHiddenColumns ) Begin { $excel = New-Object -ComObject Excel.Application -Property @{ Visible = $false DisplayAlerts = $false } } Process { #$root = Split-Path -Path $Path $filename = [System.IO.Path]::GetFileNameWithoutExtension($Path) $workbook = $excel.Workbooks.Open($Path) foreach ($worksheet in ($workbook.Worksheets | Where { <# $_.Visible -eq -1 #> $_.Name -ne 'Security' -and $_.Name -ne 'Notes' })) { if($ExcludeHiddenColumns) { $ColumnsCount = $worksheet.UsedRange.Columns.Count for ($i=1; $i -le $ColumnsCount; $i++) { $column = $worksheet.Columns.Item($i).EntireColumn #$worksheet.sheets.columns.entirecolumn.hidden=$true if ($column.hidden -eq $true) { $columnname = $column.cells.item(1,$i).value2 if ($worksheet.Visible -eq 0) #worksheet hidden { "`r`nHidden column [{0}] found in hidden [{1}] worksheet. Deleting..." -f $columnname, $($worksheet.name) } else { "`r`nHidden column [{0}] found in [{1}] worksheet. Deleting..." -f $columnname, $($worksheet.name) } try { $column.Delete() | out-null "`r`nHidden column [{0}] was Deleted! Proceeding with Export to CSV operation...`r`n" -f $columnname } catch { Write-Error -Message "`r`nFailed to Delete hidden column [$columnname] from [$($worksheet.name)] worksheet! $PSItem" #$_ | Select * } #$i = $i - 1 } } } if ($ExcludeHiddenSheets) { if ($worksheet.Visible -eq -1) #worksheet visible { $ws = $worksheet } } else { $ws = $worksheet } if ($AppendFileName) { $name = Join-Path -Path $csvPATH <# $root #> -ChildPath "${filename}_$($ws.Name).csv" } else { $name = Join-Path -Path $csvPATH <# $root #> -ChildPath "$($ws.Name).csv" } try { $ws.SaveAs($name, 6) #6 to ignore formatting and convert to pure text, otherwise, file could end up containing rubbish } catch { if ($error[0].ToString().Contains("Cannot access")) { "`r`n'{0}' is currently in use.`r`n Attempting to override usage by trying to stop Excel process..." -f $name try { #Only 'excel' will be matched, but because a wildcard [] is used, not finding a match will not generate an error. #https://stackoverflow.com/a/32475836/8397835 Get-Process 'exce[l]' | Stop-Process -Force "`r`nExcel process stopped! Saving '{0}' ..." -f $name $ws.SaveAs($name, 6) } catch { Write-Error -Message "Failed to save csv! Path: '$name'. $PSItem" } } else { Write-Error -Message "Failed to save csv! Path: '$name'. $PSItem" } } } } End { $excel.Quit() $null = [System.Runtime.InteropServices.Marshal]::ReleaseComObject($excel) } } Get-ChildItem -Path $currentDir -Filter *.xlsx | Convert-ExcelSheetsToCsv -AppendFileName
—-
RelatedIfSolvedFIrst
Содержание
- Методы устранения ошибки «Сервер RPC недоступен»
- Способ 1: Службы Windows
- Способ 2: Проверка системных файлов
- Способ 3: Деактивация брандмауэра
- Способ 4: Поиск вирусов
- Вопросы и ответы
В процессе работы операционной системы Windows происходит регулярный обмен пакетами и данными между программными компонентами. Иногда подобные процедуры становятся причиной различных ошибок. Из данной статьи вы узнаете о методах исправления ошибки «Сервер RPC недоступен» на устройствах под управлением Windows 10.
Упомянутая ошибка может появиться в различных ситуациях, но чаще всего это происходит при попытке установить удаленный доступ, при обращении к одной из системных служб или банально при запуске какой-то программы. Далее мы расскажем детально об основных способах, которые помогают решить проблему.
Способ 1: Службы Windows
Самой распространенной причиной появления ошибки «Сервер RPC недоступен» является сбой в одноименной службе. Именно поэтому в первую очередь стоит убедиться в ее работоспособности. Для этого сделайте следующее:
- Нажмите на «Панели задач» правой кнопкой мышки. Из контекстного меню выберите строку «Диспетчер задач».
Читайте также: 3 способа открыть Диспетчер задач на Windows
- Далее перейдите в открывшемся окне во вкладку «Службы». В самом ее низу нажмите на строку «Открыть службы».
- На экране появится перечень всех служб, установленных на вашем компьютере. Отыщите среди них ту, которая называется «Локатор удаленного вызова процедур (RPC)». Кликните по ней два раза левой кнопкой мышки.
- Убедитесь в том, что напротив строки «Тип запуска» стоит значение «Вручную». При этом напротив пункта «Состояние» должна быть надпись «Остановлена». Если это не так, выберите из выпадающего меню соответствующий тип запуска и деактивируйте службу, нажав на кнопку «Остановить». После этого нажмите кнопку «OK» для сохранения изменений.
- Вернитесь к списку служб и аналогичным образом откройте окно управления «Удаленным вызовом процедур (RPC)».
- В данном случае в строке «Тип запуска» должно стоять значение «Автоматически», а сама служба активирована. Если у вас по каким-то причинам это не так, нажмите кнопку «Запустить» и установите нужный тип запуска. Не забудьте нажать «OK» после внесения изменений.
- Аналогичным образом проверьте службы «Сервер», «Средство построения конечных точек Windows Audio», «Удаленный реестр» и «Питание». Все они также должны иметь автоматический типа запуска и быть активированными. Если у вас ошибка «Сервер RPC недоступен» сопровождается кодом 1722, таким же образом активируйте службы «Диспетчер печати» и «Модуль запуска процессов DCOM-сервера».
- Настроив должным образом все указанные службы, повторите действия, которые вызывали ошибку. Вполне вероятно, что оно будет устранена.
Способ 2: Проверка системных файлов
Для корректной работы удаленного вызова процедур (именно так расшифровывается RPC) необходимы специальные системные файлы. Если они отсутствуют или повреждены, может возникать описываемая ошибка. Следовательно, для решения необходимо выполнить их проверку и восстановление.
- Запустите «Командную строку» от имени администратора. Для этого нажмите вместе клавиши «Windows» и «R», введите в открывшееся окно команду
cmd
, а затем зажав «Ctrl» и «Shift», нажмите на клавиатуре «Enter».
Читайте также: Запуск «Командной строки» от имени администратора в Windows 10
- Далее нужно ввести в окно «Командной строки» по очереди две следующие команды, нажимая после каждой из них «Enter»:
DISM.exe /Online /Cleanup-image /Restorehealth
sfc /scannow
- Начнется автоматическое сканирование и восстановление всех системных файлов. Процедура длится весьма долго, имейте это ввиду. Дождитесь окончания проверки и закройте «Командную строку». После этого повторите действия, которые приводили к ошибке «Сервер RPC недоступен».
Способ 3: Деактивация брандмауэра
По умолчанию во всех редакциях Windows 10 есть встроенный файервол. Его цель – защитить вас от вредоносного влияния вирусов. Однако бывает и так, что этот самый брандмауэр блокирует нужные пакеты, тем самым вызывая различные ошибки, и случай с проблемой «Сервер RPC недоступен» не исключение. Именно поэтому стоит попробовать отключить защитник на время. Делается это очень просто:
- В трее кликните два раза ЛКМ по иконке «Защитника Windows».
- В левой части открывшегося окна перейдите в раздел «Брандмауэр и безопасность сети».
- Далее кликните по названию той сети, напротив которой у вас присутствует слово «Активный». В нашем случае это «Общедоступная сеть».
- Для выключения брандмауэра установите переключатель в состояние «Откл».
- Теперь остается лишь проверить, помогло это или нет. Самое главное – не забудьте вновь включить защиту, так как в противном случае ваша кибербезопасность будет под угрозой.
Способ 4: Поиск вирусов
Заражение системы вирусами влечет за собой много негативных последствий. Одним из них может быть появление ошибки «Сервер RPC недоступен». Поэтому одним из комплексных решений в данном случае является поиск и устранение вредоносного ПО. Делать это мы рекомендуем с помощью специального портативного софта, так как современные вирусы достаточно «умны» для того, чтобы заразить даже антивирус. Результат поиска в подобных ситуациях будет отрицательным. О самых эффективных портативных антивирусных решениях мы рассказывали ранее в отдельной статье, с которой и советуем ознакомиться.
Подробнее: Проверка компьютера на наличие вирусов без антивируса
В качестве заключения мы хотели бы напомнить вам о необходимости своевременной установки обновлений Windows 10. Дело в том, что в более ранних версиях операционной системы ошибку «Сервер RPC недоступен» иногда удавалось устранить путем инсталляции определенного патча. Однако в последней версии ОС от этого отказались в пользу накопительных обновлений. О том, как правильно проверить наличие обновлений и инсталлировать их, читайте по ссылке ниже.
Подробнее: Установка обновлений Windows 10
Еще статьи по данной теме:
Помогла ли Вам статья?
- Remove From My Forums
-
Question
-
Good AfterNoon Scripting Guys and Gals,
I have a problem where I am creating 218 sheets in excel and it crashes around creating sheet128. and I get RPC server is unavailable. So it would be ideal if I could create more sheets with out it crashing or if there is a way to reopen the same sheet when
it crashes and finish creating the sheets. option 2 would be if yall could educate me on how to split the array in half or at a particular line #. below is my code any help yall can offer I greatly appreciate it.$greaterthan30 = gci |select-object -expandProperty name | Where-Object { $_.length -gt 30 }
$greaterthan30 = $greaterthan30.substring(0, 30)
$lessthan30 = gci |select-object -expandProperty name | Where-Object { $_.length -lt 30 }
$justright = $greaterthan30 + $lessthan30
[array]::Reverse($justright)$excel = new-object -comobject Excel.Application
$excel.visible = $true
$WorkBook = $Excel.Workbooks.Add()
$justright | ForEach-Object {
$newsheet = $workbook.worksheets.add()
$newsheet.name = $_
}
Answers
-
The number of worksheets is only limited by the amount of installed memory. It is likely you are running out of memory. It is also possible that your Excel needs to be repaired.
I can create thousands of blank worksheets with no issue and it is extremely fast.
Memory will be a bigger problem, on 32 bit Windows and on old versions of Windows.
_(ツ)_/
-
Edited by
Monday, June 11, 2018 8:58 PM
-
Marked as answer by
cmoneyg
Monday, June 11, 2018 9:49 PM
-
Edited by
-
I would recommend not (ab)using Excel in this way and use an intermediate, faster, and simpler format such as CSV.
— Bill Stewart [Bill_Stewart]
-
Marked as answer by
cmoneyg
Monday, June 11, 2018 9:49 PM
-
Marked as answer by
Всем привет! В общем, сегодня столкнулся с проблемой – при попытке подключения к удаленному компьютеру произошла следующая системная ошибка:
Сервер RPC недоступен.
Бился я с ней где-то часа два, и все же мне удалось её решить. Я на всякий пожарный описал все возможные способы, которые мне попадались в интернете. Постарался описать подробно, но сжато, чтобы не тратить ваше время. Если что-то будет не получаться – пишите в комментариях, постараюсь вам помочь.
Содержание
- Способ 1: Запуск служб
- Способ 2: Целостность системных файлов
- Способ 3: Выключение антивируса или брандмауэра
- Способ 4: Комплексные меры
- Задать вопрос автору статьи
Способ 1: Запуск служб
Чаще всего ошибка «Сервер RPC недоступен» как в Windows 10, так и в Windows 11 возникает из-за того, что зависла одна из служб, работающая с RPC. Подобное бывает при общем сбое операционной системы или при неправильной работе какой-то программы. Давайте попробуем это исправить.
- Одновременно на клавиатуре зажмите две клавиши:
+ R
- Введите команду:
services.msc
- Теперь найдите службу «Локатор удаленного вызова процедур (RPC)». Чтобы открыть службу, два раза быстро нажмите левой кнопкой мыши. Или через правую кнопку и контекстное меню перейдите в «Свойства».
- В первую очередь обратите внимание на «Состояние» – служба не должна быть активной. Если вы видите, что она запущена – остановите её с помощью кнопки. После этого еще проверьте «Тип запуска» – чтобы стоял параметр «Вручную». Примените настройки и закройте окошко.
- Вторую службу, которую нужно проверить – это служба «Удаленного вызова процедур (RPC).
- Данная служба наоборот должна быть запущена (смотрим в «Состояние») – если она по каким-то причинам остановлена, запустите её. Также установите автоматический тип запуска. Не забудьте применить настройки, если вы их меняли.
- Все то же самое делаем для служб:
Сервер
Средство построения конечных точек Windows Audio
Удаленный реестр
Питание
- Все они должны быть запущены. Ну и не забудьте проверить тип запуска – служба должна автоматически запускаться вместе с запуском операционной системы.
ПРИМЕЧАНИЕ! Если в коде ошибки вы видите конкретный номер 1722 – это значит вам нужно дополнительно проверить еще две службы «Модель запуска процессов DCOM-сервера» и «Диспетчер печати».
После перечисленных проверок попробуйте заново проделать те действия, которые до этого вызывали ошибку. Если ошибка пропадет – хорошо. Если она останется – попробуйте перезагрузить комп. После запуска ОС все службы должны запуститься нормально.
Способ 2: Целостность системных файлов
Для нормальной работы всех служб и встроенных системных программ, которые работают с RPC, нужно, чтобы все файлы системы были исправны. Из-за вирусов, сторонних программ, а также из-за поломки секторов жесткого диска системные файлы могут ломаться. Нам нужно проверить целостность системных файлов и восстановить их.
Запускаем командную строку с правами администратора. Прежде чем мы запустим проверку, хочу вас предупредить, что в некоторых ситуациях процедура может длиться долго. Windows автоматически должна проверить файлы и в случае обнаружения поломок восстановить их. Используем две команды:
DISM.exe /Online /Cleanup-image /Restorehealth
sfc /scannow
Способ 3: Выключение антивируса или брандмауэра
Возможно проблема с удаленным подключением связана с блокировкой вашего антивируса. Попробуйте его выключить. Для этого в правом нижнем углу экрана в трее нажмите правой кнопкой по значку вашего антивируса – далее поищите в каждом из пунктов команду отключения защиты и деактивируйте её на какое-то время. После этого проверьте, чтобы ошибка не возникала.
Если у вас нет стороннего антивируса – его роль исполняет встроенный Windows Defender. Давайте попробуем выключить защиту для той сети, к которой вы подключены.
- Откройте «Пуск» – «Параметры».
- Найдите раздел «Обновление и безопасность».
- Перейдите в подраздел «Безопасность Windows» и слева из списка выберите пункт «Брандмауэр и защита сети».
- Выберите ту сеть, к которой вы подключены – она обозначена надписью «активный».
- Выключите «Брандмауэр Microsoft Defender».
Если проблема не решилась, включите параметр обратно и переходите к следующей главе. Если проблема решилась, дальше нужно думать, как обратно включить защиту для сети. Можно попробовать установить сторонний антивирус, чтобы он взял роль «защитника» на себя. Вы также можете в «Пуск» – «Параметры» – «Обновление и безопасность» – в разделе «Обновления» установите все пакеты, которые предлагает система. Возможно, есть какой-то баг, который мешает работе защитника и сети. Этот баг может исправиться после обновления. Также обязательно проверьте комп антивирусной программой. Можете для этого использовать встроенный Defender.
Способ 4: Комплексные меры
Итак, у нас есть ошибка сервера RPC, который по каким-то причинам не доступен в Windows (10, 11, 7 или 8). Я опишу ряд советов, которые должны помочь при удаленном подключении и решении данной ошибки.
- Если вы используете какие-то VPN или Proxy – выключите эти программы и подключения.
- Полностью проверьте компьютер и систему на наличие вирусов.
- Уберите все из автозагрузки, кроме драйвера звуковой карты и антивируса. После этого перезагрузите компьютер и проверьте подключение.
- Выполните комплексную чистку компьютера от всего лишнего.
- Обновите драйвера на материнскую плату. Если вы используете стороннюю сетевую карту или Wi-Fi адаптер, обновите драйвера и для них. Дрова скачиваем исключительно вручную с официального сайта. Про то, как это сделать – подробно написано в этой статье (ссылка).
- Если вы пытаетесь получить доступ к какому-то устройству в своей локальной сети – почитайте рекомендации отсюда.
- Обновите прошивку вашего роутера, если вы используете его для подключения.
- Установите все обновления для вашей системы, если вы этого еще не сделали.
На этом все, дорогие друзья. Вы можете обращаться за помощью ко мне в комментариях. Я или кто-то из других специалистов портала WiFiGiD.RU вам ответит и постарается помочь. Старайтесь писать, как можно подробнее о своей проблеме, а также о том, что вы уже сделали из статьи выше. Всем добра и берегите себя.
На компьютерах достаточно часто возникают разного рода ошибки. Проблема, связанная с недоступностью RPC сервера не исключение. В основном она появляется при обновлении драйверов, но бывают случаи, когда ошибки «сервер RPC недоступен» возникает и при запуске операционной системы (ОС) Windows 7, 8, 10, а также XP или Server 2003, 2008, 2012. Также ошибка может возникать при печати или установке принтера.
RPC — это просто метод для передачи информации между различными процессами или клиентом (техника, что начинает связь) и сервером (устройством, которое пытается связаться с клиентом) в рамках системы или сети. Очень много компонентов ОС Виндовс использует этот способ “общения”. RPC в качестве точек связи использует разные порты чтобы связывать системы между собой.
В случае нарушения работы сервера, когда он недоступен, обмен пакетов данных между системами нарушается, теряется связь с удаленным объектом и функции просто перестают ее выполнять. Поэтому и возникает ошибка.
Что за ошибка и почему возникает
Проблема появляется, когда связь между системами нарушается, так как сервер не может отправить адрес порта точке связи. Появиться она может по следующим причинам:
- Работа службы PRC была приостановлена или вовсе не запущена.
- Наименование сервера может быт по ошибке связано с не тем адресом. Получается, что клиент пытается связаться с не тем “собеседником”. Также бывает, что связь пытаются наладить через порт, который не используется или имя сервера просто не распознается системой.
- Трафик был заблокирован брандмауэром или другим приложением для обеспечения безопасности.
- Есть проблемы с сетью, которые мешают связи между клиентом и сервером.
- Недавно были установлены драйвера на принтер, МФУ, звуковую карту и т.д.
Поиск причины
Причину, которая вызвала ошибку легко выявить по ее коду. Ее возможно посмотреть в журнале событий, только делать это рекомендуется сразу после обнаружения проблемы:
- Открыть меню “Пуск”.
- Перейти в панель управления.
- Зайти на вкладку администрирования и открыть окно просмотра событий.
- Поискать в журнале сообщение об ошибке (обычно помечено красным крестом). Как правило, если сделать все действия сразу после первого появления ошибки, то она будет в первой строке. В ней будет находится расшифровка и устройство, которое вызывает неполадки.
- Найти описание проблемы в интернете, а также способы решения.
Общие способы решения
Есть универсальные способы, которые помогают быстро устранить проблему с сервером РПЦ. На их выполнения потребуется немного времени, но результат не заставит ждать.
Перезапуск службы RPC
Для начала рекомендуется просто перезапустить службу. Возможно, что неполадки в работе при этом будут устранены. Сделать это можно следующим образом:
- Открыть диспетчер задач.
- Перейти на вкладку “Службы”.
- Найти необходимое. Для удобства рекомендуется выстроить элементы по алфавиту, что можно сделать одним кликом на столбик “Имена”.
- Кликнуть правой кнопкой мышки по службе и выбрать пункт “Перезапустить”.
После этого процесс прекратит работу и тут же запустится.
Отключение брандмауэра
Этот защитник может попросту не пропускать важные пакеты данных. Именно поэтому рекомендуется отключить его на время, чтобы точно удостовериться, что это не его вина.
Сделать это можно через панель управления, в разделе системы и безопасности.
Проверка времени компьютера
Если ошибка появилась в момент запуска какой-то программы или ее остановки, то вероятно все связанно с синхронизацией времени. Решить эту проблемы можно таким образом:
- Зайти в диспетчер задач. Перейти в последнюю вкладку. Внизу окна будет ссылка “Открыть Службы”.
- Откроется окно, в котором требуется найти службу времени.
- Если она была приостановлена, то ее требуется запустить. При активной службе рекомендуется выполнить перезапуск.
Устранение неполадок системы
В случае, если ошибка «сервер РПЦ недоступен» появилась при запуске ОС, необходимо сделать следующее:
- Перезагрузить компьютер.
- Нажать кнопку F8 при загрузке.
- Выбрать пункт «Устранение неполадок компьютера».
- Дождаться окончания процесса.
Проверка на вирусы
Также можно просканировать систему на наличие вредоносного программного обеспечения (ПО). Также, если антивирус обнаружит что-то, то его рекомендуется заменить. Дело в том, что если программа не обнаружила вирус самостоятельно, а только после ручного запуска сканирования, то значит, что она не выполняет своих функций.
При обнаружении вируса, его необходимо удалить.
Ошибка с кодом 1722
Ошибка «Сервер RPC недоступен» наиболее часто встречается при проблемах с отсутствием звука. Решается следующим образом:
- Открыть диспетчер задач.
- Перейти на вкладку “Службы”.
- Внизу окна будет ссылка, кликнуть на нее для открытия всех служб.
- Найти «Средство построения точек аудио».
- Сделать тип запуска “Вручную” и сохранить изменения.
Ошибка в FineReader
Многие пользователи используют FineReader для поиска и распознавания текста на картинках. Она может вызывать проблемы, а устранить их можно следующим образом:
- Зайти в “Службы” через диспетчер задач или панель управления.
- Оставить службу FineReader.
- Перезагрузить компьютер и запустить приостановленный процесс.
Проблемы с Bitlocker
Битлокер защищает информацию на носителях информации, например, флешках. И иногда работа этой технологии может вызывать ошибки с сервером RPC. Исправить это можно отключением технологии или просто обновлением. Это можно сделать через центр обновлений Виндовс или скачав необходимые файлы с интернета.
При подключении к удаленному компьютеру или виртуальной машине, некоторым сетевым устройствам, а также при установке и работе прикладных программ, использующих клиент-серверную архитектуру (в том числе на единственном локальном компьютере) пользователь может получить сообщение об ошибке «Сервер RPC недоступен» (RPC server is unavailable).
В этой инструкции подробно о способах исправить ошибку «Сервер RPC недоступен» в Windows 11 и Windows 10 с фокусом прежде всего на домашнего пользователя, но многие решения универсальны и подойдут для других сценариев.
Службы RPC и связанные с ними службы
Первое что следует проверить при ошибке — работу и тип запуска служб, необходимых для правильной работы протокола удаленного вызова процедур RPC. Некоторые из представленного списка — необходимые, некоторые — опциональны, но в некоторых случаях также способны приводить к ошибке «Сервер RPC недоступен».
- Откройте «Службы Windows», для этого можно нажать клавиши Win+R на клавиатуре (или нажать правой кнопкой мыши по кнопке «Пуск» и выбрать пункт «Выполнить», ввести services.msc и нажать Enter.
- Найдите службы из списка, который приведен ниже после 5-го пункта, убедитесь, что они выполняются, а тип запуска задан верно.
- Если это не так, дважды нажмите мышью по такой службе, измените тип запуска службы и примените настройки.
- Если ошибка RPC возникает при подключении к удаленному компьютеру или виртуальной машине, убедитесь, что и на нем службы настроены правильно.
- После изменения параметров запуска служб, перезагрузите компьютер.
Список служб в формате: Название службы на русском языке (название на английском) — тип запуска по умолчанию:
- Инструментарий управления Windows (Windows Management Instrumentation) — Автоматически
- Локатор удаленного вызова процедур RPC (Remote Procedure Call RPC Locator) — Вручную, можно попробовать поставить «Автоматически».
- Модуль запуска процессов DCOM-сервера (DCOM Server Process Launcher) — Автоматически
- Служба времени Windows (Windows Time service) — Автоматически
- Сопоставитель конечных точек RPC (RPC Endpoint Mapper) — Автоматически
- Удаленный вызов процедур RPC (Remote Procedure Call RPC) — Автоматически
Если для отдельных служб тип запуска выставлен неверно, при этом изменить его в интерфейсе управления службами невозможно, можно использовать редактор реестра.
Для этого: запустите редактор реестра (Win+R — regedit) и перейдите к разделу реестра
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservices
В этом разделе реестра измените значение параметра Start на 2 (дважды нажав по параметру и задав новое значение) в следующих подразделах:
- DcomLaunch
- RpcEptMapper
- RpcLocator
- RpcSs
- W32Time
- Winmgmt
Часть параметров могут не изменяться и в реестре, в этой ситуации может помочь изменение прав доступа к разделам реестра.
В справке на официальном сайте Майкрософт приводится ещё две службы, которые могут вызывать ошибку «Сервер RPC недоступен» при входе в Windows :
- Модуль поддержки NetBIOS через TCP/IP (TCP/IP NetBIOS Helper)
- Удаленный реестр (Remote registry)
Протокол IPv6 и общий доступ к файлам и принтерам
Отключенная поддержка IP версии 6 и «Общий доступ к файлами и принтерам для сетей Майкрософт» также могут приводить к сбоям доступа к серверу RPC. Проверьте, включены ли они и, если нет — включите:
- Нажмите клавиши Win+R на клавиатуре, введите ncpa.cpl и нажмите Enter.
- Нажмите правой кнопкой мыши по сетевому подключению и откройте его свойства.
- Отметьте пункты «Общий доступ к файлами и принтерам для сетей Майкрософт» и «IP версии 6» и примените настройки.
Брандмауэр Windows
В части настроек брандмауэра Windows при ошибке доступа к серверу RPC, в зависимости от сценария проблемы возможны разные решения.
Первый вариант:
- В Панели управления (открыть её можно, используя поиск в панели задач) откройте пункт «Брандмауэр Защитника Windows»
- В панели слева нажмите «Разрешение взаимодействия с приложениями или компонентами брандмауэра Защитника Windows».
- Нажмите кнопку «Изменить параметры» и разрешите взаимодействие для «Удаленный помощник».
Если предыдущий метод не помог, попробуйте:
- Открыть порт 135 на локальной и удаленной машине. Подробнее: Как открыть порты в Windows.
- Полностью отключить брандмауэр Windows (возможно, временно, чтобы выяснить, является ли его работа причиной ошибки)
Дополнительные методы решения проблемы
Если предыдущие варианты не помогли, при этом вы уверены, что на сервере (при удаленном подключении к собственным ресурсам или серверам, которые использует ваше ПО) проблем нет, попробуйте следующие варианты решения проблемы:
- Используйте команды в командной строке, запущенной от имени Администратора
ipconfig /flushsdns ipconfig /renew
- Если используется профиль сети «Общественная» (Общедоступная), попробуйте переключить её на «Частная» — Как изменить тип сети в Windows 11 и в Windows 10.
- Если вам известен IP-адрес сервера, к которому выполняется подключение, проверьте, доступен ли порт 135 на нем с помощью команды PowerShell (заменив IP-адрес на нужный), при успехе в пункте TcpTestSucceeded должен быть статус «True»
Test-NetConnection 192.168.1.1 -port 135
- При наличии сторонних антивирусов или файрволлов, попробуйте отключить их, или отключить только функции защиты в сети.
- При использовании VPN-сервисов, попробуйте отключить их.
- Попробуйте отключить протокол teredo для IPv6 с помощью команды
netsh interface teredo set state disabled
Чтобы в дальнейшем включить его обратно используйте команду
netsh interface teredo set state enabled
- Учитывайте: если ошибка «Сервер RPC недоступен» возникает при запуске, установке или работе какого-либо прикладного ПО, полученного и модифицированного неофициальными методами, причина может быть в целенаправленной блокировке доступа к серверам лицензирования или иным.
- Проверьте компьютер на наличие вирусов и вредоносных программ, блокировок доступа к сайтам в файле hosts.