Ошибка при вызове метода контекста previewfile1c

PowerShell командлет Get-ADComputer можно использовать для получения различных сведений об учётных записях компьютеров (серверах и рабочих станциях) в домене Active Directory. Это один из наиболее полезных командлетов для выборки и поиска компьютеров по разным критериям в домене AD ( для получения информации об учетных записях пользователей AD используется другой командлет — Get-ADUser).

Допустим, ваша задача – найти в Active Directory все неактивные компьютеры, которые не регистрировались в домене более 120 дней и заблокировать учетные записи этих компьютеров.

Прежде чем приступить к работе с командлетом Get-ADComputer, необходимо подключить модуль Active Directory Module for Windows PowerShell.

Import-Module activedirectory

Совет. В PowerShell 3.0 (представлен в Windows Server 2012) и выше этот модуль подключается по умолчанию при установке компонента Remote Server Administration Tools -> Role Administration Tools -> AD DS and AD LDS Tools -> Active Directory модуль для Windows PowerShell. Чтобы использовать командлет Get-ADComputer в клиентских Windows 10,8.1 и Windows 7 нужно скачать и установить RSAT для вашей версии ОС и включить модуль AD-PowerShell из панели управления или командой:
Enable-WindowsOptionalFeature -Online -FeatureName RSATClient-Roles-AD-Powershell

Основы синтаксиса и использование командлета Get-ADComputer

Справка о параметрах командлета Get-ADComputer вызывается стандартно с помощью Get-Help:

Get-Help Get-ADComputer

Для получения информации из AD с помощью командлетов модуля AD for Powershell не обязательно иметь права администратора домена, достаточно чтобы учетная запись под которой запускается командлет входила в группу пользователей домена (Authenticated Users / Domain Users).

Чтобы получить информацию о доменной учетной записи конкретного компьютера или сервера, укажите его имя в качестве аргумента параметра —Identity:

Get-ADComputer -Identity SRV-DB01

DistinguishedName : CN=DB01,OU=Servers,OU=MSK,DC=winitpro,DC=ru DNSHostName : DB01.winitpro.ru Enabled : True Name : DB01 ObjectClass : computer ObjectGUID : 1234567c-13f8-4a2c-8b00-b30a32324103 SamAccountName : DB01$ SID : S-1-5-21-3243682314-1360322815-2238451561-4318 UserPrincipalName :

Командлет вернул только базовые свойства объекта Computer из AD. Нас интересует время последней регистрации компьютера в домене AD, но этой информация в выводе команды нет. Выведем все доступные свойства данного компьютера из Active Directory:

Get-ADComputer -Identity SRV-DB01 -Properties *

С помощью Get-Member можно получить список всех свойств класса Computer в AD:

Get-ADComputer -Filter * -Properties * | Get-Member

Как вы видите, время последнего входа данного компьютера в сеть указано в атрибуте компьютера LastLogonDate – 21.09.2015 0:20:17.

Командлет Get-ADComputer позволяет вывести в результатах команды любые из свойств компьютера. Уберем всю лишнюю информацию, оставив в выводе только значения полей Name и LastLogonDate.

Get-ADComputer -identity SRV-DB01 -Properties * | FT Name, LastLogonDate -Autosize

Итак, мы получили данные о последнем времени регистрации в домене для одного компьютера. Теперь нам нужно изменить команду так, чтобы она возвращала информацию о времени последней регистрации в сети для всех компьютеров домена. Для этого заменим параметр –Identity на —Filter:

Get-ADComputer -Filter * -Properties * | FT Name, LastLogonDate -Autosize

Мы получили таблицу, которая содержит только 2 поля: имя компьютера и дата LastLogonData. Вы можете добавить в эту таблицу другие поля объекта Computer из AD. Чтобы вывести данные о компьютерах в определенном контейнере домена (OU), воспользуйтесь параметром SearchBase:
Get-ADComputer -SearchBase ‘OU=Moscow,DC=winitpro,DC=loc’ -Filter * -Properties * | FT Name, LastLogonDate -Autosize

Отсортируем результаты запроса по времени последнего логина в сеть (поле LastLogonDate) с помощью команды Sort:

Get-ADComputer -Filter * -Properties * | Sort LastLogonDate | FT Name, LastLogonDate -Autosize

Итак, мы получили список компьютеров домена и время их последнего входа в сеть Active Directory. Теперь мы хотим заблокировать учетные записи компьютеров, которые не использовались более 120 дней.

С помощью Get-Date получим в переменной значение текущей даты и вычтем из текущей даты 120 дней:

$date_with_offset= (Get-Date).AddDays(-120)

Полученную переменную с датой можно использовать в качестве фильтра запроса Get-ADComputer по полю LastLogonDate

Таким образом, мы получили список неактивных компьютеров, не регистрировавшихся в сети более 120 дней. С помощью командлета Set-ADComputer или Disable-ADAccount вы можете отключить эти учетные записи.

