Мой сценарий Powershell предполагает, что пользователь, выполняющий сценарий, имеет доступ к определенному удаленному общему ресурсу на файловом сервере. Если они этого не делают, я хочу предложить пользователю "подключить сетевой диск" перед запуском сценария.

Как бы я это сделал?

2 ответа2

0

Вот код PowerShell, который будет делать то, что вы ищете.

$connected = $false
try {
  if ((get-item \\mycomp1\myshare).Name -eq "myshare") { $connected = $true }
} catch {
}
if (-not($connected)) {
  echo "Please map network drive to \\mycomp1\myshare using your domain credentials, and try again"
  exit
}
0

Не уверен, правильно ли я понял вопрос, но я предполагаю, что здесь мы проверяем, сопоставил ли пользователь требуемый общий ресурс, а не имеет ли пользователь доступ к требуемому общему ресурсу.


Я понимаю, что это не совсем ответ на ваш вопрос, но я бы предложил другой подход.

Вы можете попробовать сопоставить общий ресурс в своем скрипте с помощью командлета New-PsDrive и, если необходимо, запросить учетные данные у пользователя с помощью Get-Credential

New-PSDrive -Name TestName -PSProvider FileSystem -Root \\fileshare.local\share -Credential (Get-Credential)

В конце вашего скрипта отсоедините его с помощью командлета Remove-PsDrive .

Общий ресурс будет виден только в контексте скрипта (не отображается в проводнике Windows).


Наконец, вы также можете использовать этот метод, чтобы проверить, отображается ли общий ресурс

    If(Get-PSDrive | Where-Object DisplayRoot -EQ '\\fileshare.local\share'){ "Mappped" } else { "Nope" }

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .