我的 Powershell 脚本假定运行脚本的用户可以访问文件服务器上的特定远程共享。如果没有,我想在运行脚本之前先提示用户“映射网络驱动器”。
我该如何做呢?
答案1
不确定我是否正确理解了这个问题,但我在这里假设我们在这里检查用户是否已映射所需的共享,而不是用户是否有权访问所需的共享。
我意识到这并没有准确回答你的问题,但我建议采取不同的方法。
您可以尝试使用 New-PsDrive cmdlet 在脚本中映射共享,并根据需要提示用户输入凭据Get-Credential
New-PSDrive -Name TestName -PSProvider FileSystem -Root \\fileshare.local\share -Credential (Get-Credential)
在脚本的末尾使用Remove-PsDrive
cmdlet 与其分离。
映射共享仅在脚本上下文中可见(不会出现在 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
}