Совет. В первый раз лучше протестировать результаты команды с помощью переключателя –WhatIf, благодаря которому команда не вносит никаких изменений, показывая, что произойдет при ее выполнении.

Теперь можно заблокировать все полученные учетные записи компьютеров:

Get-ADComputer -Properties LastLogonDate -Filter {LastLogonData -lt $datecutoff} | Set-ADComputer -Enabled $false

Совет. Список заблокированных, отключенных и неактивных компьютеров и пользователей домена можно получить также с помощью отдельного командлета Search-ADAccount.

Примеры использования командлета Get-ADComputer

Ниже представлены еще несколько полезных примеров команд с использованием командлета Get-ADComputer, которые можно использовать для выборки и поиска компьютеров домена по определенными критериям.

Получить общее количество активных (незаблокированных) компьютеров в Active Directory:

(Get-ADComputer -Filter {enabled -eq «true»}).count

Почитать количество серверов с Windows Server в домене:

(Get-ADComputer -Filter {enabled -eq «true» -and OperatingSystem -Like ‘*Windows Server*’ }).count

Получить список компьютеров в определенном OU, имена которых начинаются с BuhPC:

При поиске по OU вы можете использовать дополнительный параметр -SearchScope 1, который означает, что нужно искать только в корневом разделе. Параметр -SearchScope 2 означает рекурсивный поиск компьютеров во всех вложенных OU.

Выбрать все рабочие станции с ОС Windows 10:

Get-ADComputer -Filter {OperatingSystem -like ‘*Windows 10*’}

На выходе получили такую красивую таблицу со списком Windows Server в AD.

Атрибут -LDAPFilter позволяет использовать в качестве параметра командлета Get-ADComputer различные LDAP запросы, например:

Get-ADComputer -LDAPFilter «(name=*db*)»|ft

Выбрать заблокированные компьютеры в определенном OU:

Get-ADComputer -filter * -SearchBase ‘OU=Computers, dc=winitpro,dc=loc’ | Where-Object {$_.enabled -eq $False}

Чтобы удалить все аккаунты компьютеров в домене, не авторизовавшиеся в домене более 6 месяцев, можете воспользоваться командой:

get-adcomputer -properties lastLogonDate -filter * | where { $_.lastLogonDate -lt (get-date).addmonths(-6) } | Remove-ADComputer

Результат выполнения команды Get-ADComputer можно выгрузить в текстовый файл:

Также вы можете получить выборку компьютеров и экспортировать его в CSV файл:

Или получить HTML файл отчета со списком компьютеров и нужных атрибутов компьютера:

Чтобы выполнить определенной действие со всеми компьютерами из полученного списка нужно использовать цикл Foreach. В этом примере мы хотим получить список серверов в домене с моделью и производителем:

Либо можно использовать более короткий синтаксис цикла. Допустим нам нужно выполнить определенную команду на всех компьютерах в определенном OU (в этом примере мы хотим запустить на всех серверах команду обновления настроек групповых политик):

С помощью Get-AdComputer и логон скрипта PowerShell вы можете контролировать различные параметры компьютера. Я, например, контролирую состояние агента SCCM на компьютерах пользователей. При загрузке каждого компьютера на нем отрабатывает логон скрипт, который с помощью Set-ADComputer сохраняет состояние службы ccmexec в свободный атрибут компьютера — extensionAttribute10.

Затем с помощью следующей команды я могу найти компьютеры, на которых отсутствует или не запушена служба CCMExec:

Бесплатная Русский 9 SAS. Планета 160707 Программа для загрузки карт с популярных специализированных сервисов. Бесплатная Русский 6 Тест на охранника 4, 5, 6 разряд 1.1 Тест на охранника 4, 5, 6 разряд — программа, предназначенная для проверки текущего уровня подготовки охранников.Нажимаем кнопку Do calibration (20 tolerance) Выходим из инженерного меню, несколько раз нажав кнопку «Назад» на телефоне. Нажимаем на кнопку «Назад» несколько раз. Через приложение Touchscreen Calibration В Play Market можно найти много приложений, отвечающих за калибровку экрана, одно из них Touchscreen Calibration.Бесплатная 3 Женский календарь 1.1 beta Программа, которая помогает женщинам вести свой календарь менструаций. Бесплатная 5 Настройка 6-струнной гитары 1.1 Настройка 6-струнной гитары — приложение, предназначенное для настройки гитары-шестиструнки. Бесплатная Русский VeralTest 2.5 VeralTest это программа, при помощи которой можно проводить тестирования в различных сферах, это может быть как тестирование в учебных заведениях, так и.(на неделю с 1 по 4 апреля) Ежедневное планирование в средней группе 1 «Радуга» Тема. Иоо. С-к р рр пр. Ежедневное планирование в средней группе 1 «Радуга» Тема недели : «Мы живем в России».Дни недели.

