当脚本设置为“以管理员身份运行”时,是否可以在Powershell中映射本地驱动器?

时间:2019-10-31 17:30:41

标签: powershell powershell-5.0

这是我的powershell脚本的一部分,我必须在其中将本地文件夹映射到S:驱动器。当我的脚本“以管理员身份运行”时,我无法映射New-PSDrive。如果可以,则在“我的电脑”上看不到它。我已经运行了Get-PSDrive,它显示它仅在“ MY PC”上不可见。

我尝试在PS中使用Net-Use。 我已经尝试过New-SMBmapping

New-SMBmapping -localpath 'S:' -remotepath '\\$comName\pos' -persistent $true

我的脚本的其余部分需要以“管理员身份运行”。 目前,这是我的脚本。

#Get Computer name
$comName = $computerNameCSV.ComputerName

#This will map folder to S drive
New-SmbShare -Name "SOP" -Path "C:\FolderShare" -FullAccess Everyone
New-PSDrive -Name "S" -Root "\\$comName\c$\FolderShare" -Persist -PSProvider "FileSystem"

2 个答案:

答案 0 :(得分:1)

简短答案:

你不能。

长答案:

原因全部与用户上下文有关。打开普通的PowerShell控制台时,可以在 current 用户上下文下运行该控制台。因此,当您运行命令在PowerShell中映射共享时,它会显示在当前登录的用户上下文中。

通过“运行方式管理员”启动PowerShell时,将创建一个用户上下文。运行用于映射共享的命令会在该上下文中创建映射,这与您当前登录的用户上下文不同。即从概念上讲,以“以管理员身份运行”就像是您实际以其他用户身份登录计算机一样。

一种解决方法是将脚本分为两部分,第一部分在当前用户上下文下运行并映射驱动器,第二部分可以使用Admin特权启动以执行所需的操作。例如在脚本中,您可以使用admin启动第二个脚本:

Start-Process powershell -Verb runAs AdminScript.ps1

答案 1 :(得分:1)

管理员和非管理员上下文之间映射驱动器的可见性受设计限制。您可以使用组策略或注册表来禁用此行为,如下所述:

Mapped drives are not available from an elevated prompt when UAC is configured to "Prompt for credentials" in Windows