ตัวห้อยอยู่นอกช่วงใน vbscript

ฉันกำลังทำงานกับสคริปต์เพื่อตรวจสอบการแชร์โฟลเดอร์โดยที่ฉันจะส่งตำแหน่งโฟลเดอร์เป็นตัวแปรไปยังสคริปต์ (ตัวอย่าง: Script.vbs D:\share)แต่เมื่อฉันเรียกใช้ ฉันได้รับข้อผิดพลาด "subscript out of range 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 เพราะพวกเขาส่งชื่อการแชร์ไปยังสคริปต์เป็นอาร์กิวเมนต์หมายเลข 7 ใช่ไหม 7 ยังมีจำนวนมากดังนั้นจึงเป็นเรื่องที่เข้าใจได้   -  person user692942    schedule 19.12.2015
comment
เขายกตัวอย่างเฉพาะในโพสต์ของเขาโดยที่ไม่มีข้อโต้แย้งอื่นใด หากไม่มีข้อโต้แย้งอื่นแล้ว (6) จะอยู่นอกช่วง   -  person Nikki9696    schedule 19.12.2015


คำตอบ (3)


อ่านและปฏิบัติตามเอกสาร: คุณสมบัติอาร์กิวเมนต์ (WScript Object)< /ก>:

คุณสมบัติ Arguments มีวัตถุ WshArguments (ชุดของอาร์กิวเมนต์ ). ใช้ ดัชนีที่เป็นศูนย์ เพื่อดึงอาร์กิวเมนต์แต่ละรายการจากคอลเล็กชันนี้

ดังนั้น ในกรณีที่ คาดหวัง Script.vbs D:\share (หรือ Script.vbs "D:\share") ให้ใช้ข้อมูลโค้ดถัดไป:

Set oParameters = WScript.Arguments
If oParameters.Count > 0 Then
   ShareName = oParameters(0)
Else
   '   usage prompt and then `Wscript.Quit`, or
   ShareName = "some default value"
End If
person JosefZ    schedule 18.12.2015

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 Worked !!!! ขอขอบคุณทุกท่านสำหรับข้อมูลอันมีค่าของคุณ

person Naresh Kumar    schedule 19.12.2015
comment
ฉันได้แก้ไข script.from 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