使用 powershell,如何检查特定的远程文件共享是否可用?

使用 powershell,如何检查特定的远程文件共享是否可用?

我的 Powershell 脚本假定运行脚本的用户可以访问文件服务器上的特定远程共享。如果没有,我想在运行脚本之前先提示用户“映射网络驱动器”。

我该如何做呢?

答案1

不确定我是否正确理解了这个问题,但我在这里假设我们在这里检查用户是否已映射所需的共享,而不是用户是否有权访问所需的共享。


我意识到这并没有准确回答你的问题,但我建议采取不同的方法。

您可以尝试使用 New-PsDrive cmdlet 在脚本中映射共享,并根据需要提示用户输入凭据Get-Credential

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

在脚本的末尾使用Remove-PsDrivecmdlet 与其分离。

映射共享仅在脚本上下文中可见(不会出现在 Windows 资源管理器中)。


最后,您还可以使用此方法来检查共享是否已映射

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

答案2

以下 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
}

相关内容