Snippets / Scripts / Pequenos utilitários...

SpEeDyGoNzAlEs

Power Member
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 :)
 
Última edição:
_________________________________________________________________________
*** Função, em VB .Net, para retornar número de série, da BIOS, de uma máquina ***

Código:
    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
 
Última edição:
_________________________________________________
*** Função, em VB .Net, para ler o IP duma máquina ***

Código:
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
 
Última edição:
___________________________________________________________________________
*** 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.

Código:
    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
 
Última edição:
______________________________________________
*** Nome de máquina e user loggado, em VB .Net ***

Código:
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
 
Última edição:
_______________________________________________________________________________________
*** Função, em VB .Net, para descobrir, via LDAP, uma impressora shared num servidor de domínio ***

Código:
    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
 
Última edição:
________________________________________________________
*** 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

Código:
    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
 
Última edição:
____________________________________________________
*** 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.

Código:
    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(strPrinterPath)
                        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(strPrinterPath)
                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.

Código:
    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
 
Back
Topo