2016-07-15 1 views
0

Je peux obtenir que chacun fonctionne seul, mais je n'arrive pas à les faire fonctionner ensemble, le script d'ouverture de session utilise le strArg = pour appeler le fichier HTA, le Le fichier HTA génère une fenêtre de mot de passe. Lorsque le script d'ouverture de session exécute les erreurs de fichier HTA sur les lignes 31 et 106.Le script de notification de mot de passe soulève une erreur de type "incompatibilité de type" pour le nombre de jours restants

Je sais que la question se trouve dans la strArg, je ne peux pas comprendre. Il devrait informer les utilisateurs finaux aux 13 jours avant la date d'expiration. Toute aide est la bienvenue. À l'heure actuelle, que le script est maintenant, je reçois une erreur avec la partie de fichier HTA:

Line: 31 and 106
Error: Type Mismatch 'strARG'
code: 0

Je l'ai ouvert la question dans le lien ci-dessous, mais ces suggestions ne résout pas le problème.

vbscript statement mismatch sring failing

Dim oDomain 
Dim oUser 
Dim maxPwdAge 
Dim numDays 
Dim warningDays 

warningDays = 13 

Set LoginInfo = CreateObject("ADSystemInfo") 
Set objUser = GetObject("LDAP://" & LoginInfo.UserName & "") 
strDomainDN = UCase(LoginInfo.DomainDNSName) 
strUserDN = LoginInfo.UserName 

Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000 
intUserAccountControl = objUser.Get("userAccountControl") 
If intUserAccountControl And ADS_UF_DONT_EXPIRE_PASSWD Then 
    'WScript.Echo "The password does not expire." 
Else 
    Set oDomain = GetObject("LDAP://" & strDomainDN) 
    Set maxPwdAge = oDomain.Get("maxPwdAge") 

    ' Calculate the number of days that are held in this value. 
    numDays = CCur((maxPwdAge.HighPart * 2^32) + _ 
        maxPwdAge.LowPart)/CCur(-864000000000) 
    'WScript.Echo "Maximum Password Age: " & numDays 

    Set oUser = GetObject("LDAP://" & strUserDN) 

    whenPasswordExpires = DateAdd("d", numDays, oUser.PasswordLastChanged) 
    fromDate = Date 
    daysLeft = DateDiff("d", fromDate, whenPasswordExpires) 

    'WScript.Echo "Password Last Changed: " & oUser.PasswordLastChanged 

    If (daysLeft < warningDays) And (daysLeft > -1) Then 
    strCMD = "\\domain\netlogon\PwExpChk\PWReminder.hta" & " -" & intDaysRemaining 
    Set wshShell = CreateObject("WScript.Shell") 
    RC = WshShell.Run(strCMD , 0, False) 
    End If 
End If 

Set oUser = Nothing 
Set maxPwdAge = Nothing 
Set oDomain = Nothing 
Set wshShell = Nothing 

Le fichier HTA:

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> 
<title>Password Reminder</title> 
<hta:application 
    border="thin 
    borderstyle="normal" 
    caption="Password Reminder" 
    contextmenu="yes" 
    maximizebutton="Yes" 
    minimizebutton="no" 
    navigable="yes" 
    scroll="no" 
    selection="yes" 
    showintaskbar="yes" 
    singleinstance="yes" 
    sysmenu="Yes" 
    WINDOWSTATE="normal" 
    id="objPasswordHTA"> 

<script language="vbscript"> 
Sub Window_onLoad 
    strArg = 13 

    arrCommands = Split(objPasswordHTA.commandLine, "-") 
    If UBound(arrCommands) > 0 Then 
    strArg = arrCommands(UBound(arrCommands)) 
    End If 

    'setup the window size depending on how many days remain 
    strArg = strArg * 1 
    If strArg <= 5 Then 
    self.MoveTo 200,50 
    window.ResizeTo 1000,850 

    Set wshShell = CreateObject("WScript.Shell") 
    wshShell.AppActivate "Password Reminder" 
    wshShell.SendKeys "% x" ' ALT+SPACE+X = windows maximize, must be enabled on hta 
          ' ALT+SPACE+N = windows minimize, must be enabled on hta 
          ' ALT+SPACE+R = windows restore 
    ElseIf strArg <= 10 Then 
    self.MoveTo 200,50 
    window.ResizeTo 900,750 
    Else 
    self.MoveTo 200,50 
    window.ResizeTo 750, 575 
    End If 
