Имя: Пароль:
IT
Админ
Сободное место на удаленном компьютере
0 1Сергей
 
13.09.19
15:22
Приветствую всех и с праздником!

Подскажите кто какие знает варианты получить информацию о дисках на удалённом компьютере.

Есть у меня один вариант, но он работает если на удалённом компьютере установлен MS SQL:

&НаСервере
Процедура КомандаОбновитьДискиНаСервере()
    Объект.Диски.Очистить();
    Для Каждого СтрокаДисков Из РаботаССУБД.ЗапросSQL(Объект.Адрес,
                            "master",
                            Объект.SQL_Login,
                            Объект.SQL_Password,
                            "SET NOCOUNT ON
                            |declare @srvinfo table(output nvarchar(255))
                            |
                            |insert into @srvinfo ([output]) exec master..xp_cmdshell 'wmic logicaldisk get size,freespace,caption'
                            |
                            |select substring([output], 1,1) AS disk,
                            |        cast(substring([output], 10, 14) as money) as free_space,
                            |        cast(substring([output], 24, 14) as money) as size
                            |from @srvinfo
                            |where substring([output], 2,1)=':'
                            |    and cast(substring([output], 10, 14) as money)>0
                            |") Цикл
        НоваяСтрока = Объект.Диски.Добавить();
        НоваяСтрока.Имя = СтрокаДисков.disk;
        НоваяСтрока.Размер = СтрокаДисков.size;
        НоваяСтрока.СвободноеМесто = СтрокаДисков.free_space;
    КонецЦикла;
КонецПроцедуры



Какие ещё варианты?
1 Веселый собака
 
13.09.19
15:24
Накопировать туда файлов известного размера до ошибки записи..
2 Beduin
 
13.09.19
15:26
(1) Не, не так. Удалять по килобайту, и когда инфа кончится, то до килобайта можно размер понять.
3 Chum
 
13.09.19
15:33
4 sqr4
 
13.09.19
15:35
Вот они, серийные программисты)
5 dka80
 
13.09.19
15:43
FSO = Новый COMОбъект("Scripting.FileSystemObject");
Drive = FSO.GetDrive("C");
СвободноеМесто = Drive.AvailableSpace;
6 dka80
 
13.09.19
15:45
НужнаяСтрока = "";    
    КомандаСистемы("dir \\serv\Archive > " + КаталогВременныхФайлов() + "freespace.txt");
    Текстфайла = Новый ЧтениеТекста(КаталогВременныхФайлов() + "freespace.txt",КодировкаТекста.OEM);
    СтрФайла = ТекстФайла.ПрочитатьСтроку();
    Пока СтрФайла <> Неопределено Цикл
        Если СтрНайти(СтрФайла, "свободно") > 0 Тогда
            НужнаяСтрока = СтрФайла;
            ОтсечениеСлево = СтрНайти(НужнаяСтрока,"папок") + 6;
            НужнаяСтрока = СтрЗаменить(НужнаяСтрока,"байт свободно","");
            НужнаяСтрока = СокрЛП(Сред(НужнаяСтрока,ОтсечениеСлево));
        КонецЕсли;
        СтрФайла = ТекстФайла.ПрочитатьСтроку();
    КонецЦикла;
    СвободноМб = Число(НужнаяСтрока)/1024/1024;
    Сообщить("Свободно " + СвободноМб + " Мб");
7 dka80
 
13.09.19
15:46
8 1Сергей
 
13.09.19
15:51
(5) (6) список дисков как узнать?
9 trooba
 
13.09.19
15:54
10 dka80
 
13.09.19
15:55
11 Карст
 
13.09.19
15:58
ланскопом ))))
12 1Сергей
 
13.09.19
16:01
(9) и где там про удалённую машину?
13 Сияющий в темноте
 
13.09.19
16:01
Свободное место на сервере,где сервер 1с запущен?
или просто компьютер?
если есть к нему доступ,то сунуть нос в Wmi и запросить данные.
14 1Сергей
 
13.09.19
16:04
(13) просто удаленный компьютер. доступы к нему есть
15 1Сергей
 
13.09.19
16:04
чёт сколько ни читаю про WMI, про удаленный так и не нашёл
16 1Сергей
 
13.09.19
16:12
Пока вот такой способ самый простой мне показался:


get-WmiObject win32_logicaldisk -computername SERV01
17 1Сергей
 
13.09.19
17:42
Как-то так получилось



objSWbemLocator = Новый COMОбъект("WbemScripting.SWbemLocator");
Если ВРЕГ(Объект.Адрес)=ВРЕГ(ИмяКомпьютера()) Тогда
    objSWbemServices = objSWbemLocator.ConnectServer(Объект.Адрес, "root\cimv2");
Иначе
    objSWbemServices = objSWbemLocator.ConnectServer(Объект.Адрес, "root\cimv2", "User", "Pass");
КонецЕсли;
colSWbemObjectSet = objSWbemServices.InstancesOf("win32_logicaldisk");
Для Каждого objSWbemObject Из colSWbemObjectSet Цикл
    НоваяСтрока = Объект.Диски.Добавить();
    НоваяСтрока.Имя = objSWbemObject.Name;
    НоваяСтрока.Размер = objSWbemObject.Size;
    НоваяСтрока.СвободноеМесто = objSWbemObject.FreeSpace;
КонецЦикла;
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.