web-dev-qa-db-ja.com

管理者として実行せずにネットワークドライブにマップするBATファイル

クリックするとネットワークドライブにマップされる.batファイルを作成しようとしています(ネットワークに接続している場合はログイン時に自動的に接続できれば、接続しないでください)

私がこれまでに持っているものは:

Net Use P: "\\server\foldername\foldername"

ユーザーが管理者として右クリックして実行する必要がないように、これを作成する方法はありますか?彼らが.batファイルをクリックするだけでそれがマップされれば、私はそれが欲しいです。

11
Bhetzie

私はちょうどそれを理解しました!私がやったのは、元々持っていたようなバッチファイルを作成したことです:

Net Use P: "\\server\foldername\foldername"

次に、デスクトップに保存し、プロパティを右クリックして、管理者として実行することを確認しました。次に、ファイルをC:\ Users\"TheUser"\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startupにコピーしました

「TheUser」は、追加したいユーザーでした。

6
Bhetzie

以下にtest.batそしてそれはあなたのために働くでしょう:

@echo off

Net Use Z: \\server\SharedFolderName password /user:domain\Username /persistent:yes

/persistent:yesフラグは、ログオン時にこの共有を自動的に再接続するようにコンピューターに指示します。それ以外の場合は、起動するたびにスクリプトを再度実行してドライブをマップする必要があります。

例:

Net Use Z: \\WindowsServer123\g$ P@ssw0rd /user:Mynetdomain\Sysadmin /persistent:yes
21
Sunny
@echo off
Net Use z: /delete
cmdkey /add:servername /user:userserver /pass:userstrongpass

Net Use z: \\servername\userserver /savecred /persistent:yes
set SCRIPT="%TEMP%\%RANDOM%-%RANDOM%-%RANDOM%-%RANDOM%.vbs"

echo Set oWS = WScript.CreateObject("WScript.Shell") >> %SCRIPT%
echo sLinkFile = "%USERPROFILE%\Desktop\userserver_in_server.lnk" >> %SCRIPT%
echo Set oLink = oWS.CreateShortcut(sLinkFile) >> %SCRIPT%
echo oLink.TargetPath = "Z:\" >> %SCRIPT%
echo oLink.Save >> %SCRIPT%

cscript /nologo %SCRIPT%
del %SCRIPT%
2
Henry

「Net Use」経由で管理者権限でマップされたネットワークドライバーを作成しようとしましたが、失敗しました。表示されません。そして、UI経由で追加した場合、再起動後に消えてしまいましたが、今はpowershell経由で作成しました。だから、私はあなたが.batファイルからpowershellスクリプトを実行できると思います、そしてスクリプトは

New-PSDrive -Name "P" -PSProvider "FileSystem" -Root "\\Server01\Public"

追加 -persist最後に、永続的なマップされたネットワークドライブを作成します

New-PSDrive -Name "P" -PSProvider "FileSystem" -Root "\\Server01\Scripts" -Persist

詳細については、 New-PSDrive-Microsoft Docs を参照してください

0
guanyuan he

この.vbsコードは、現在マップされているネットワークドライブで.batファイルを作成します。次に、作成したファイルをマッピングを再作成するマシンに配置して、ダブルクリックします。同じドライブ文字を使用してすべてのマッピングを作成しようとします(文字が使用されている場合、エラーが発生する可能性があります)。この方法は、現在のマッピングのバックアップとしても使用できます。以下のコードを.vbsファイル(Mappings.vbsなど)として保存し、ダブルクリックします。

' ********** My Code **********
Set wshShell = CreateObject( "WScript.Shell" )

' ********** Get ComputerName
strComputer = wshShell.ExpandEnvironmentStrings( "%COMPUTERNAME%" )

' ********** Get Domain 
sUserDomain = createobject("wscript.network").UserDomain

Set Connect = GetObject("winmgmts://"&strComputer)
Set WshNetwork = WScript.CreateObject("WScript.Network")
Set oDrives = WshNetwork.EnumNetworkDrives
Set oPrinters = WshNetwork.EnumPrinterConnections

' ********** Current Path
sCurrentPath = CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName)

' ********** Blank the report message
strMsg = ""

' ********** Set objects 
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objWbem = GetObject("winmgmts:")
Set objRegistry = GetObject("winmgmts://" & strComputer & "/root/default:StdRegProv")

' ********** Get UserName
sUser = CreateObject("WScript.Network").UserName

' ********** Print user and computer
'strMsg = strMsg & "    User: " & sUser & VbCrLf
'strMsg = strMsg & "Computer: " & strComputer & VbCrLf & VbCrLf

strMsg = strMsg & "###  COPIED FROM " & strComputer & " ###" & VbCrLf& VbCrLf
strMsg = strMsg & "@echo off" & vbCrLf

For i = 0 to oDrives.Count - 1 Step 2
    strMsg = strMsg & "Net Use " & oDrives.Item(i) & " " & oDrives.Item(i+1) & " /user:" & sUserDomain & "\" & sUser & " /persistent:yes" & VbCrLf
Next
strMsg = strMsg & ":exit" & VbCrLf
strMsg = strMsg & "@pause" & VbCrLf

' ********** write the file to disk.
strDirectory = sCurrentPath 
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FolderExists(strDirectory) Then
    ' Procede
Else
    Set objFolder = objFSO.CreateFolder(strDirectory)
End if

' ********** Calculate date serial for filename **********
intMonth = month(now)
if intMonth < 10 then
    strThisMonth = "0" & intMonth
else
    strThisMonth = intMOnth
end if
intDay = Day(now)
if intDay < 10 then
    strThisDay = "0" & intDay
else
    strThisDay = intDay
end if
strFilenameDateSerial = year(now) & strThisMonth & strThisDay
    sFileName = strDirectory & "\" & strComputer & "_" & sUser & "_MappedDrives" & "_" & strFilenameDateSerial & ".bat"
    Set objFile = objFSO.CreateTextFile(sFileName,True) 
objFile.Write strMsg & vbCrLf

' ********** Ask to view file
strFinish = "End: A .bat was generated. " & VbCrLf & "Copy the generated file  (" & sFileName & ")  into the machine where you want to recreate the mappings and double-click it." & VbCrLf & VbCrLf 
MsgBox(strFinish)
0