Во время обмена, который производился обработкой «Универсальный обмен данными в формате XML». Выдавалась ошибка:

Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика — ‘ОбработкаПроведения’: {РегистрСведений.РеестрДокументов.МодульМенеджера(30)}: Ошибка при вызове метода контекста (Записать): Не удалось записать: «Реестр документов»!

Связано это с тем, что при переносе данных, документ пытался провестись. В конвертации данных в ПКО документа «После загрузки» было указано

Сделано это было для того, чтобы не переносить проводки, чтобы проводки формировались сами, такие как делает их УТ 11.4.

Открываю модуль набора записей регистра сведений «Реестр документов» и вижу процедуру «Перед записью»:

Сразу захотелось закомментировать первые два логических условия. Но конфигурация типовая, поэтому делаю расширение конфигурации, добавляя в расширение регистр сведений «Реестр документов» и в модуле набора записей переопределяю процедуру «Перед записью», в которой первые два логических условия закомментированы.

Сохраняю, проверяю обмен. И всё работает! После переноса всех нужных документов, расширение можно будет убрать.

К публикации добавляю файл расширения для УТ 11.4.8.73, на случай, если кому понадобится и лень делать самому.

1. Конфигурация узла распределенной ИБ не соответствует ожидаемой.

Самой распространенной ошибкой при использовании распределенных баз в 1с:Предприятие 8.x является ошибка «Конфигурация узла распределенной ИБ не соответствует ожидаемой». Связана она с рассинхронизацией конфигурации главного и подчиненного узла, возникать может по нескольким причинам, самая распространенная из них это динамическое обновление конфигурации. Рассмотрим основные пути решения данной проблемы, укажу способы по простоте их использования, сначала самые простые (но иногда не менее эффективные), потом более сложные:

  • Чистка кэша.

    • При работе в режиме предприятия 1с кэширует метаданные для ускорения работы программы и при динамическом обновлении конфигурации использует их до момента перезапуска сеанса пользователя. При это могут возникать ситуации, когда после перезапуска программа не обновила метаданные из измененной, а продолжает использовать старые. В такой ситуации помогает очистка кэша, при новом запуске программа обновит метаданные. Очистить кэш можно множеством способов, приведу несколько из них:
    • На мой взгляд самый простой из них это удаление базы из списка информационных баз и добавление заново под другим именем. При добавлении базы как новой в список информационных баз программа создаст новый каталог на диски для хранения кэшей к этой базе.
    • Можно очистить базу удалив папки с кэшем. Папки храняться в зависимости от версии windows:

Для Windows XP:

<каталог пользователя>Local SettingsApplication Data1C1Cv82

<каталог пользователя>Application Data1C1Cv82

Для Windows 7:

<каталог пользователя>AppDataRoaming1C1Cv82

<каталог пользователя>AppDataLocal1C1Cv82

Для Windows 8:

<каталог пользователя>AppDataRoaming1C1Cv82

<каталог пользователя>AppDataLocal1C1Cv82

Можно воспользоваться готовым bat-файлом для удаление файлов кэша, как это описано в этой статье «Чистка кэша 1с».

  • Не денамическое обновление корневого узла.

    • Данный метод обноружил случайно, на просторах интернета такого способа не нашел, но помогает он очень часто и в отличии от следующих способов помогает решить проблему намного быстрее и проще. Заключается он в том, что мы еще раз меняем что либо в корне конфигурации (я чаще всего меняю синоним конфигурации, например добаляя пробел в конце синонима) и делаем при этом не динамическое обновление. После этого производим еще раз обмен из главного узла с подчиненными. В большенстве случаев, хотя и не всегда к сожалению, данный метод позволяет решить ошибку рассинхронизации конфигураций. Этот способ не всегда является эффективным, но в отличии от следующих способов позволяет быстро решить данную проблему, особенно при большом количестве узлов распределенных баз.
  • Перенос конфигурации в распределенный узел.

    • Самый распространенный способ решения данной проблемы, он почти в 100% случаев помогает решить данную проблему, опять таки замечу, что почти в 100%, т.к. у меня возникали случаи, когда переносом конфигурации из главного узла в подчиненный проблема не решалась. Данный метод заключается в переносе конфигурации из главной базы в распределенную.

      Последовательность действий:

      • выгружаем из центральной базы конфигурацию в cf-файл;
      • отвязываем переферийную базу от главного узла, вызвав команду: ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
      • заменяем конфигурацию переферийной базы на выгруженный в первом шаге cf-файл, для этого пользуемся меню «Загрузить конфигурацию из файла».
      • Привязываем переферийную базу обратно к главному узлу РИБ, вызвав команду: ПланыОбмена.УстановитьГлавныйУзел(Параметр);

        где в качестве параметра передаем главный узел распределенной базы.

