<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBScript: логические диски и физические накопители]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=2730</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=2730&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBScript: логические диски и физические накопители».]]></description>
		<lastBuildDate>Wed, 28 Jan 2009 07:06:10 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[VBScript: логические диски и физические накопители]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=18822#p18822</link>
			<description><![CDATA[<p>Задача: без использования оснастки &quot;Управление дисками&quot; сопоставить имена логических дисков заданной станции домена с моделями накопителей, на которых эти диски расположены.</p><p>Пример сценария для её решения:<br /></p><div class="codebox"><pre><code>Dim objWMI, objLogicalDisks, objLD
Dim objPartitions, objPart, objDrives, objDrive, objFS
Dim strComputer, strTranslator, strList, strTemp, blnIsConsole

strComputer = &quot;имя компьютера&quot;: strList = vbNullString
Set objFS = CreateObject(&quot;Scripting.FileSystemObject&quot;)
strTranslator = objFS.GetBaseName(WScript.FullName)
Set objFS = Nothing
If StrComp(strTranslator, &quot;cscript&quot;, vbTextCompare) = 0 Then
    blnIsConsole = True
Else
    blnIsConsole = False
End If
Set objWMI = GetObject(&quot;winmgmts:{impersonationLevel=Impersonate}!\\&quot; &amp; strComputer &amp; &quot;\root\cimv2&quot;)
Set objLogicalDisks = objWMI.ExecQuery(&quot;SELECT * FROM Win32_LogicalDisk WHERE DriveType=2 OR DriveType=3&quot;)
For Each objLD In objLogicalDisks
    Set objPartitions = objWMI.ExecQuery(&quot;ASSOCIATORS OF {Win32_LogicalDisk.DeviceID=&quot;&quot;&quot; &amp; _
                        objLD.DeviceID &amp; _
                        &quot;&quot;&quot;} WHERE AssocClass=Win32_LogicalDiskToPartition&quot;)
    For Each objPart In objPartitions
        Set objDrives = objWMI.ExecQuery(&quot;ASSOCIATORS OF {Win32_DiskPartition.DeviceID=&quot;&quot;&quot; &amp; _
                        objPart.DeviceID &amp; _
                        &quot;&quot;&quot;} WHERE AssocClass=Win32_DiskDriveToDiskPartition&quot;)
        For Each objDrive In objDrives
            strTemp = objLD.DeviceID &amp; &quot; =&gt; &quot; &amp; objDrive.Caption &amp; _
                        &quot; (Диск &quot; &amp; objDrive.Index &amp; &quot;)&quot;
            strList = strList &amp; strTemp &amp; vbNewLine
            If blnIsConsole Then WScript.Echo strTemp
        Next
        Set objDrive = Nothing
        Set objDrives = Nothing
    Next
    Set objPart = Nothing
    Set objPartitions = Nothing
Next
Set objLD = Nothing
Set objLogicalDisks = Nothing
Set objWMI = Nothing
If Len(strList) = 0 Then
    WScript.Echo &quot;Накопителей указанного типа не обнаружено.&quot;
End If
If Not blnIsConsole Then WScript.Echo strList
WScript.Quit 0</code></pre></div><p>Примечания.<br />1. Пример предназначен для работы с накопителями трёх типов: HDD, USB-Flash, ZIP.<br />2. Работоспособность проверялась на Windows 2000 Pro/XP Pro/2003/Vista.<br />3. В Windows Vista наблюдались случаи неверного определения некоторых моделей накопителей типа USB-Flash.</p>]]></description>
			<author><![CDATA[null@example.com (Dmitrii)]]></author>
			<pubDate>Wed, 28 Jan 2009 07:06:10 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=18822#p18822</guid>
		</item>
	</channel>
</rss>
