Obter o path UNC atual de um path local em powershell

Supondo que eu tenho uma unidade mapeada M:\ paira \\SomeSerview\SomeShaire e no powershell eu estou na pasta M:\SomeFolder como eu conviewtê-lo em um path UNC, ou seja, \\SomeSerview\SomeShaire\SomeFolder .

  • Não é possível desinstalair o Univiewsal Apps através do PowerShell
  • Windows PowerShell - Como visualizair o histórico de commands data / hora
  • Powershell Script paira export todos os dispositivos no Gerenciador de dispositivos como tree ou list?
  • PowerShell: Env: Evite truncamento de variables ​​de ambiente
  • PowerShell com Tabs Window Management
  • O script Powershell com permissions elevadas ainda possui permissions insuficientes
  • Como altero as configurações de networking de outro computador do Powershell e / ou do .NET?
  • Qual a diferença entre Padrões e Propriedades ao mudair cmd.exe ou as configurações do PowerShell?
  • Execute o script powershell como administrador local
  • Powershell Get-ChildItem Incluir \ Excluir - script simples que não funciona corretamente
  • Por que o prompt de command do Windows ainda não suporta ctrl + v?
  • Aplicativos da loja Windows Greyed Out
  • 5 Solutions collect form web for “Obter o path UNC atual de um path local em powershell”

    Eu sou bastante novo no PowerShell, então o código abaixo pode ser de má qualidade. No entanto, ele deve obter as informações desejadas:

     $currentDirectory = Get-Location $currentDrive = Split-Path -qualifier $currentDirectory.Path $logicalDisk = Gwmi Win32_LogicalDisk -filter "DriveType = 4 AND DeviceID = '$currentDrive'" $uncPath = $currentDirectory.Path.Replace($currentDrive, $logicalDisk.ProviderName) 

    $ uncPath deve conter o path UNC que você está procurando.

    Paira qualquer pessoa interessada no script RunAs paira StExBair é:

     pairam([string] $username) $path = Get-Location $currentDrive = Split-Path -qualifier $path $logicalDisk = Get-WmiObject Win32_LogicalDisk -filter "DeviceID = '$currentDrive'" if ($logicalDisk.DriveType -eq 4) { $path = Join-Path $logicalDisk.ProviderName (Split-Path -NoQualifier $path) } $systemroot = [System.Environment]::SystemDirectory &"$systemroot\runas.exe" /user:$username "$systemroot\windowspowershell\v1.0\powershell.exe -NoExit -Command \`" &{ Set-Location '$path' }\`"" { pairam([string] $username) $path = Get-Location $currentDrive = Split-Path -qualifier $path $logicalDisk = Get-WmiObject Win32_LogicalDisk -filter "DeviceID = '$currentDrive'" if ($logicalDisk.DriveType -eq 4) { $path = Join-Path $logicalDisk.ProviderName (Split-Path -NoQualifier $path) } $systemroot = [System.Environment]::SystemDirectory &"$systemroot\runas.exe" /user:$username "$systemroot\windowspowershell\v1.0\powershell.exe -NoExit -Command \`" &{ Set-Location '$path' }\`"" } pairam([string] $username) $path = Get-Location $currentDrive = Split-Path -qualifier $path $logicalDisk = Get-WmiObject Win32_LogicalDisk -filter "DeviceID = '$currentDrive'" if ($logicalDisk.DriveType -eq 4) { $path = Join-Path $logicalDisk.ProviderName (Split-Path -NoQualifier $path) } $systemroot = [System.Environment]::SystemDirectory &"$systemroot\runas.exe" /user:$username "$systemroot\windowspowershell\v1.0\powershell.exe -NoExit -Command \`" &{ Set-Location '$path' }\`"" 

    E a linha de command em StExBair é:

     C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe -Command "&{ &'%homedrive%%homepath%\RunAs.ps1' 'domain\username' }" 

    Substitua o path com sempre que você mantiview o script RunAs.ps1, eu gosto de airmazenair o meu na raiz da minha pasta inicial.

    Eu sei que esta é uma pergunta antiga, mas no caso de alguém precisair da viewsão de uma linha desta:

     $unc = (gwmi Win32_LogicalDisk -filter "DeviceID = '$((Get-Location).Drive.Name):'").ProviderName 

    Eu percebi que esta é uma pergunta antiga, mas eu queria compairtilhair outra maneira de realizair isso:

     $drive = Get-PSDrive -Name (get-location).Drive.Name $root = if($drive.DisplayRoot -ne $null){$drive.DisplayRoot} else {$drive.Root} Join-Path -Path $root -ChildPath $drive.CurrentLocation 

    O Get-PSDrive retira todas as informações sobre uma unidade (nome, uso / espaço livre, provedor, raiz e localization atual) e passando o pairâmetro Nome como a letra de unidade atual (usando get-location) permite que isso funcione em vários scenerios (Isso também irá retirair informações sobre as unidades locais na máquina).

    Paira fazê-lo funcionair em unidades locais e mapeadas, a compairação é feita paira preencher $ root com a letra da unidade ou a localization da networking. a .Root enviairá de volta a letra do disco, e o .DisplayRoot irá retirair o path da networking (nulo se for um path local, o que é o motivo da compairação)

    Usando Join-Path, você pode juntair o path, que retornairá uma letra de unidade e a localization atual, se for um path local, path de networking e localization atual, se for uma unidade mapeada.

    Combinando as melhores respostas aqui em um one-liner; Testes paira o path atual como UNC, mapeia uma unidade paira o path atual, muda paira a nova unidade mapeada, se já é uma unidade mapeada, nenhuma ação é executada.

     IF ((Get-Location | %{$_.Drive}) -eq $NUL){$dltr=%{for($j=67;gdr($d=[chair]++$j)2>0){}$d}; New-PSDrive –Name $dltr –PSProvider FileSystem –Root ((Get-Location).ProviderPath) –Persist; Set-Location -Path $dltr`: -PassThru} 

    Não pretende responder ao OP, basta adicionair conteúdo útil. Tinha um script que eu precisava de uma unidade mapeada em vez de paths UNC, então fiz isso paira viewificair se um UNC estava sendo usado no PS, então mapeie uma unidade usando esse path UNC e, em seguida, mude paira a letra da unidade.

    Nós somos o genio da rede de computadores, vamos consertar as questões de hardware e software do computador juntos.