Skip to Content

IT nieuczesane.
archive

> Daily Archives: 28 czerwca 2009

;)

india_25.jpg

skrypt mapujący dyski sieciowe

prosty problem: należy spisać co userzy mają podmapowane oraz jakie mają drukarki sieciowe.
sposób 1: podchodzi i spisywać [BUEEEE!]
sposób 2: napisać skrypt. nie jest to trudne i szybko można znaleźć gotowca w netcie ale jeden drobny problem – zarówno ‘net use’ jak obiekt ‘wscript.network’ nie wyświetlają dysqw, do których nie podano haseł. tymczasem na liście w exploratorze normalnie je widać. po kliknięciu na dysk pojawia się prośba o hasło i dopiero user może skorzystać z dysq. aby wylistować takie jeszcze-niezmapowane dyski wystarczy odczytać je z klucza HKCUNetwork:


const HKCU=&H80000001
Set WshNetwork = WScript.CreateObject("WScript.Network")
computername=WshNetwork.ComputerName
set fso=createObject("Scripting.FileSystemObject")
set f=fso.CreateTextFile(computername&".log")
f.writeline wshnetwork.username
f.writeLine "DYSKI SIECIOWE:"
'enum by network
' Set AllDrives = WshNetwork.EnumNetworkDrives()
' If AllDrives.Count = 0 Then f.writeLine "No Network Disk Mapped "
' For i = 0 To AllDrives.Count - 1 Step 2
' f.writeLine AllDrives.item(i)&" "&AllDrives.item(i+1)
' Next
'enum by registry
set oReg=getObject("winmgmts:!\.rootDefault:StdRegProv")
oReg.enumKey HKCU,"Network",subKeys
for each skey in subKeys
oReg.getStringValue HKCU,"Network"&skey,"RemotePath",val
f.writeLine skey&": "&val
next
f.writeLine vbcrlf&"DRUKARKI SIECIOWE:"
Set objPrinter = wshNetwork.EnumPrinterConnections()
' Extra section to troubleshoot
If objPrinter.Count = 0 Then f.writeline "No Printers Mapped "
' Here is the where the script reads the array
For intDrive = 0 To (objPrinter.Count -1) Step 2
intNetLetter = IntNetLetter +1
f.writeLine objPrinter.Item(intDrive) & " = " & objPrinter.Item(intDrive +1) & " Printer : " & intDrive
Next
f.writeLine "done."

n.

%d bloggers like this: