0

問題はオンライン (objNetwork.MapNetworkDrive CStr(colDrives.Item(i)), CStr(newMappingArray(j)), TRUE) で、スクリプトが実際にネットワーク ドライブの再接続を試みます。文字列として検出されないために失敗しますか?

パスとドライブ文字の周りに「」を付けただけで同じコードを使用しようとしましたが、動作するので、ここからどこに行くべきかわかりません..

コードの説明 共有名のリストを取得し、リモート パスのいずれかがドライブにマップされているかどうかを確認します。それらが存在する場合、それはそれらを通過します。それらをマップ解除し、同じドライブ文字を使用して、新しいパス参照 (現在ログインしている資格情報を使用) を使用してそれらを再マップします。

以下のコード

On Error Resume Next

''''''''''''''''''''''''''''' ARRAY SETUP '''''''''''''''''''''''''''''
DIM oldMappingArray(5)
oldMappingArray(0) = "\\DDCSHRNASP02\u_amr_project"
oldMappingArray(1) = "\\DDCSHRNASP02\U_AMS_Deployment"
oldMappingArray(2) = "\\DDCSHRNASP02\u_corp_share"
oldMappingArray(3) = "\\DDCSHRNASP02\u_dcwb_control_room"
oldMappingArray(4) = "\\DDCSHRNASP02\u_dis"
oldMappingArray(5) = "\\DDCSHRNASP02\u_dis15"

oldMappingArrayLength = UBound(oldMappingArray)


DIM newMappingArray(5)
newMappingArray(0) = "\\EUCPRDNAS02\u_amr_project"
newMappingArray(1) = "\\EUCPRDNAS02\U_AMS_Deployment"
newMappingArray(2) = "\\EUCPRDNAS02\u_corp_share"
newMappingArray(3) = "\\EUCPRDNAS02\u_dcwb_control_room"
newMappingArray(4) = "\\EUCPRDNAS02\u_dis"
newMappingArray(5) = "\\EUCPRDNAS02\u_dis15"

newMappingArrayLength = UBound(newMappingArray)


''''''''''''''''''''''''''''' WMI SETUP '''''''''''''''''''''''''''''
Set objNetwork = CreateObject("Wscript.Network")
Set colDrives = objNetwork.EnumNetworkDrives
colDrivesLength = colDrives.count
wscript.echo colDrivesLength

''''''''''''''''''''''''''''' MAIN LOOP '''''''''''''''''''''''''''''
For i=0 to colDrivesLength-1 Step 2
    'Gets every other in the array, making i equal to a PATH
wscript.echo i
For j=0 to oldMappingArrayLength
    'count through all of the old path names
    wscript.echo j
    wscript.echo "Drive Letter = " + colDrives.Item(i) 'Drive letter
    wscript.echo "Current Path = " + colDrives.Item(i+1) 'Path of the Drive Above

    wscript.echo "Tested Path = " + oldMappingArray(j) 'Path Currently Testing

    if colDrives.Item(i+1) = oldMappingArray(j) then
        'If the drive path from enumeration is equal to the old drive mapping array...
        wscript.echo "Item being added -> " + colDrives.Item(i)
        wscript.echo "to be mapped ---> " + newMappingArray(j)

        objNetwork.RemoveNetworkDrive colDrives.Item(i), True, True
        WScript.sleep 3000 'Wait 1.0 seconds
        objNetwork.MapNetworkDrive CStr(colDrives.Item(i)), CStr(newMappingArray(j)), TRUE
        exit For 'ends the oldMappingArrayLength loop if a match was found
    End If
Next
Next

Set objNetwork = Nothing
4

1 に答える 1

0

テストしていませんでしたが、これはドライブレターをマッピングするための時間のかかる複雑なプロセスのように見えるので、頭を壊すつもりはありませんが、wscript.echo "to be maps ---> " + newMappingArray(j) でなければなりません犯人。+ は VbScript の連結ではありませんが、& は連結です。

したがって、+ を使用するすべての場所で & になる必要があります。

次の方法を使用して配列を構築することにより、スクリプトを短縮できます

oldMappingArray = ("u_amr_project", "U_AMS_Deployment", ...)

そして、文字列全体が必要な場合は使用します

"\\DDCSHRNASP02\" & oldMappingArray(j)
于 2012-05-17T19:33:02.177 に答える