1

此 Windows Installer 程序包存在问题。作为设置的一部分运行的程序未按预期完成。联系您的支持人员或软件包供应商

嘿,我写了这个脚本删除了计算机的共享,但是当我运行我的脚本时,它重复了相同的 wscript.echo 说明正在删除的共享。为什么我的代码在运行时永远不会结束我该如何解决。

我的功能:

'The function that is called to run the command Line that deletes a specific share from a pc
Function DeleteThisShare(Share)
    Dim objShell
    'Logging The deleted Approved Shares
    objDeletedFile.WriteLine (Now & " - Removed share " & Trim(Share))
    DeleteThisShare = "net share " & chr(34) & Share & chr(34) &" /DELETE"
    Wscript.echo DeleteThisShare
    Set objShell = CreateObject("Wscript.Shell")
    objShell.Run DeleteThisShare
End Function

我的循环:

'Compares The UnApproved Shares to the Current Shares
For Each objItem In colItems
    Dim StrNonUnapprovedShares, Item
    StrCurrentShares = objItem.name

    if instr(AdminShares,lcase(objitem.name)) > 0 or mid(objitem.name,2,1) = "$" or left(lcase(objitem.name),10) = "pkgsvrhost" then
        'Skipping known admin share
    Else
            For each Item in arrUnApprovedLines
            If Lcase(Item) = Lcase(strCurrentShares) Then
                StrNonUnapprovedShares = (StrNonUnapprovedShares & strCurrentShares & vbCrLf)
            End If
        Next
    End If
Next


Dim notUnapprovedShares, notUnapprovedLines
notUnapprovedLines = StrNonUnapprovedShares
notUnapprovedLines = Split(notUnapprovedLines, vbCrLf)

Dim y, Line2

For y = 0 to uBound(notUnapprovedLines)
    Line2 = Trim(notUnapprovedLines(y))
    If len(Line2) > 0 Then
        DeleteThisShare(Line2)
    End If
Next
4

2 回答 2

1

我认为问题是由于使用函数名作为变量引起的。你正在编译的 VB 没问题,但我认为 VBScript 不能以同样的方式识别它。使用单独的变量名代替DeleteThisShare,例如strDeleteThisShare

于 2013-11-14T21:22:44.570 回答
0

如果我不得不猜测那是因为您通过让脚本回显该DeleteThisShare函数来创建递归循环。该函数到达该行并在它能够继续之前再次被调用。

尝试只为函数的结果赋值,并使用局部变量来存储任何其他调试/临时值。

于 2013-11-14T21:21:47.907 回答