индекс вне диапазона в vbscript

Я работаю над сценарием для проверки общей папки, где я передам расположение папки как переменную в сценарий (пример: Script.vbs D:\share), но когда я запускаю его, я получаю сообщение об ошибке «индекс вне диапазона vbscript 800a0009 "

Сценарий приведен ниже,

Const EVENT_TYPE_ERROR   = 1
Const EVENT_TYPE_WARNING = 2
Const EVENT_TYPE_INFORMATION = 4

Set oParameters = WScript.Arguments
Set WshShell = WScript.CreateObject("WScript.Shell") 

ShareName = oParameters(6)
clog = "Windows Share"
Source = "ShareSecurity"

Dim WshShell
Set objShell = CreateObject("WScript.Shell")
set ObjExec = objShell.exec("icacls """"& ShareName & """"")
Set objStdOut = ObjExec.StdOut

While Not objStdOut.AtEndOfStream
   strLine = objStdOut.ReadLine
   If InStr(strLine,"Everyone") Then
set ObjExec1 = objShell.exec("icacls """"& ShareName & """"")
completeshare = ObjExec1.StdOut.ReadAll()
strCommand = "eventcreate /T Error /ID 422 /L " & Chr(34) & Clog & Chr(34) & " /SO " & source & " /D " & Chr(34) & completeshare & "Network share with Every one access is created and the information is given below" & Chr(34)
WshShell.Run strcommand

   End If
Wend

wscript.quit

person Naresh Kumar    schedule 18.12.2015    source источник
comment
Почему oParameters(6)?   -  person Rowland Shaw    schedule 19.12.2015
comment
Как раз собирался спросить о том же ^^   -  person Nikki9696    schedule 19.12.2015
comment
@Nikki9696 Nikki9696 Потому что они передают имя общего ресурса в сценарий, возможно, в качестве аргумента номер 7? Все-таки 7 - это много, так что вопрос понятен.   -  person user692942    schedule 19.12.2015
comment
Он специально привел пример в своем посте, где других аргументов не было. Если нет других аргументов, то (6) будет вне досягаемости.   -  person Nikki9696    schedule 19.12.2015


Ответы (3)



Const EVENT_TYPE_ERROR   = 1
Const EVENT_TYPE_WARNING = 2
Const EVENT_TYPE_INFORMATION = 4

Dim WshShell, ShareName

Set oParameters = WScript.Arguments
Set WshShell = WScript.CreateObject("WScript.Shell") 

ShareName = oParameters(6)
clog = "Application"
Source = "EventCreate"

Set objShell = CreateObject("WScript.Shell")
set ObjExec = objShell.exec("icacls """& ShareName &"""")
Set objStdOut = ObjExec.StdOut

While Not objStdOut.AtEndOfStream
   strLine = objStdOut.ReadLine
   If InStr(strLine,"Everyone") Then

set ObjExec1 = objShell.exec("icacls """& ShareName &"""")
completeshare = ObjExec1.StdOut.ReadAll()
strCommand = "eventcreate /T Error /ID 425 /L " & Chr(34) & Clog & Chr(34) & " /SO " & source & " /D " & Chr(34) & "Network share with Every one access is created and the information is given below " & Chr(13) & Chr(13) & completeshare & Chr(34)
'strCommand = "eventcreate /T Error /ID 1999 /L APPLICATION /D" & Chr(34) & "Network share with Every one access is created and the information is given below " & Chr(13) & Chr(13) & completeshare & Chr(34)

WshShell.Run strcommand

   End If
Wend

wscript.quit

Это сработало, когда я проанализировал переменную, как показано ниже, script.vbs 1 2 3 4 5 6 D:\share Работало !!!! Спасибо всем за ваш ценный вклад.

person Naresh Kumar    schedule 19.12.2015
comment
Я изменил сценарий. С ShareName = oParameters(0) на ShareName = oParameters(6) - person Naresh Kumar; 19.12.2015

Этот:

ShareName = oParameters(6)

Должно быть так:

ShareName = oParameters(0)
person Nikki9696    schedule 18.12.2015
comment
Это скорее комментарий/ответ, чем ответ. - person user692942; 19.12.2015
comment
Да, я должен использовать oParameters(0), я пытаюсь получить значение из приложения, которое передает параметр 6, теперь оно работает нормально. - person Naresh Kumar; 19.12.2015