クリックするとネットワークドライブにマップされる.batファイルを作成しようとしています(ネットワークに接続している場合はログイン時に自動的に接続できれば、接続しないでください)
私がこれまでに持っているものは:
Net Use P: "\\server\foldername\foldername"
ユーザーが管理者として右クリックして実行する必要がないように、これを作成する方法はありますか?彼らが.batファイルをクリックするだけでそれがマップされれば、私はそれが欲しいです。
私はちょうどそれを理解しました!私がやったのは、元々持っていたようなバッチファイルを作成したことです:
Net Use P: "\\server\foldername\foldername"
次に、デスクトップに保存し、プロパティを右クリックして、管理者として実行することを確認しました。次に、ファイルをC:\ Users\"TheUser"\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startupにコピーしました
「TheUser」は、追加したいユーザーでした。
以下に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
@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%
「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 を参照してください
この.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)