Использование Powershell для проверки пути на сетевом диске

Я не могу заставить командлет Test-Path найти папку на дополнительном диске удаленной системы.

Следующее работает для системного диска.

Test-Path -PATH '\\ServerName\C$\FolderName'

Следующий пример всегда возвращает false.

Test-Path -PATH '\\ServerName\D$\FolderName'

Я проверил путь и его написание. Test-Path найдет путь, если я удалюсь с компьютера и запущу

Test-Path -PATH 'D:\FolderName'

Я должен что-то упустить. Кто-нибудь, пожалуйста, просветите меня?


person Drake    schedule 29.11.2017    source источник
comment
Можете ли вы перейти к тому же пути UNC через проводник Windows? Является ли диск D логическим диском, подключенным к удаленной системе, или это буква диска, которая отображается при входе в систему?   -  person alroc    schedule 29.11.2017


Ответы (3)


Вам нужно указать путь UNC таким образом.

$path = 'filesystem::\\servername\D$\FolderName'
If(Test-path -Path $path){
  Your code....
}

https://blogs.technet.microsoft.com/heyscriptingguy/2013/01/13/powertip-test-the-presence-of-a-remote-share-by-using-powershell/

person Data Slugger    schedule 29.11.2017

Скорее всего, диск d в данном случае является не логическим диском на ServerName, а удаленным диском...

Get-PSDrive CmdLet вернет сведения о различных дисках, доступных для вашей машины.

Get-PSDrive -PSProvider FileSystem вернет, как вы уже догадались, файловую систему дисков! Обратите особое внимание на свойство Root, так как оно покажет, является ли рассматриваемый диск логическим или удаленным.

Вам нужно запустить этот CmdLet при входе в систему, или, в качестве альтернативы, вы можете использовать Invoke-Command примерно так:

Invoke-Command -ComputerName "ServerName" -Credential $(Get-Credential) -ScriptBlock {
    Get-PSDrive -PSProvider FileSystem
}
person gvee    schedule 29.11.2017
comment
@ALROC: Я не могу использовать UNC для буквы диска JMONTEROHN: Я попробовал ваше предложение. Это не позволило Test-Path найти папку. GVEE: я подключился к системе удаленно и использовал Get-PSDrive -PSProvider FileSystem. Диск D - это тот, который я пытаюсь проверить. D указан с КОРНЕМ D:\ и PROVIDER файловой системы. Я обнаружил, что диск на самом деле флэш-накопитель. Я не уверен, что это имеет значение. - person Drake; 29.11.2017

Вы упомянули в одном из комментариев, что это флешка. Флэш-накопители административно не используются Windows, поэтому такой общий ресурс не существует.

Если вы создадите папку на флэш-накопителе, например d:\test, и поделитесь ею как «test», вы можете указать тестовый путь к «\ servername\test» и получить хороший результат.

person Mwuanno    schedule 08.01.2020