Имя: Пароль:
1C
 
Как выполнить powershell скрипт из 1С и вернуть обратно данные?
,
0 Бешеный заяц
 
03.08.21
16:29
Есть powershell скрипт который стучится к SharePoint и забирает данные, используются библиотеки по этому напрямую в 1С минуя powershell немогу
1 Бешеный заяц
 
03.08.21
16:29
вариант блокнот не очень хороший
2 Kassern
 
03.08.21
16:32
а через это дело разве нельзя напрямую из 1с? https://docs.microsoft.com/ru-ru/sharepoint/dev/spfx/connect-to-sharepoint
3 Garykom
 
гуру
03.08.21
16:35
(0) программиста нанять не пробовали?
4 Бешеный заяц
 
03.08.21
16:41
(2) нет у нас проблемы с авторизацией, админ грамотно доступ настроить не может
5 Garykom
 
гуру
03.08.21
16:43
покажи уже свой "powershell скрипт" затерев логин/пароль
6 Kassern
 
03.08.21
16:47
(4) ну так не изобретайте велосипедов, используйте стандартные механизмы 1с и вправьте руки сисадмину.
7 Бешеный заяц
 
03.08.21
16:51
(5)
#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
    

$SiteUrl = "https://мойСайт/sites/applications/"
$ListName = "624060e9-5c12-40d8-9a81-f7ad7aeeed2f"
$Username = "ИмяПользователя";
$AdminPassword = ConvertTo-SecureString "Пароль" -AsPlainText -Force
  
#Get Credentials to connect
#$Cred = Get-Credential

#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword)
  
#Get the list
#$List = $Ctx.Web.Lists.GetByTitle($ListName)
$List = $Ctx.Web.Lists.GetById($ListName)
  
#sharepoint online powershell read list items
$ListItems = $List.GetItems([Microsoft.SharePoint.Client.CamlQuery]::CreateAllItemsQuery())
$Ctx.Load($ListItems)
$Ctx.ExecuteQuery()
Write-host "Total Number of Items Found in the List:"$ListItems.Count

#Iterate through List Items
ForEach($Item in $ListItems)
{
    #sharepoint online powershell read list items
    Write-Host ("List Item ID:{0} - Title:{1}" -f $Item["ID"], $Item["Title"])
    #Write-Host ($Item.FieldValues);
}

Мне нужно $Item вернуть или даже $ListItems (смотря в каком виде вернет)
8 Garykom
 
гуру
03.08.21
16:58
https://www.cnblogs.com/PeterHome/p/7009998.html

прокси на C# или Использование классов .Net в 1С для новичков
если сборки представляют собой COM объекты то можно и напрямую из 1С попытаться
9 Garykom
 
гуру
03.08.21
16:58
(8)+ но имхо лучше через "REST/OData endpoints"
10 Garykom
 
гуру
03.08.21
17:01
(7) еще простейший вариант это модификация сценария чтобы данные в csv (или нечто вроде) выдавал
а из 1С делать ЗапуститьПриложение() или КомандаСистемы() и читать результат
11 Feanor
 
03.08.21
17:44
ВыполнитьКомандуСистемы не подходит?
12 Feanor
 
03.08.21
17:45
Еще вроде можно через COM создать оболочку и запустить скрипт
13 Бешеный заяц
 
03.08.21
21:44
(11) Данные как вернуть?
14 Garykom
 
гуру
03.08.21
21:59
(13) дык 1С через параметр передает в скрипт полное имя файла, скрипт пишет в этот файл, 1С после завершения скрипта читает
при начале скрипта файл очищать и/или писать нечто при ошибках, чтобы 1С если что поняла
15 Сеньор Программист
 
03.08.21
22:42
(0) Посмотри в типовых. Там есть пример запуска приложения
16 Сеньор Программист
 
03.08.21
22:46
+(15)
Функция ЗапуститьПрограмму(Знач КомандаЗапуска, ПараметрыЗапускаПрограммы = Неопределено) Экспорт
17 Бешеный заяц
 
04.08.21
07:59
через выгрузку это не кошерно, нашел ActiveXPoshV3x64 с помощью неё можно запускать и тут же забирать ответ в 1с, сегодня буду раскуривать её.
18 Feanor
 
04.08.21
14:23
(13) перенаправить вывод в файл и прочитать этот файл