Quantcast
Channel: The Official Scripting Guys Forum! forum
Viewing all articles
Browse latest Browse all 15028

send mail from vb script with attachement

$
0
0

Hi

I am running below script which is help to export next 90 days account expiration users from AD.

But I need to send the output file as attachment on mail.. while I am trying getting below error:

Error: 

account.vbs(132, 1) CDO.Message.1: The process cannot access the file because it is being used by another process.

=================

days= 90

Dim adoConnection, adoCommand
Const ADS_UF_ACCOUNTDISABLE = &H02
Const For_reading = 1
Const For_writing = 2
Const For_appending =8
Const CONVERT_TO_LOCAL_TIME = True
Dim objRootDSE, strDNSDomain, strFilter, strQuery, adoRecordset
Dim strDN, objShell, lngBiasKey, lngBias, strDisplay
Dim strfn, strln,strmail,strtitle,strdept,strmngr,strEnabled,strcomp
Dim lngDate, objDate, dtmAcctExp, k, strName
Dim dtmCritical1, lngSeconds1, str64Bit1, dtmCritical2, lngSeconds2, str64Bit2, Objwritefile

' Obtain local time zone bias from machine registry.
set objfso = createobject("scripting.Filesystemobject")
Set Objwritefile = objfso.opentextfile("C:\users.txt", For_writing, True)
Set objShell = CreateObject("Wscript.Shell")
lngBiasKey = objShell.RegRead("HKLM\System\CurrentControlSet\Control\" _
    & "TimeZoneInformation\ActiveTimeBias")
If (UCase(TypeName(lngBiasKey)) = "LONG") Then
    lngBias = lngBiasKey
ElseIf (UCase(TypeName(lngBiasKey)) = "VARIANT()") Then
    lngBias = 0
    For k = 0 To UBound(lngBiasKey)
        lngBias = lngBias + (lngBiasKey(k) * 256^k)
    Next
End If

' Use ADO to search the domain.
Set adoConnection = CreateObject("ADODB.Connection")
Set adoCommand = CreateObject("ADODB.Command")
adoConnection.Provider = "ADsDSOOBject"
adoConnection.Open "Active Directory Provider"
Set adoCommand.ActiveConnection = adoConnection

' Determine the DNS domain from the RootDSE object.
Set objRootDSE = GetObject("LDAP://RootDSE")
strDNSDomain = objRootDSE.Get("DefaultNamingContext")

' Convert current date/time to UTC.
dtmCritical1 = DateAdd("n", lngBias, Now())

' Convert to seconds since 1/1/1601.
lngSeconds1 = DateDiff("s", #1/1/1601#, dtmCritical1)

' Convert to 100-nanosecond intervals.
str64Bit1 = CStr(lngSeconds1) & "0000000"

' Determine critical date days in future.
dtmCritical2 = DateAdd("d", days, Now())

' Convert to UTC.
dtmCritical2 = DateAdd("n", lngBias, dtmCritical2)

' Convert to seconds since 1/1/1601
lngSeconds2 = DateDiff("s", #1/1/1601#, dtmCritical2)

' Convert to 100-nanosecond intervals
str64Bit2 = CStr(lngSeconds2) & "0000000"

' Filter to retrieve all user objects with accounts that will expire
' within the specified number of days in the future.
strFilter = "(&(objectCategory=person)(objectClass=user)" _
    & "(accountExpires>=" & str64Bit1 & ")(accountExpires<=" & str64Bit2 & "))"

strQuery = "<LDAP://" & strDNSDomain & ">;" & strFilter _
    & ";givenname,sn,mail,title,department,company,manager,accountExpires,sAMAccountName,displayName,userAccountControl;subtree"

' Run the query.
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 200
adoCommand.Properties("Timeout") = 1200
adoCommand.Properties("Cache Results") = False
Set adoRecordset = adoCommand.Execute

' Enumerate the recordset.
Objwritefile.writeline "First Name" & vbtab & "Last Name" & vbtab & "Display Name" & vbtab & "Logon Name ( S-ID & A-ID)" & vbtab & "Expiry Date" & vbtab & "Email"& vbtab & "Title" & vbtab & "Department" & vbtab & "status" & vbtab & "company" & vbtab & "Manager"
Do Until adoRecordset.EOF
    'strDN = adoRecordset.Fields("distinguishedName").Value
    strName = adoRecordset.Fields("sAMAccountName").Value
    strDisplay = adoRecordset.Fields("displayName").Value
    strfn = adoRecordset.Fields("givenname").Value
    strln = adoRecordset.Fields("sn").Value
    strmail = adoRecordset.Fields("mail").Value
    strtitle = adoRecordset.Fields("title").Value
    strdept = adoRecordset.Fields("department").Value
    strcomp = adoRecordset.Fields("company").Value
    strmngr = adoRecordset.Fields("manager").Value
    lngDate = adoRecordset.Fields("accountExpires")
    If (adoRecordset.Fields("userAccountControl").Value And ADS_UF_ACCOUNTDISABLE) <> 0 Then
        strEnabled = "Disabled"
    Else
        strEnabled = "Enabled"
    End If
    Set objDate = lngDate
    dtmAcctExp = Integer8Date(objDate, lngBias)

    Objwritefile.writeline strfn & vbtab & strln & vbtab & strDisplay & vbtab & strName & vbtab & dtmAcctExp & vbtab & strmail & vbtab & strtitle & vbtab & strdept & vbtab & strenabled& vbtab & strcomp & vbtab & strmngr
    adoRecordset.MoveNext
Loop
adoRecordset.Close

' Clean up.
adoConnection.Close

Function Integer8Date(ByVal objDate, ByVal lngBias)
    ' Function to convert Integer8 (64-bit) value to a date, adjusted for
    ' local time zone bias.
    Dim lngAdjust, lngDate, lngHigh, lngLow
    lngAdjust = lngBias
    lngHigh = objDate.HighPart
    lngLow = objdate.LowPart
    ' Account for bug in IADslargeInteger property methods.
    If (lngLow < 0) Then
        lngHigh = lngHigh + 1
    End If
    If (lngHigh = 0) And (lngLow = 0) Then
        lngAdjust = 0
    End If
    lngDate = #1/1/1601# + (((lngHigh * (2 ^ 32)) _
        + lngLow) / 600000000 - lngAdjust) / 1440
    Integer8Date = CDate(lngDate)
End Function

Set objEmail = CreateObject("CDO.Message")

objEmail.From = "admin@contoso.org"
objEmail.To = "test@constoso.org"
objEmail.Subject = "Server down" 
objEmail.Textbody = "Server1 is no longer accessible over the network."
objEmail.AddAttachment "C:\users.txt"

objEmail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objEmail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
        "smtp.contoso.org" 
objEmail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objEmail.Configuration.Fields.Update

objEmail.Send

==================




Viewing all articles
Browse latest Browse all 15028

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>