Link to home
Start Free TrialLog in
Avatar of chandru_sol
chandru_solFlag for India

asked on

vbscript for pulling the AD attribute in Dial-in tab for users in AD

Hi,

Can you please help me with the script for pulling the AD attribute in Dial-in Tab in AD for all the enabled accounts.

Can we not include inbuilt account, disabled accounts and other system accounts?

I want all the three remote access policy attribute for all the users output to an excel sheet with the current setting for the users and update the attribute to a particulate setting for all the users in the same excel sheet?

regards
Chandru
Avatar of RobSampson
RobSampson
Flag of Australia image

Hi, this allows you to enable the dial-in access....I'll have to look further for retrieving the other properties...

http://support.microsoft.com/kb/252398

Regards,

Rob.
Avatar of chandru_sol

ASKER

Hi Rob,

Can you help me with retrieving the attribute information to an excel file and then we can work on the other part of the script?

regards
Chandru
Hi Rob,

Can you please help me with the script?

regards
Chandru
Hey, I found the settings here:

List the Dial-In Property Configuration Settings for a User Account
http://www.windowsmanagement.net/scripting/wmi/activedirectory/user/retrieving/#ListDail-in.htm

This will show you the settings for your account.....do you need help to iterate that through all users?

Rob.
If LCase(Right(Wscript.FullName, 11)) = "wscript.exe" Then
    strPath = Wscript.ScriptFullName
    strCommand = "%comspec% /k cscript  """ & strPath & """"
    Set objShell = CreateObject("Wscript.Shell")
    objShell.Run(strCommand), 1, True
    Wscript.Quit
End If
 
' List the Dial-In Property Configuration Settings for a User Account
' http://www.windowsmanagement.net/scripting/wmi/activedirectory/user/retrieving/#ListDail-in.htm
 
On Error Resume Next
 
Const E_ADS_PROPERTY_NOT_FOUND  = &h8000500D
 
Const FourthOctet = 1
Const ThirdOctet = 256
Const SecondOctet = 65536
Const FirstOctet = 16777216
 
Set objADSysInfo = CreateObject("ADSystemInfo")
 
Set objUser = GetObject("LDAP://" & objADSysInfo.Username)
 
WScript.Echo "Dial-In settings for " & objUser.adsPath & VbCrLf
 
blnMsNPAllowDialin = objUser.Get("msNPAllowDialin")
WScript.Echo "Remote Access Permission (Dial-in or VPN)"
If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
    WScript.Echo "Control access through Remote Access Policy"
    Err.Clear
Else
    If blnMsNPAllowDialin = True Then
        WScript.Echo "Allow access (msNPAllowDialin)"
    Else
        WScript.Echo "Deny access (msNPAllowDialin)"
    End If
End If
WScript.Echo 
 
arrMsNPSavedCallingStationID = objUser.GetEx("msNPSavedCallingStationID")
If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
    WScript.Echo "No Caller-ID specified."
    Err.Clear
Else
    WScript.Echo "Verify Caller ID (msNPSavedCallingStationID): "
    For Each strValue in arrMsNPSavedCallingStationID
        WScript.echo strValue
    Next
  
    objUser.GetEx "msNPCallingStationID"
    If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
        WScript.Echo "Calling station ID(s) specified but not assigned."
        Err.Clear
    Else
        WScript.echo "Calling station ID(s) assigned."
    End If
  
End If
WScript.Echo 
 
intMsRADIUSServiceType = objUser.Get("msRADIUSServiceType")
WScript.Echo "Callback Options"
If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
    WScript.Echo "No Callback"
    Err.Clear
Else
    strMsRADIUSCallbackNumber = objUser.Get("msRADIUSCallbackNumber")
    If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
        WScript.Echo "Set by caller (Routing and Remote Access Service only)"
        Err.Clear
  
    strMsRASSavedCallbackNumber = objUser.Get("msRASSavedCallbackNumber")
    If Err.Number <> E_ADS_PROPERTY_NOT_FOUND Then
        WScript.Echo "Unused value of " & strMsRASSavedCallbackNumber & _
            " appears in the Always Callback to field."
    Else
        Err.Clear
    End If  
Else
    WScript.Echo "Always Callback to: " & _
        strMsRADIUSCallbackNumber & " (msRADIUSCallbackNumber)"
    End If
End If   
WScript.Echo
 
intMsRASSavedFramedIPAddress = objUser.Get("msRASSavedFramedIPAddress")
If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
    WScript.Echo "No static IP address assigned."
    Err.Clear
Else
    If sgn(intMsRASSavedFramedIPAddress) = -1 Then
        intIP = intMsRASSavedFramedIPAddress
        WScript.StdOut.Write 256 + (int(intIP/FirstOctet)) & "."
        intFirstRemainder = intIP mod FirstOctet
        WScript.StdOut.Write 256 + (int(intFirstRemainder/SecondOctet)) & "."
        intSecondRemainder = intFirstRemainder mod SecondOctet
        WScript.StdOut.Write 256 + (int(intSecondRemainder/ThirdOctet)) & "."
        intThirdRemainder = intSecondRemainder mod ThirdOctet
        WScript.Echo 256 + (int(intThirdRemainder/FourthOctet))
    Else
        intIP = intMsRASSavedFramedIPAddress
        WScript.StdOut.Write  int(intIP/FirstOctet) & "."
        intFirstRemainder = intIP mod FirstOctet
        WScript.StdOut.Write  int(intFirstRemainder/SecondOctet) & "."
        intSecondRemainder = intFirstRemainder mod SecondOctet
        WScript.StdOut.Write  int(intSecondRemainder/ThirdOctet) & "."
        intThirdRemainder = intSecondRemainder mod ThirdOctet
        WScript.Echo int(intThirdRemainder/FourthOctet)
    End If
    
    objUser.Get "msRADIUSFramedIPAddress"
    If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
        WScript.Echo "Static IP address specified but not assigned."
        Err.Clear
    Else
        WScript.Echo "Static IP Address assigned."
    End If
 
End If
WScript.Echo 
 
arrMsRASSavedFramedRoute = objUser.GetEx("msRASSavedFramedRoute")
If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
    WScript.Echo "No static Routes specified."
    Err.Clear
Else
    WScript.echo "Static Routes (msRASSavedFramedRoute):"
    WScript.Echo vbTab & "CIDR 0.0.0.0 Metric"
    For Each strValue in arrMsRASSavedFramedRoute
        WScript.echo vbTab & strValue
    Next
  
    objUser.GetEx "msRADIUSFramedRoute"
    If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
        WScript.Echo "Static Routes specified but not assigned."
        Err.Clear
    Else
        WScript.echo "Static Routes assigned."
    End If
End If

Open in new window

Yes please.

Can you please help me with all the users and only enabled accounts?

regards
Chandru
Ok, this should do it, but obviously, the output needs to be fixed.....I'll try to do some sort of CSV output hopefully tomorrow....

Rob.
If LCase(Right(Wscript.FullName, 11)) = "wscript.exe" Then
    strPath = Wscript.ScriptFullName
    strCommand = "%comspec% /k cscript  """ & strPath & """"
    Set objShell = CreateObject("Wscript.Shell")
    objShell.Run(strCommand), 1, True
    Wscript.Quit
End If
 
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand =   CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
 
objCommand.Properties("Page Size") = 1000
Set objRootDSE = GetObject("LDAP://RootDSE")
 
objCommand.CommandText = _
    "<LDAP://" & objRootDSE.Get("defaultNamingContext") & ">;(&(objectClass=Person)(objectCategory=User)" & _
        "(!userAccountControl:1.2.840.113556.1.4.803:=2));adsPath;Subtree"  
Set objRecordSet = objCommand.Execute
 
On Error Resume Next
 
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
	Set objUser = GetObject(objRecordSet.Fields("adsPath").Value)
	
	WScript.Echo "Dial-In settings for " & objUser.adsPath & VbCrLf
	
	blnMsNPAllowDialin = objUser.Get("msNPAllowDialin")
	WScript.Echo "Remote Access Permission (Dial-in or VPN)"
	If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
	    WScript.Echo "Control access through Remote Access Policy"
	    Err.Clear
	Else
	    If blnMsNPAllowDialin = True Then
	        WScript.Echo "Allow access (msNPAllowDialin)"
	    Else
	        WScript.Echo "Deny access (msNPAllowDialin)"
	    End If
	End If
	WScript.Echo 
	 
	arrMsNPSavedCallingStationID = objUser.GetEx("msNPSavedCallingStationID")
	If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
	    WScript.Echo "No Caller-ID specified."
	    Err.Clear
	Else
	    WScript.Echo "Verify Caller ID (msNPSavedCallingStationID): "
	    For Each strValue in arrMsNPSavedCallingStationID
	        WScript.echo strValue
	    Next
	  
	    objUser.GetEx "msNPCallingStationID"
	    If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
	        WScript.Echo "Calling station ID(s) specified but not assigned."
	        Err.Clear
	    Else
	        WScript.echo "Calling station ID(s) assigned."
	    End If
	  
	End If
	WScript.Echo 
	 
	intMsRADIUSServiceType = objUser.Get("msRADIUSServiceType")
	WScript.Echo "Callback Options"
	If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
	    WScript.Echo "No Callback"
	    Err.Clear
	Else
	    strMsRADIUSCallbackNumber = objUser.Get("msRADIUSCallbackNumber")
	    If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
	        WScript.Echo "Set by caller (Routing and Remote Access Service only)"
	        Err.Clear
	  
	    strMsRASSavedCallbackNumber = objUser.Get("msRASSavedCallbackNumber")
	    If Err.Number <> E_ADS_PROPERTY_NOT_FOUND Then
	        WScript.Echo "Unused value of " & strMsRASSavedCallbackNumber & _
	            " appears in the Always Callback to field."
	    Else
	        Err.Clear
	    End If  
	Else
	    WScript.Echo "Always Callback to: " & _
	        strMsRADIUSCallbackNumber & " (msRADIUSCallbackNumber)"
	    End If
	End If   
	WScript.Echo
	 
	intMsRASSavedFramedIPAddress = objUser.Get("msRASSavedFramedIPAddress")
	If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
	    WScript.Echo "No static IP address assigned."
	    Err.Clear
	Else
	    If sgn(intMsRASSavedFramedIPAddress) = -1 Then
	        intIP = intMsRASSavedFramedIPAddress
	        WScript.StdOut.Write 256 + (int(intIP/FirstOctet)) & "."
	        intFirstRemainder = intIP mod FirstOctet
	        WScript.StdOut.Write 256 + (int(intFirstRemainder/SecondOctet)) & "."
	        intSecondRemainder = intFirstRemainder mod SecondOctet
	        WScript.StdOut.Write 256 + (int(intSecondRemainder/ThirdOctet)) & "."
	        intThirdRemainder = intSecondRemainder mod ThirdOctet
	        WScript.Echo 256 + (int(intThirdRemainder/FourthOctet))
	    Else
	        intIP = intMsRASSavedFramedIPAddress
	        WScript.StdOut.Write  int(intIP/FirstOctet) & "."
	        intFirstRemainder = intIP mod FirstOctet
	        WScript.StdOut.Write  int(intFirstRemainder/SecondOctet) & "."
	        intSecondRemainder = intFirstRemainder mod SecondOctet
	        WScript.StdOut.Write  int(intSecondRemainder/ThirdOctet) & "."
	        intThirdRemainder = intSecondRemainder mod ThirdOctet
	        WScript.Echo int(intThirdRemainder/FourthOctet)
	    End If
	    
	    objUser.Get "msRADIUSFramedIPAddress"
	    If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
	        WScript.Echo "Static IP address specified but not assigned."
	        Err.Clear
	    Else
	        WScript.Echo "Static IP Address assigned."
	    End If
	 
	End If
	WScript.Echo 
	 
	arrMsRASSavedFramedRoute = objUser.GetEx("msRASSavedFramedRoute")
	If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
	    WScript.Echo "No static Routes specified."
	    Err.Clear
	Else
	    WScript.echo "Static Routes (msRASSavedFramedRoute):"
	    WScript.Echo vbTab & "CIDR 0.0.0.0 Metric"
	    For Each strValue in arrMsRASSavedFramedRoute
	        WScript.echo vbTab & strValue
	    Next
	  
	    objUser.GetEx "msRADIUSFramedRoute"
	    If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
	        WScript.Echo "Static Routes specified but not assigned."
	        Err.Clear
	    Else
	        WScript.echo "Static Routes assigned."
	    End If
	End If
    objRecordSet.MoveNext
Loop

Open in new window

Thanks Rob!!
Hi Rob,

Any luck with this

regards
Chandru
Hi Rob,

Can you help me with the CSV file output?

regards
Chandru
Hi Chandru, I will get to this soon....I have been absolutely flat out this week.....

Rob.
ASKER CERTIFIED SOLUTION
Avatar of RobSampson
RobSampson
Flag of Australia image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Detroit99
Detroit99

not to bring up a dead article. however, this does NOT work, it outputs all the settings, but NOT the username assocated with each setting, seems kind of pointless.
That is incorrect. the username is there on the line "Dial-In settings for LDAP://CN="USERNAME!!"