End Sub 
</script> 
</head> 

<body> 
<table cellspacing="0" cellpadding="0" width="100%" bgcolor=Silver> 
    <tbody> 
    <tr> 
     <td valign="top" width="80%"> 
     <p style="PADDING-TOP: 8px; PADDING-LEFT: 8px; margin-top: 0px"> 
     <font face="Verdana" color="White" style="font-size: 11pt"><strong>Company name</strong></font><br /> 
     <font face="Verdana" color="Black" size="5"><strong>Password Reset Reminder</strong></font> 
     <p> 
     </td> 
     <td valign="bottom" width="50%"> 
     <img src='\\domain\netlogon\PwExpChk\logo.jpg' width='451' height='170' style="vertical-align:bottom;"> 
     </td> 
    </tr> 
    </tbody> 
</table> 

<span id=DataArea></span> 

<script language="vbscript"> 
Set wshNetwork = reateObject("WScript.Network") 
Set wshShell  = CreateObject("Wscript.Shell") 

'TableMsgs: 
strDaysLeftMsg1 = "We have detected that your password will expire in" 
strDaysLeftMsg2 = "day(s) or less." 
strPWCriteriaMsg = "<BR>Password criteria:" & _ 
        "<BR> - 8 characters or longer" & _ 
        "<BR> - At least one alpha, one numeric, and one special character" & _ 
        "<BR> - Cannot be an old password" & _ 
        "<BR> - Passwords ARE CaSe SeNsItIvE!!!" & _ 
        "<BR>" 

strArg = 13 
arrCommands = Split(objPasswordHTA.commandLine, "-") 
If UBound(arrCommands) > 0 Then 
    strArg = arrCommands(UBound(arrCommands)) 
    strArg = strArg * 1 
End If 
intDaysLeftonPW = strArg 

'Generate the HTML for the table 
strTableHTML = "<TABLE align=center width=75%>" 

If intDaysLeftonPW <= 5 Then 
    strTableHTML = strTableHTML & "<font size=5>" 
    strTableHTML = strTableHTML & "<TR bgcolor=Red><TD>&nbsp;</TD></TR>" 
    strTableHTML = strTableHTML & "<TR><TD><font size=5>" & strDaysLeftMsg1 & "<font color=Red><b> " & intDaysLeftonPW & _ 
       "</b></font> " & strDaysLeftMsg2 & "</font>" & _ 
       "<BR>" & _ 
       "<BR>Please reset your password now to avoid getting locked out or expiring. " & _ 
       "The only way to unlock an expired password is to contact Help Desk. " & _ 
       "A typical expired password request takes 15-20 minutes.</TD></TR>" 
    strTableHTML = strTableHTML & "<TR bgcolor=Red><TD>&nbsp;</TD></TR>" 
    strTableHTML = strTableHTML & "<TR><TD>" & strPWCriteriaMsg & "</TD></TR>" 
    strTableHTML = strTableHTML & _ 
       "<TR><TD><BR><font color=red>To reset password:</font>" & _ 
       "<BR>1. Press CTRL+ALT+DELETE" & _ 
       "<BR>2. Select " & Chr(34) & "Change a Password..." & Chr(34) & _ 
       "<BR>3. Complete the password reset wizard." & _ 
       "<BR>" & _ 
       "<BR>Caution: There are no grace logons. Expired passwords will not be allowed onto " & _ 
       "the network.</TD></TR>" 
    strTableHTML = strTableHTML & "</font>" 
