View Full Version : Snippets / Scripts / Pequenos utilitários...
SpEeDyGoNzAlEs 14-07-2005, 18:27 Boas.
Decidi partilhar com vocês algumas coisinhas que me têm dado bastante jeito.
São coisas simples, daquelas que se calhar nem lembra ao diabo, mas nunca se sabe quando fazem falta.
Assim, e para começar, cá vai disto.
__________________________________________________ ___________________________
*** Alteração manual, via linha de comandos, das configurações TCP/IP duma máquina ***
netsh interface ip set address name="Local Area Connection" static 192.168.0.1 255.255.255.0 192.168.0.254 1
netsh interface ip set dns name="Local Area Connection" static 192.168.0.2 primary
netsh interface ip set dns name="Local Area Connection" static 192.168.0.3
Estes 3 comandos vão definir o IP 192.168.0.1, com subnet 255.255.255.0 e default gateway 192.168.0.254. O DNS primário será 192.168.0.2 e o WINS será 192.168.0.3.
Isto para a ligação de rede de nome Local Area Connection.
__________________________________________________ __________________________________________________ ____________
*** Batch file para ler um ficheiro (com, por exemplo, nomes de máquinas) e, nas várias entradas, efectuar um qualquer comando ***
for /f "eol=" %i in (List.txt) do ping %i
List.txt contém a listagem de máquinas :)
Espero que seja útil. Se não for, paciência :P
Se vos agradar a ideia, digam que eu vou continuando.
Basicamente, VBScript, VB .Net e "programação" DOS :)
SpEeDyGoNzAlEs 14-07-2005, 18:36 __________________________________________________ _______________________
*** Função, em VB .Net, para retornar número de série, da BIOS, de uma máquina ***
Public Function ReturnBIOSSerialNumber() As String
Dim strComputer As String
Dim objWMIService As Object
Dim colBIOS As Object
Dim objBIOS As Object
Dim auxInt As Integer
strComputer = "."
objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
colBIOS = objWMIService.ExecQuery("Select * from Win32_BIOS")
For Each objBIOS In colBIOS
ReturnBIOSSerialNumber = objBIOS.SerialNumber
Next
End Function
SpEeDyGoNzAlEs 14-07-2005, 18:39 _________________________________________________
*** Função, em VB .Net, para ler o IP duma máquina ***
Imports System
Imports System.Net
Public Function ReturnIPAddress() As String
Dim ipHost As IPHostEntry
ipHost = Dns.GetHostByName(Dns.GetHostName())
Dim ipAddr() As IPAddress = ipHost.AddressList
Dim count As Integer
ReturnIPAddress = ipAddr(0).ToString
End Function
SpEeDyGoNzAlEs 14-07-2005, 18:41 __________________________________________________ _________________________
*** Como "apanhar" o texto de algo corrido numa janela de DOS, em VB .Net e afins ***
Esta tem-me dado um jeitão...
Basicamente, o que faz, é abrir uma shell com o comando pretendido.
Depois, usando o IO da consola, tratamos só as mensagens que queremos.
O exemplo dado é para ver se o DHCP está ou não activo.
Public Function ReturnDHCPEnabled() As Boolean
Dim wshObj As Object
Dim strText As String = ""
Dim objRun As Object
wshObj = CreateObject("WScript.Shell")
objRun = wshObj.Exec("ipconfig /all")
Do While objRun.Status = 0
Loop
Do While Not objRun.StdOut.atendofstream
strText = objRun.StdOut.readline
If InStr(strText, "Dhcp Enabled. . . . . . . . . . . : Yes") > 0 Then
ReturnDHCPEnabled = True
Exit Do
End If
If InStr(strText, "Dhcp Enabled. . . . . . . . . . . : No") > 0 Then
ReturnDHCPEnabled = False
Exit Do
End If
Loop
End Function
Continua que tás a rular com esses scripts....
SpEeDyGoNzAlEs 14-07-2005, 18:42 ______________________________________________
*** Nome de máquina e user loggado, em VB .Net ***
Imports System
Imports System.Net
Imports System.Security
Imports System.Threading
Public Function ReturnLoggedOnUser() As String
Dim aID As Principal.WindowsIdentity
ReturnLoggedOnUser = aID.GetCurrent.Name
End Function
Public Function ReturnMachineName() As String
Dim auxMN As System.Environment
ReturnMachineName = auxMN.MachineName
End Function
SpEeDyGoNzAlEs 14-07-2005, 18:45 __________________________________________________ _____________________________________
*** Função, em VB .Net, para descobrir, via LDAP, uma impressora shared num servidor de domínio ***
Public Function GetPrinterServerPath(ByVal auxStr As String) As String
Dim strServer As String = ""
Const ADS_SCOPE_SUBTREE = 2
Dim objConnection As Object
Dim shares As Object
Dim objCommand As Object
Dim objRecordSet As Object
Dim share As Object
Dim strAux As String = ""
objConnection = CreateObject("ADODB.Connection")
objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open("Active Directory Provider")
objCommand.ActiveConnection = objConnection
objCommand.CommandText = "Select printShareName, printerName, serverName from " _
& " 'LDAP://DC=DOMAIN,DC=com' where objectClass='printQueue'"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 30
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.Properties("Cache Results") = False
Try
objRecordSet = objCommand.Execute
Catch ex As Exception
MsgBox("Utilizador sem acesso ao domínio, para verificação de printer queues.", MsgBoxStyle.Critical, "Atenção!")
GetPrinterServer = ""
Exit Function
End Try
objRecordSet.MoveFirst()
Do Until objRecordSet.EOF
shares = objRecordSet.Fields("printShareName").value
For Each share In shares
strAux = objRecordSet.Fields("serverName").Value
If UCase(share) = UCase(auxStr) Then strServer = UCase("\\" & Microsoft.VisualBasic.Left(strAux, InStr(strAux, ".") - 1) & "\" & share)
Next
objRecordSet.MoveNext()
Loop
objConnection.close()
GetPrinterServerPath = strServer
End Function
SpEeDyGoNzAlEs 14-07-2005, 18:47 __________________________________________________ ______
*** Função para verificar conectividade a uma base de dados ***
Ok, ok, esta é básica... Mas, às vezes, é bom ter funções básicas, que poupam tempo e simplificam a vida ... :P
Public Function CheckConnectivity() As Boolean
Dim auxBool As Boolean = False
Dim sqlConn As New SqlClient.SqlConnection
sqlConn.ConnectionString = strConn
Try
sqlConn.Open()
Catch ex As Exception
CheckConnectivity = auxBool
sqlConn = Nothing
Exit Function
End Try
If sqlConn.State <> ConnectionState.Closed Then sqlConn.Close()
sqlConn = Nothing
auxBool = True
CheckConnectivity = auxBool
End Function
Peço desculpa por isto não estar indentado (Outra grande "regra" da programação...) mas acho que é culpa do forum.....
EDIT: Já descobri... Sorry!
Amanhã há mais, que vou jogar WoW! :P
SpEeDyGoNzAlEs 14-07-2005, 18:57 __________________________________________________ __
*** Procedimento, em VB .Net, para mapear impressoras ***
Ok, ok, fica só mais este ... :P
Permite a adição de uma impressora partilhada num servidor do domínio, com verificação de permissão, para o user, de mapeamento de impressoras a cores.
Esta verificação é feita caso o user esteja no grupo GrupoCores do domínio.
Private Sub MapPrinter(ByVal strPrintServer As String, ByVal strPrinterShare As String, ByVal boolCores As Boolean)
Dim objGroup As Object
objGroup = GetObject("WinNT://DOMAIN/GrupoCores")
Dim strPrinterPath As String = ""
strPrinterPath = "\\" & strPrintServer & "\" & strPrinterShare
Select Case boolCores
Case True
Select Case objGroup.IsMember("WinNT://DOMAIN/" & strUsername)
Case True
objNetwork.AddWindowsPrinterConnection(strPrinterP ath)
strLog = strLog & "Impressora " & strPrinterShare & " adicionada." & vbCrLf
printerFound = 1
Case Else
MsgBox("O user id " & strUsername & " não tem permissões para mapear impressora a cores.", , "Mapear Impressoras")
End Select
Case Else
objNetwork.AddWindowsPrinterConnection(strPrinterP ath)
printerFound = 1
strLog = strLog & "Impressora " & strPrinterShare & " adicionada." & vbCrLf
End Select
End Sub
Uma boa forma de saber se a impressora é ou não a cores, é procurando no campo Descrição da mesma.
Como? Com o código abaixo.
Function CheckColorPrinter(ByVal strPrinter) As Boolean
Dim auxBool As Boolean = False
If InStr(UCase(strPrinter.description), UCase("Cores")) > 0 Then auxBool = True
CheckColorPrinter = auxBool
End Function
Bom post! :)
Adicionei esta thread á thread de indexação de [Artigos / How-tos / Tutorials / Código] (http://www.techzonept.com/showthread.php?p=561430#post561430)
|
|