Полезного тут наверно только метод скрытия окошка скрипта, это весь текст до "$connector = new-object -comobject "V81.COMConnector"", а все что после - это работа с 1С через COM - думаю уже не раз обсуждалось.
Может кому, что и пригодится, скрипт можно вставлять в планировщик например, или кинуть ярлык пользователю, чтоб одним щелчком запускалась заложенная процедура. Удачи всем!
P.S. Текст скрипта для гостей:
#Создаём объект CodeProvider, для выполнения кода c# в нашем сценарии $cp = new-object Microsoft.CSharp.CSharpCodeProvider #В этой переменной можно задать параметры для выполнения кода $cpar = New-Object System.CodeDom.Compiler.CompilerParameters #Константы задающие действие функции SetWindowPos $HideWindow = 0x0080 $ShowWindow = 0x0040 #С помощью конструкции "HereString" помещаем в переменную $Code код c# #объявляющий функцию SetWindowPos $Code = @" using System; using System.Runtime.InteropServices; namespace Win32API { public class Window { [DllImport("user32.dll")] public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int cx, int cy, uint uFlags); } } "@ #Выполняем код c# $cp.CompileAssemblyFromSource($cpar, $code) #Получаем указатель (Handle) текущего окна PowerShell, используя специальную переменную $pid $PSHandle = (Get-Process –id $pid).MainWindowHandle #Используем объявленную функцию из PowerShell [Win32API.Window]::SetWindowPos($PSHandle, 0, 0, 0, 0, 0, $HideWindow) $connector = new-object -comobject "V81.COMConnector" $connection=$connector.connect("File=""d:\Bases1C\Папка с ИБ""; Usr=""Логин"";Pwd = ""Пароль"";") $ChangeName="Имя обмена в справочнике" $cats = [System.__ComObject].InvokeMember("Справочники",[System.Reflection.BindingFlags]::GetProperty,$null,$connection,$null) $nod = [System.__ComObject].InvokeMember("НастройкиОбменаДанными",[System.Reflection.BindingFlags]::GetProperty,$null,$cats,$null) $fnd = [System.__ComObject].InvokeMember("НайтиПоНаименованию",[System.Reflection.BindingFlags]::InvokeMethod,$null,$nod,$ChangeName) $ref = [System.__ComObject].InvokeMember("Ссылка",[System.Reflection.BindingFlags]::GetProperty,$null,$fnd,$null) $pod= [System.__ComObject].InvokeMember("ПроцедурыОбменаДанными",[System.Reflection.BindingFlags]::GetProperty,$null,$connection,$null) $vodppn=[System.__ComObject].InvokeMember("ВыполнитьОбменДаннымиПоПроизвольнойНастройке",[System.Reflection.BindingFlags]::InvokeMethod,$null,$pod,$ref)