Powershell:使用SYSTEM用户创build和断开networking映射驱动器

我需要用SYSTEM用户映射networking驱动器,我创build了一个由计划任务运行的PS1,第一部分成功映射驱动器:

$net = new-object -ComObject WScript.Network $net.MapNetworkDrive("y:", "\\SAN_SERVER\folder1", $false, "domain\service_user", "password") 

映射后,一堆东西正在发生,复制文件等

在脚本结尾,映射的驱动器需要断开连接:

 & 'D:\Scripts\PsExec64.exe' -s cmd /c "net use y: /delete /yes" 

这个命令工作,如果我从我的用户帐户手动运行它(我需要启动PS作为pipe理员),但它不工作从计划任务中的脚本,我使用PsExec64.exe,因为我发现,因为networking驱动器映射与域\用户,它只能断开与域/ service_user除非我们使用PsExec64.exe,有​​没有办法断开驱动器使用不同的credintials?

我暂时假定您有兼容性/遗留原因,不能使用Powershell脚本中的原生New-PSDrive cmdlet。

那么既然你已经在使用WScript.Network的传统MapNetworkDrive ,那你为什么net use psexec来使用net use而不是使用它的伙伴RemoveNetworkDrive呢?

考虑不使用驱动器号。 甚至在2.0版本的PowerShell中,在使用文件系统时,可以让您广泛使用UNCpath。 所以你可以基本上直接地址,没有PSDrive或驱动器号。 那么你不需要映射任何东西,也不需要去映射它们。

 #as the service account Set-Location \\SAN_SERVER\folder1 #this is the same as net use y: \\SAN_SERVER\folder1;cd y: 

然后用相对path来做文件操作。 您还可以将服务器名称和文件夹path分配给variables,以便您可以使用"$server\$folderpath\"代替驱动器号。

我find了答案,这是非常愚蠢的..

 & net use y: /delete /yes 

这从一个计划任务由系统运行时工作..只需要添加&,显示我缺乏PS技能..哦,男孩