Для выполнение этих действий удобнее всего воспользоваться обработкой, которую можно скачать здесь (подходит для всех конфигураций на не управляемых формах, т.к. Розница 1.0 или УТ 10.3, огромное множество аналогичных можно найти на просторах инфостарта).

  • Подмена хэша конфигурации в файле обмена.

    • Данный метод был взят из статьи Популярные ошибки РИБ. Метод на мой взгляд довольно таки сложный и длительный, поэтому я его указываю как самый последний из вариантов решения данной проблемы, его стоит использовать только лишь в том случае, если не один из выше перечисленных способов не позволил решить проблему. Его суть заключается в том, что мы заменяем хеш конфигурации в файле обмена на правильный и тем самым обманывая программу производим обмен.

Последовательность действий:

  • выполняем действия из предыдущей методики;
  • выгружаем из переферийной базы файл обмена, но не загружаем его в главную базу;
  • выгружаем из главной базы файл обмена, но не загружаем его в переферийную базу;
  • в файле обмена из главной базы заменяем блок, содержащий информацию об изменениях конфигурации и хэши (Digest1 и Digest2), на блок хэшей из файла переферийной базы (пример см. ниже).
  • производим загрузку файла из 4-го пункта в переферийную базу;
  • обязательно перезаписываем файл обмена из переферийной базы (2-й пункт) этот файл не должен быть загружен при обмене в главную базу.
  • для проверки делаем несколько последовательных обменов.

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

Блок файла обмена из главной базы:

<v8de:Config xmlns:v8md=»http://v8.1c.ru/metadata/2005/08″> <v8de:Version>106.0</v8de:Version> …здесь идут блоки описания изменений конфигурации… <v8de:Digest1>1cf680807e97a5dc0d1ed7f901b07392</v8de:Digest1> <v8de:Digest2>038211651cf680807e97a5dc0d1ed7f9</v8de:Digest2> </v8de:Config>

нужно заменить на блок файла обмена из переферийной базы (обратите внимание Digest1 у файла из переферийной базы всегда равен «00000000000000000000000000000000»!!!)

<v8de:Config xmlns:v8md=»http://v8.1c.ru/metadata/2005/08″> <v8de:Version>106.0</v8de:Version> <v8de:Digest1>00000000000000000000000000000000</v8de:Digest1> <v8de:Digest2>11651cf680807e97a5dc0d1ed7f901b0</v8de:Digest2> </v8de:Config>

Номер сообщения меньше либо равен ранее принятому.

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

Бывают случаи, когда файл выгружается или загружается в копию базы и не может быть загружен так как нумерация файлов обмена нарушена. В таком случае помогает изменение нумерации файлов. В типовых конфигурациях это можно сделать с помощью раздела «Регистрации изменений для обмена», в старых версиях на неуправляемых формах (УТ 10.3, Розница 1.0 и т.д.) в него можно попасть из монитора обмена, а в новых (УТ 11, Розница 2.x и т.д.) в него можно попасть из раздела синхронизации данных «Состав отправляемых данных», в нем есть пункт «Изменить номера сообщений» для неуправляемых форм и «Редактировать номера сообщений» для управляемых. Номер принятого в таком случае надо ставить меньше (вплоть до 0), а номер отправленного ставить больше (можно даже 10000). После изменения номеров сообщений обмен должен начать проходить.

Ошибка преобразования данных XML.

На узле-отправителе проблемного сообщения откройте обработку ВыгрузкаЗагрузкаДанныхXML.epf (из состава конфигурации «Конвертация данных», находится в каталоге шаблона конфигурации после её установки), нажмите в самом низу кнопку «Недопустимые символы в плане обмена» и выберите узел-получатель. Если проверка выдаст ошибки, то вам достаточно будет устранить их непосредственно в указанных объектах и проблема будет решена.

Если недопустимых символов не найдено — копаем дальше. Возможны случаи, когда файл конфигурации перенеся на распределенный узел не корректно или программа использует кэшируемые данные конфигурации. В таком случае можно очистить кэш, как это указанно в разделе #Чистка кэша или если это не помогло попробовать обновить конфигурацию #Перенос конфигурации в распределенный узел.

Если же всё выше описанное не помогло решить проблему, то откройте XML файл сообщения (лучше всего открывать прямо в 1С:Предприятие 8) и посмотрите по указанному номеру строки, на каком объекте остановился прием. Теперь нужно в базе отправителе с помощью обработки «Регистрации изменений для обмена» найти данный объект и отменить по нему регистрацию, после чего обмен должен пройти. Последний способ является крайней мерой, если ничего остальное не помогло решить проблему, так как при этом проблемный объект не будет перенесен в базу приемника и ситуация может повториться при повторной регистрации проблемного объекта.

Оставьте комментарий