我正在尝试使用Invoke-Command在远程计算机上映射网络驱动器:
Invoke-Command -ComputerName servername -ScriptBlock { net use L: \\server\folder password /user:login}
但它不起作用。简单的NET USE也不起作用。我也试过Powershell: how to map a network drive with a different username/password
那么,如何在远程计算机上运行“cmd命令”NET USE?或者如何使用PowerShell映射网络驱动器?谢谢
修改:
当我使用
时Invoke-Command -ComputerName servername -ScriptBlock { (New-Object -ComObject WScript.Network).MapNetworkDrive
("M:", "\\server\folder", $false, "login", "password") }
它将创建一些只能从远程计算机上看到的“影子”磁盘:
Invoke-Command -ComputerName servername -ScriptBlock { NET USE }
可以使用以下命令删除:
Invoke-Command -ComputerName servername -ScriptBlock { NET USE /d /y M: }
但是当我连接到该远程服务器时,我看不到,删除或添加映射的光盘:(
答案 0 :(得分:1)
我必须使用预定任务来完成。
创建一个标准的bat文件,其中包含映射文本。
`
net use R: /Delete /y
net use R: "\\SERVERNAME\R" /persistent:yes
net use S: /Delete /y
net use S: "\\SERVERNAME\S" /persistent:yes
`
使用预定Taks作业信息创建XML
`
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.3" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
<RegistrationInfo>
<Date>2016-03-12T14:19:18.8527017</Date>
<Author>DOMAIN\USER</Author>
</RegistrationInfo>
<Triggers />
<Principals>
<Principal id="Author">
<GroupId>S-1-5-32-544</GroupId>
<RunLevel>HighestAvailable</RunLevel>
</Principal>
</Principals>
<Settings>
<MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
<DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
<StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
<AllowHardTerminate>true</AllowHardTerminate>
<StartWhenAvailable>false</StartWhenAvailable>
<RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
<IdleSettings>
<StopOnIdleEnd>true</StopOnIdleEnd>
<RestartOnIdle>false</RestartOnIdle>
</IdleSettings>
<AllowStartOnDemand>true</AllowStartOnDemand>
<Enabled>true</Enabled>
<Hidden>false</Hidden>
<RunOnlyIfIdle>false</RunOnlyIfIdle>
<DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
<UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine>
<WakeToRun>false</WakeToRun>
<ExecutionTimeLimit>P3D</ExecutionTimeLimit>
<Priority>7</Priority>
</Settings>
<Actions Context="Author">
<Exec>
<Command>I:\Scripts\Schedualed Taks XML\Maps.bat</Command>
</Exec>
</Actions>
</Task>
`
使用批处理文件创建任务(schtasks.exe)
`
@echo off
if exist "exists.txt" del "exists.txt"
for /F %%A in (SNL.txt) do (
Echo %%A
schtasks.exe /create /f /tn "Map Drives" /XML "I:\Scripts\Schedualed Taks XML\DriveMaps.xml" /s %%A
)
pause
`
注意: SNL.txt是您希望创建任务的计算机列表。
然后使用批处理文件来运行任务(如果需要,可以创建一个批处理文件)
`
@echo off
if exist "exists.txt" del "exists.txt"
for /F %%A in (SNL.txt) do (
Echo %%A
schtasks.exe /run /s %%A /tn "Map Drives"
)
Pause
`
答案 1 :(得分:0)
试试这个:
Invoke-Command -ComputerName servername -ScriptBlock {
(New-Object -ComObject WScript.Network).MapNetworkDrive(
"L:", "\\server\share", $false, "login", "password"
)
}
编辑:当我运行以下命令时
Invoke-Command -ComputerName ServerB -ScriptBlock {
(New-Object -ComObject WScript.Network).MapNetworkDrive(
"L:", "\\ServerC\share", $true, "DOMAIN\UserB", "password"
)
}
DOMAIN\UserA
上ServerA
,\\ServerC\share
L:
ServerB
上的ServerB
就好了。当我以DOMAIN\UserA
身份登录{{1}}时,我可以看到驱动器,但收到警告,并非所有网络驱动器都可以重新连接。这是很自然的,因为UserA和UserB有不同的密码。当我点击驱动器时,系统会询问DOMAIN \ UserB的凭据,当我输入密码时,我可以正常访问该共享。
答案 2 :(得分:0)
根据This文章,如果没有CredSSP,它是不可能的? 我试图做同样的事情=(