Как с помощью Lers.Framework и PowerShell изменить значение атрибута точки учёта?

Как с помощью Lers.Framework и PowerShell изменить значение атрибута точки учёта? Не хочется напрямую к базе MSSQL обращаться…
Получить атрибуты я могу, а как установить значение атрибута? Не нашёл в документации что-то…
Вот так получаю:
$response2 = $webservice.GetMeasurePointListExtended(32)
foreach ($mp in $response2.MeasurePointList)
{
foreach ($attr in $mp.Attributes)
{
Write-Host $attr.AttributeCode “:” $attr.AttributeValue
}
}

Вы используете Веб-сервис доступа к данным, который почему то называете LersFramework. Это неправильно!

С помощью Веб-сервиса невозможно изменять данные. Как следует из его названия, он только предоставляет доступ к данным. Также хочу отметить, что данный Веб-сервис уже устаревает и для новых приложений, основанных на веб, мы настоятельно рекомендуем использовать REST API.

Непосредственно из LersFramework можно задать значение атрибута. Пожалуйста, руководствуйтесь документацией LersFramework.

Я вас понял, спасибо.

Тему пока не закрывайте, уточню неясные моменты. Разбираюсь с LersFramework и PowerShell. К серверу подключился, список точек получил с атрибутами. Дальше пока читаю…

В принципе я разобрался, даже работает. Приведу здесь код, может кому поможет. Если что не так делаю, поправьте, пожалуйста. Это мой первый опыт использования LersFramework. Ещё планирую из файла Excel данные для новых атрибутов брать.

#Requires -Version 3.0
[system.reflection.assembly]::LoadWithPartialName("Lers.Core") | Out-Null
[System.Reflection.Assembly]::LoadWithPartialName("Lers.System") | Out-Null
[System.Reflection.Assembly]::LoadWithPartialName("Lers.Utils") | Out-Null
$srvLers = New-Object Lers.LersServer
$pswd = [Lers.Networking.SecureStringHelper]::ConvertToSecureString("password");
$authInfo = New-Object Lers.Networking.BasicAuthenticationInfo("login", $pswd);
$srvLers.Connect("server", 10000, $authInfo) | Out-Null
$mpArr = $srvLers.MeasurePoints.GetList('Regular', 'Attributes');
if ($mpArr.Length -le 0);
{
	Write-Host 'Список точек учета пуст'
	exit
}
foreach ($mp in $mpArr);
{
#выбираем только точки теплоснабжения
	if ($mp.systemtype -ne 'Heat') { Continue }
#просматриваем все атрибуты по точке учета и находим нужный
	foreach ($key_attr in $mp.Attributes.Keys);
	{
                     if ($key_attr -eq "needed_key")		
                     {
			Write-Host $key_attr ":" $mp.Attributes[$key_attr]
			#Записываем новое значение 
			$mp.Attributes[$key_attr] = "new_value"
          		}
	}
	#Сохраняем точку учёта
	if ($mp.Attributes.IsModified);
	{
		$saveOptions = New-Object Lers.Core.MeasurePoint+SaveMeasurePointOptions
		$saveOptions.Force = $true 
		$mp.SaveAsync($saveOptions)	| Out-Null
	}
}

#Отключаемся от сервера
$srvLers.Disconnect(200);

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