ElseIf intDaysLeftonPW <= 10 Then 
    strTableHTML = strTableHTML & "<TR bgcolor=yellow><TD>&nbsp;</TD></TR>" 
    sTRTableHTML = strTableHTML & _ 
       "<TR><TD>" & strDaysLeftMsg1 & "<font color=Red><b> " & intDaysLeftonPW & _ 
       "</b></font> " & strDaysLeftMsg2 & "</TD></TR>" 
    strTableHTML = strTableHTML & "<TR bgcolor=Yellow><TD>&nbsp;</TD></TR>" 
    strTableHTML = strTableHTML & "<TR><TD>" & strPWCriteriaMsg & "</TD></TR>" 
    strTableHTML = strTableHTML & _ 
       "<TR><TD><BR>To reset password:" & _ 
       "<BR>1. Press CTRL+ALT+DELETE" & _ 
       "<BR>2. Select " & Chr(34) & "Change a Password..." & Chr(34) & _ 
       "<BR>3. Complete the password reset wizard." & _ 
       "<BR>" & _ 
       "<BR>Tip: Try to avoid resetting passwords on Friday and reset early in " & _ 
       "the week. This will give you more opportunities to sign in and get used to the new password " & _ 
       "so you do not forget over the weekend.</TD></TR>" 
Else 
    strTableHTML = strTableHTML & "<TR bgcolor=Green><TD>&nbsp;</TD></TR>" 
    strTableHTML = strTableHTML & _ 
       "<TR><TD>" & strDaysLeftMsg1 & "<font color=Red><b> " & intDaysLeftonPW & _ 
       "</b></font> " & strDaysLeftMsg2 & "</TD></TR>" 
    strTableHTML = strTableHTML & "<TR bgcolor=Green><TD>&nbsp;</TD></TR>" 
    strTableHTML = strTableHTML & "<TR><TD>" & strPWCriteriaMsg & "</TD></TR>" 
    strTableHTML = strTableHTML & _ 
       "<TR><TD><BR>Please press CTRL+ALT+DELETE and select Change a Password..." & _ 
       "</TD></TR>" 
End If 

'Add the dynamic HTML to the table/HTA 
strTableHTML = strTableHTML & "</TABLE>" 
DataArea.InnerHTML = strTableHTML 
</script> 
</body> 
</html> 
+0

Possible duplication de [vbscript statement discordance sring failing] (http://stackoverflow.com/questions/38386289/vbscript-statement-mismatch-sring-failing) – dbmitch

+0

J'ai passé 12 heures pour les 3 derniers jours et Je peux le faire fonctionner pas juste, la façon dont le VBscript est maintenant l'erreur de chaîne de type Mismatch apparaît pour le fichier HTA qui est dans la partie suivante: strArg = 13 arrCommands = Split (objPasswordHTA.commandLine, "- ") Si UBound (arrCommands)> 0 alors strArg = arrCommands (Ubound (arrCommands)) Fin Si –

+0

En d'autres termes, je ne peux pas définir correctement les arguments. –

Répondre

0

Il est votre coupable:

strCMD = "\\domain\netlogon\PwExpChk\PWReminder.hta" & " -" & intDaysRemaining 
'                ~~~~~~~~~~~~~~~~

Vous ne définissez intDaysRemaining nulle part dans votre code, de sorte que la variable est vide, ce qui signifie que votre ligne de commande ressemble à ceci:

\\domain\netlogon\PwExpChk\PWReminder.hta -

Fractionnement ce commandline à - vous donne un tableau avec une chaîne vide dans le dernier champ, qui à son tour déclenche l'erreur que vous avez observé lorsque vous essayez de multiplicate une chaîne vide avec 1.

Démonstration:

>>>cmdline = "\\domain\netlogon\PwExpChk\PWReminder.hta -" 
>>>a = Split(cmdline, "-") 
>>>v = a(UBound(a)) 
>>>WScript.Echo "_" & v & "_" 
__ 
>>>i = v * 1 
Type mismatch (0xD)

vous avez repéré tout de suite si vous aviez ajouté Option Explicit à votre VBScript, ou tout au moins pris la peine de faire écho dans la ligne de commande de votre HTA lors du débogage (MsgBox objPasswordHTA.commandLine).