脚本映射在PowerShell驱动器

时间:2021-01-07 16:05:07

标签: powershell

我想创建一个PS1脚本,将采取用户AD密码作为变量,然后传递给New-PSDrive来命令行。它们映射驱动器被共享,使得如果它们进入正确的凭证,将映射,而无需检查AD为正确的用户名/密码。

我希望能够给他们输入了正确的凭据,然后该脚本将退出的3次机会。

到目前为止,我有

$Credential = $host.ui.PromptForCredential("Need credentials", "Please enter your user name and password.", "", "NetBiosUserName")

New-PSDrive -Name "T" -PSProvider  FileSystem -Root \\servername -Persist -Credential $Credential -ErrorAction Ignore

在叫我得到一个用户名/密码箱,如果凭据是正确的驱动器映射,但我想框弹出备份如果凭据不正确,并有可能如果那些错误的再次进入再次发生

我得到尽可能

<块引用>

尝试{$凭证= $ host.ui.PromptForCredential( “极品资格证书”, “请输入您的用户名和密码。”, “”, “NetBiosUserName”) New-PSDrive -Name "T" -PSProvider FileSystem -Root \servername -Persist -Credential $Credential -ErrorAction Ignore} 捕获{写主机“不正确,再次尝试”}

然后重复此,但是当凭证是正确的,但它仍然弹出窗口凭证

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

试试这个,我添加了一个测试,因为如果用户取消凭据对话框,将创建 PSDrive :

while ($true)
{
    try
    {
        $Credential = $host.ui.PromptForCredential("Need credentials", "Please enter your user name and password.", "", "NetBiosUserName")

        # Prevent cancel that maps PSDrive anyway
        if ($Credential)
        {
            New-PSDrive -Name "T" -PSProvider  FileSystem -Root \\servername\share -Persist -Credential $Credential -ErrorAction Stop
        }
        else
        {
            throw [System.ComponentModel.Win32Exception]::new(0x80004005)   # Invalid login and/or password
        }
        "OK"

        # PSSDrive created, exiting the infinite loop
        break
    }
    catch
    {
        Write-Warning "Wrong Username and/or password, please retry..."
    }
}
"Continue"
相关问题