Вызов 1С через PowerShell

Оказалось что в PowerShell замороченный вызов свойсв и методов COM объекта. Поэтому создал отдельные функции ComProperty и ComMethod.
Пример запускаем 1С через COM. А потом заставляем открыть внешнюю обработку.

# массив со строками подключения к базам
$mas_base = @("Usr=""Администратор"";Pwd=""Пароль"";Srvr=""192.168.0.1"";Ref=""Base""")	

# Внешняя обработка 1С
$location_epf = "c:test.epf"

# обращение к свойству COM объекта
# obj - сам COM объект
# value - имя свойства
function ComProperty ([System.__ComObject]$obj, [string]$value)
{
	$return_value = [System.__ComObject].invokemember($value,[System.Reflection.BindingFlags]::GetProperty,$null,$obj, $null)	
	return $return_value;
}

# обращение к методу COM объекта
# obj - сам COM объект
# Method - имя метода
# Params - параметры метода
function ComMethod ([System.__ComObject]$obj, [string]$Method, [Array]$Params)
{
	$return_value = [System.__ComObject].invokemember($Method,[System.Reflection.BindingFlags]::invokeMethod,$null,$obj, $Params)	
	return $return_value;
}

# Подключаем 1С 8.2
$con = New-Object -ComObject V82.COMConnector 	
# проходимся по базам данных
Foreach ($str_connect in $mas_base){			
	$obj = $con.Connect($str_connect);	# конектимся к 1С	
	$ExEpf = ComProperty $obj "ВнешниеОбработки"	# получаем внешние обработки
	$epf = ComMethod -obj $ExEpf -Method "Создать" -Params ([string]$location_epf) 	
}		

Вызов 1С через PowerShell: 2 комментария

  1. Roman

    Я конечно дико извиняюсь.
    Но у меня на Windows 7 и Windows Server 2008 R2 строка
    $con = New-Object -ComObject V82.COMConnector вываливается с ошибкой
    PS C:UsersUser> $con = New-Object -ComObject V82.COMConnector
    New-Object : Сбой при получении производства объектов класса COM для компонента с CLSID {2B0C1632-A199-4350-AA2D-2AEE3D2D573A} в результате следующей ошибки: 80040154.
    строка:1 знак:18
    + $con = New-Object <<<< -ComObject V82.COMConnector
    + CategoryInfo : ResourceUnavailable: (:) [New-Object], COMException
    + FullyQualifiedErrorId : NoCOMClassIdentified,Microsoft.PowerShell.Commands.NewObjectCommand

    Это как бы КАК ТАК???
    Причем обычные COM-соединения (если из 1С или WHS) отрабатывают нормально.
    Что-то недоустановлено? Или как?
    Не подскажите?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *