<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; WSH: как получить размер кластера?]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=7279&amp;type=atom" />
	<updated>2012-06-20T23:46:16Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=7279</id>
		<entry>
			<title type="html"><![CDATA[Re: WSH: как получить размер кластера?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=61060#p61060" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>выполняете под пользователем с административными полномочиями?</p></blockquote></div><p>Дома - да, на работе - под бесправным пользователем. Результат одинаковый.</p><div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>Выполняете мой vbs-скрипт, или на JScript?</p></blockquote></div><p>И то, и другое. Сначала - Ваш скрипт, потом играюсь с js вариациями.</p><div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>есть ли у класса «Win32_Volume» метод «.DefragAnalysis()».</p></blockquote></div><p>Есть. (Не может не есть <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> )</p><p>Вероятно, как я уже говорил, проблема в доступности объектов именно из скриптов. Не сомневаюсь, что из полноценной программы будет работать всё, или почти всё (ну, может, UAC о чём-нибудь спросит).</p><p>Поиграл с WMICodeCreator - всё то же. Метод есть, возвращает &quot;ложь&quot;.</p>]]></content>
			<author>
				<name><![CDATA[Serge Yolkin]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27503</uri>
			</author>
			<updated>2012-06-20T23:46:16Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=61060#p61060</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: как получить размер кластера?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=60967#p60967" />
			<content type="html"><![CDATA[<p><strong>Serge Yolkin</strong>, выполняете под пользователем с административными полномочиями? Выполняете мой vbs-скрипт, или на JScript?</p><p>Загрузите <a href="http://www.microsoft.com/en-us/download/details.aspx?id=24045">Download: WMI Administrative Tools - Microsoft Download Center - Download Details</a> и посмотрите, есть ли у класса «Win32_Volume» метод «.DefragAnalysis()». Должен быть.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2012-06-18T12:48:30Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=60967#p60967</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: как получить размер кластера?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=60965#p60965" />
			<content type="html"><![CDATA[<p>У меня под семёркой условие If .DefragAnalysis(... никогда не выполняется (в смысле - ни для какого диска). Методом комментирования лишнего пришел к выводу: нет у меня .DefragAnalysis : если убираю If - «Ошибка выполнения Microsoft VBScript: Требуется объект: &#039;&#039;». Собственно, примерно то же я получил и в самом начале по Вашей подсказке (только на js), поэтому полез искать альтернативу. Интересно, универсального способа нет?</p>]]></content>
			<author>
				<name><![CDATA[Serge Yolkin]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27503</uri>
			</author>
			<updated>2012-06-18T10:40:39Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=60965#p60965</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: как получить размер кластера?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=60961#p60961" />
			<content type="html"><![CDATA[<p>Ну, вот, смотрите:<br /></p><div class="codebox"><pre><code>Option Explicit

Dim strComputer

Dim objSWbemLocator
Dim objSWbemServicesEx
Dim objSWbemObjectEx_Win32_Volume
Dim objSWbemObjectEx_Win32_DefragAnalysis

Dim boolDefragRecommended


strComputer = &quot;.&quot;

Set objSWbemLocator    = WScript.CreateObject(&quot;WbemScripting.SWbemLocator&quot;)
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, &quot;root\cimv2&quot;)

For Each objSWbemObjectEx_Win32_Volume In objSWbemServicesEx.InstancesOf(&quot;Win32_Volume&quot;)
    With objSWbemObjectEx_Win32_Volume
        WScript.Echo &quot;-----------------------------------&quot;
        WScript.Echo &quot;Drive:&quot;, .DriveLetter, &quot;(&quot; &amp; .Label &amp; &quot;) [&quot; &amp; .DeviceID &amp; &quot;]&quot;
        WScript.Echo &quot;-----------------------------------&quot;
        WScript.Echo &quot;Serial number:               &quot;, Left(Hex(.SerialNumber), 4) &amp; &quot;-&quot; &amp; Right(Hex(.SerialNumber), 4)
        WScript.Echo &quot;Volume automount/boot/system:&quot;, Array(&quot;Yes&quot;, &quot;No&quot;)(Abs(Not .Automount)) &amp; &quot;/&quot; &amp; Array(&quot;Yes&quot;, &quot;No&quot;)(Abs(Not .BootVolume)) &amp; &quot;/&quot; &amp; Array(&quot;Yes&quot;, &quot;No&quot;)(Abs(Not .SystemVolume))
        WScript.Echo &quot;Size total/free (% usage):   &quot;, FormatNumber(.Capacity / (2 ^ 30), 1) &amp; &quot; Gb/&quot; &amp; FormatNumber(.FreeSpace / (2 ^ 30), 1) &amp; &quot; Gb (&quot; &amp; FormatPercent((.Capacity - .FreeSpace) / .Capacity, 1) &amp; &quot;)&quot;
        WScript.Echo &quot;Drive type (File system):    &quot;, Array(&quot;Unknown&quot;, &quot;No Root Directory&quot;, &quot;Removable Disk&quot;, &quot;Local Disk&quot;, &quot;Network Drive&quot;, &quot;Compact Disk&quot;, &quot;RAM Disk&quot;)(.DriveType) &amp; &quot; (&quot; &amp; .FileSystem &amp; &quot;)&quot;
        
        If .DefragAnalysis(boolDefragRecommended, objSWbemObjectEx_Win32_DefragAnalysis) = 0 Then
            WScript.Echo &quot;Block size/Cluster size:     &quot;, .BlockSize &amp; &quot; b/&quot; &amp; objSWbemObjectEx_Win32_DefragAnalysis.ClusterSize &amp; &quot; b&quot;
        End If
        
        Set objSWbemObjectEx_Win32_DefragAnalysis = Nothing
        
        WScript.Echo &quot;-----------------------------------&quot;
        WScript.Echo
    End With
Next

Set objSWbemServicesEx = Nothing
Set objSWbemLocator    = Nothing

WScript.Quit 0</code></pre></div><p>В моём случае свойство «.BlockSize» класса «Win32_Volume» всегда оказывалось равным свойству «.ClusterSize» класса «Win32_DefragAnalysis». Всегда ли бывает так — не скажу, не знаю. Смотрите сами.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2012-06-18T07:17:56Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=60961#p60961</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: как получить размер кластера?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=60957#p60957" />
			<content type="html"><![CDATA[<p>«<a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa394515(v=vs.85).aspx">Windows XP and earlier:&nbsp; This class is not available.</a>» <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[Serge Yolkin]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27503</uri>
			</author>
			<updated>2012-06-17T20:37:33Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=60957#p60957</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: как получить размер кластера?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=60956#p60956" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>alexii, добавил в скрипт (пост #11) и в результат (пост #12). Класс Win32_Volume, что логично. Жаль, если в XP его нет (к сожалению, не на чем проверить).</p></blockquote></div><p>Нетути в XP этого класса <img src="//forum.script-coding.com/img/smilies/wink.png" width="15" height="15" />, нету. Потому у меня и пусто. В итоге, мы возвращаемся к посту №2. Попробую посмотреть завтра напрямую на класс «Win32_Volume».</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2012-06-17T18:53:44Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=60956#p60956</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: как получить размер кластера?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=60954#p60954" />
			<content type="html"><![CDATA[<p><strong>alexii</strong>, добавил в скрипт (пост #11) и в результат (пост #12). Класс Win32_Volume, что логично. Жаль, если в XP его нет (к сожалению, не на чем проверить). Почему в соответствующем свойстве - null - вопрос, вероятно, к WSH.</p>]]></content>
			<author>
				<name><![CDATA[Serge Yolkin]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27503</uri>
			</author>
			<updated>2012-06-17T18:16:39Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=60954#p60954</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: как получить размер кластера?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=60953#p60953" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p><strong>alexii</strong>, при всём уважении, если Вы настаиваете на правльности использования Win32_LogicalDisk - дайте рабочий пример.</p></blockquote></div><p>Я имею в виду то, что следует использовать не общий класс «CIM_StorageExtent», а частный. По поводу «Win32_LogicalDisk» — меня ввёл в заблуждение пост <a href="http://forum.script-coding.com/viewtopic.php?pid=60926#p60926">#5</a>. Теперь ясно, что это не «Win32_LogicalDisk», а некий иной класс.</p><p>У меня:<br /></p><div class="codebox"><pre><code>DeviceID;Name;BlockSize;CreationClassName;SystemCreationClassName
Memory Device 0;Устройство памяти;null;Win32_MemoryDevice;Win32_ComputerSystem
Memory Device 1;Устройство памяти;null;Win32_MemoryDevice;Win32_ComputerSystem
Memory Device 2;Устройство памяти;null;Win32_MemoryDevice;Win32_ComputerSystem
Memory Device 3;Устройство памяти;null;Win32_MemoryDevice;Win32_ComputerSystem
Memory Array 0;Массив памяти;null;Win32_MemoryArray;Win32_ComputerSystem
Cache Memory 0;Кэш-память;1024;Win32_CacheMemory;Win32_ComputerSystem
Cache Memory 1;Кэш-память;1024;Win32_CacheMemory;Win32_ComputerSystem
Cache Memory 2;Кэш-память;1024;Win32_CacheMemory;Win32_ComputerSystem
Disk #1, Partition #0;Диск #1, раздел #0;512;Win32_DiskPartition;Win32_ComputerSystem
Disk #0, Partition #0;Диск #0, раздел #0;512;Win32_DiskPartition;Win32_ComputerSystem
Disk #0, Partition #1;Диск #0, раздел #1;512;Win32_DiskPartition;Win32_ComputerSystem
Disk #0, Partition #2;Диск #0, раздел #2;512;Win32_DiskPartition;Win32_ComputerSystem
Disk #2, Partition #0;Диск #2, раздел #0;512;Win32_DiskPartition;Win32_ComputerSystem
A:;A:;null;Win32_LogicalDisk;Win32_ComputerSystem
C:;C:;null;Win32_LogicalDisk;Win32_ComputerSystem
D:;D:;null;Win32_LogicalDisk;Win32_ComputerSystem
E:;E:;null;Win32_LogicalDisk;Win32_ComputerSystem
F:;F:;null;Win32_LogicalDisk;Win32_ComputerSystem
G:;G:;null;Win32_LogicalDisk;Win32_ComputerSystem
H:;H:;null;Win32_LogicalDisk;Win32_ComputerSystem
I:;I:;null;Win32_LogicalDisk;Win32_ComputerSystem
J:;J:;null;Win32_LogicalDisk;Win32_ComputerSystem
K:;K:;null;Win32_LogicalDisk;Win32_ComputerSystem
L:;L:;null;Win32_LogicalDisk;Win32_ComputerSystem</code></pre></div><p>Как Вы видите, у меня в принципе отсутствует «\\?\Volume{…}\» (очевидно из-за ОС).</p><p>Добавьте «n.item().Path_» в сбор информации: хочу всё-таки поглядеть, что же это за класс у Вас.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2012-06-17T17:40:43Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=60953#p60953</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: как получить размер кластера?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=60952#p60952" />
			<content type="html"><![CDATA[<p>Вот что уменя:</p><div class="codebox"><pre><code>DeviceID;Name;BlockSize;CreationClassName;SystemCreationClassName;Path_
Disk #0, Partition #0;Disk #0, Partition #0;512;Win32_DiskPartition;Win32_ComputerSystem;\\NOTE\root\cimv2:Win32_DiskPartition.DeviceID=&quot;Disk #0, Partition #0&quot;
Disk #1, Partition #0;Disk #1, Partition #0;512;Win32_DiskPartition;Win32_ComputerSystem;\\NOTE\root\cimv2:Win32_DiskPartition.DeviceID=&quot;Disk #1, Partition #0&quot;
C:;C:;null;Win32_LogicalDisk;Win32_ComputerSystem;\\NOTE\root\cimv2:Win32_LogicalDisk.DeviceID=&quot;C:&quot;
D:;D:;null;Win32_LogicalDisk;Win32_ComputerSystem;\\NOTE\root\cimv2:Win32_LogicalDisk.DeviceID=&quot;D:&quot;
E:;E:;null;Win32_LogicalDisk;Win32_ComputerSystem;\\NOTE\root\cimv2:Win32_LogicalDisk.DeviceID=&quot;E:&quot;
Memory Array 0;Memory Array;null;Win32_MemoryArray;Win32_ComputerSystem;\\NOTE\root\cimv2:Win32_MemoryArray.DeviceID=&quot;Memory Array 0&quot;
\\?\Volume{232a2744-0602-11e0-ade5-806e6f6e6963}\;C:\;4096;null;null;\\NOTE\root\cimv2:Win32_Volume.DeviceID=&quot;\\\\?\\Volume{232a2744-0602-11e0-ade5-806e6f6e6963}\\&quot;
\\?\Volume{2f7f3a4a-9b5a-11e0-ad2a-001d60b89b0a}\;E:\;8192;null;null;\\NOTE\root\cimv2:Win32_Volume.DeviceID=&quot;\\\\?\\Volume{2f7f3a4a-9b5a-11e0-ad2a-001d60b89b0a}\\&quot;
\\?\Volume{232a2747-0602-11e0-ade5-806e6f6e6963}\;D:\;null;null;null;\\NOTE\root\cimv2:Win32_Volume.DeviceID=&quot;\\\\?\\Volume{232a2747-0602-11e0-ade5-806e6f6e6963}\\&quot;
Cache Memory 0;Cache Memory;1024;Win32_CacheMemory;Win32_ComputerSystem;\\NOTE\root\cimv2:Win32_CacheMemory.DeviceID=&quot;Cache Memory 0&quot;
Cache Memory 1;Cache Memory;1024;Win32_CacheMemory;Win32_ComputerSystem;\\NOTE\root\cimv2:Win32_CacheMemory.DeviceID=&quot;Cache Memory 1&quot;</code></pre></div><p>(Открывается в Excell)</p>]]></content>
			<author>
				<name><![CDATA[Serge Yolkin]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27503</uri>
			</author>
			<updated>2012-06-17T15:47:58Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=60952#p60952</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: как получить размер кластера?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=60951#p60951" />
			<content type="html"><![CDATA[<p><strong>alexii</strong>, при всём уважении, если Вы настаиваете на правльности использования Win32_LogicalDisk - дайте рабочий пример.</p><div class="quotebox"><cite>smaharbA пишет:</cite><blockquote><p>вобщето клайстер это свойство волюмы</p></blockquote></div><p>полностью с Вами согласен.</p><p><strong>2All</strong>: Господа (кому не в лом), не могли бы Вы представить здесь результат выполнения следующего скрипта (файлик test.csv создаётся в той же папке, что и скрипт):</p><div class="codebox"><pre><code>var
 f=new ActiveXObject(&#039;Scripting.fileSystemObject&#039;),
 m=&#039;DeviceID;Name;BlockSize;CreationClassName;SystemCreationClassName;Path_&#039;,
 n=new Enumerator(GetObject(&#039;winmgmts:&#039;).instancesOf(&#039;CIM_StorageExtent&#039;));

for(var n;!n.atEnd();n.moveNext()){
  m+=&#039;\n&#039;+n.item().deviceID+&#039;;&#039;+n.item().name+&#039;;&#039;+n.item().blockSize+&#039;;&#039;+
   n.item().creationClassName+&#039;;&#039;+n.item().systemCreationClassName+&#039;;&#039;+
   n.item().path_;
   
}
with(f.openTextFile(&#039;test.csv&#039;,2,true)){
  write(m);
  close();
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Serge Yolkin]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27503</uri>
			</author>
			<updated>2012-06-17T15:41:51Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=60951#p60951</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: как получить размер кластера?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=60933#p60933" />
			<content type="html"><![CDATA[<p>понял</p>]]></content>
			<author>
				<name><![CDATA[smaharbA]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2911</uri>
			</author>
			<updated>2012-06-15T20:32:32Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=60933#p60933</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: как получить размер кластера?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=60932#p60932" />
			<content type="html"><![CDATA[<p><strong>smaharbA</strong>, обратите внимание на пост <a href="http://forum.script-coding.com/viewtopic.php?pid=60916#p60916">#2</a>.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2012-06-15T19:59:35Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=60932#p60932</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: как получить размер кластера?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=60931#p60931" />
			<content type="html"><![CDATA[<p>вобщето клайстер это свойство волюмы, а не логического диска и тем более прочих драйвов и разделов</p>]]></content>
			<author>
				<name><![CDATA[smaharbA]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2911</uri>
			</author>
			<updated>2012-06-15T19:30:45Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=60931#p60931</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: как получить размер кластера?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=60930#p60930" />
			<content type="html"><![CDATA[<p>Смысл в том, что ровно с тем же успехом можно (и на самом деле — нужно) использовать класс «Win32_LogicalDisk», производный от «CIM_StorageExtent».</p><p>Но у меня и в том, и в другом случае свойство «.BlockSize» — пустое. А для класса «Win32_DiskPartition» оно означает ровно то, что и должно означать — число байт в секторе, 512, а не размер кластера. Вот примерное объяснение тому: <a href="https://groups.google.com/group/microsoft.public.wbem/tree/browse_frm/month/2000-07/70df40bec97a7a10?rnum=11&amp;_done=/group/microsoft.public.wbem/browse_frm/month/2000-07?fwc%3D1%26&amp;hl=zh">Why no CIM/base class data?</a>.</p><p>А что у Вас?</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2012-06-15T19:13:29Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=60930#p60930</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: как получить размер кластера?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=60927#p60927" />
			<content type="html"><![CDATA[<p>Кстати, а если убрать условие if, остальное у Вас работает?<br />В этом случае, наверное, правильным условием будет</p><div class="codebox"><pre><code>if(/^\\\\\?\\Volume/.test(n.item().deviceID)){...</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Serge Yolkin]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27503</uri>
			</author>
			<updated>2012-06-15T16:38:15Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=60927#p60927</id>
		</entry>
</feed>
