net use * /delete /y doesn't resolve error "New-PSDrive : Multiple connections to a server ...." net use * /delete /y doesn't resolve error "New-PSDrive : Multiple connections to a server ...." powershell powershell

net use * /delete /y doesn't resolve error "New-PSDrive : Multiple connections to a server ...."


I found workaround to this problem that seem to always work. You need to change the computer name, but since this will also stop working eventually just as with server name and IP, you need the option to specify arbitrary number of new computer names resolving to the same computer.

The obvious choice is hosts file. You can add any number of aliases to the IP to it. Afterwards, use the alias that isn't already blocked.

==== EDIT ===

Here is the handy function:

<#  Use unique hostname for this script by altering hosts table to handle situation with multiple different scripts     using this share with different creds which leads to following Windows error:     Multiple connections to a server or shared resource by the same user, using more than one user name, are not allowed.     Disconnect all previous connections to the server or shared resource and try again    #require -RunAsAdministrator    #require -module PsHosts    https://stackoverflow.com/a/29059100/82660 #>function Set-UncHostnameAlias($UncPath) {    $remote_hostname = $UncPath -split '\\' | ? {$_} | select -First 1    $remote_alias    = (Split-Path -Leaf $MyInvocation.ScriptName) -replace '.ps1$'    $hostEntry = Get-HostEntry $remote_alias* -ea 0 | ? { $_.Comment -eq $remote_hostname } | select -First 1    if (!$hostEntry) {        $remote_alias += (Get-HostEntry $remote_alias*).Count + 1        Write-Verbose "Adding alias $remote_alias => $remote_hostname"        $remote_ip = Test-Connection -ComputerName $remote_hostname -Count 1  | % IPV4Address | % IPAddressToString        Add-HostEntry -Name $remote_alias -Address $remote_ip -Force -Comment $remote_hostname | Out-Null    } else {         $remote_alias =  $hostEntry.Name        Write-Verbose "Using $remote_hostname alias: $remote_alias"    }    $UncPath.Replace("\\$remote_hostname", "\\$remote_alias")}

Do this on the start of the script:

$PathAlias = Set-UncHostnameAlias $Path

and used aliased path afterwards with the New-PSDrive. This works always, even if some other scripts on the same system use different credentials for the same server.


I was having the same issue with local scripts and found this to be a simple solution. The Get-CimInstance returns all of the mapped network connections, then just pass that to the net use /delete /y command.

$shareDrives = Get-CimInstance -ClassName Win32_NetworkConnectionif ($shareDrives -ne $null){    foreach ($shareDrive in $shareDrives)    {        Write-Host "`nRemoving mapped drive $($shareDrive.LocalName)"        net use $shareDrive.LocalName /delete /y    }}else{    Write-Host "`nNo mapped drives to remove!" }


Using the FQND worked for me..

How to find out FQDN??

ping -a -n 1

Pinging [This is the FQND!!!!] [192.168.0.1] with 32 bytes ofReply from 192.168.0.1: bytes=32 time=1ms TTL=128