首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >powershell脚本和subst命令

powershell脚本和subst命令
EN

Stack Overflow用户
提问于 2013-02-26 15:46:19
回答 3查看 14.4K关注 0票数 4

我有以下powershell 2.0脚本:

代码语言:javascript
复制
function getFreeDrive
{
    [char[]]$driveLetters = @([char]'E'..[char]'Z')
    foreach ($d in $driveLetters) {
        if(!(Test-Path -Path "$d`:" -IsValid)) {
            return $d
        }
    }
}

$drive = getFreeDrive

subst "$drive`:" T:\temp 
ls "$drive`:\"  # just a dummy command 
subst "$drive`:" /D

我想要剧本

  • 查找第一个未使用的驱动器字母
  • 创建带有subst的新驱动器
  • 在这个驱动器上做点什么
  • 用底座拆下驱动器

当我第一次运行脚本时,脚本工作得很好。如果我在同一个shell中第二次运行这个脚本,我会从ls命令中得到一个错误,表示找不到驱动器。如果我打开一个新的shell并运行该脚本,它将再次正常运行。

我的脚本有什么问题,如何让它在同一个powershell实例中多次运行?

或者,除了subst命令之外,还有一种替代方法?我试过使用powershell驱动器,但它不适用于其他windows程序(如devenv.exe)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-26 22:09:11

我可以复制和您完全一样的行为,即使在一个Powershell窗口中,我甚至不能将cd复制到它创建的驱动器上,但是如果我打开一个全新的窗口,我就可以对其进行cd处理。

这里所概述的行为似乎是:

http://social.technet.microsoft.com/Forums/en-US/winserverpowershell/thread/2e414f3c-98dd-4d8b-a3a3-88cfa0e7594c/

解决方法可能是像上面提到的那样使用PSDrives,或者只是不映射,然后取消映射,然后尝试在同一个会话中重新映射相同的驱动器。

票数 1
EN

Stack Overflow用户

发布于 2013-02-26 20:21:45

另一种选择是使用PSProviders和更精确的PSDrives (查看提供者):

代码语言:javascript
复制
PS > New-PSDrive -Name "tr" -PSProvider filesystem -Root "c:\temp"

Name           Used (GB)     Free (GB) Provider      Root
----           ---------     --------- --------      ----
tr                               28,15 FileSystem    C:\temp

PS > ls tr:*.c

    Répertoire : C:\temp


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        01/08/2012     05:28        994 test.c


PS > Remove-PSDrive -Name "tr"

问题是这些驱动器不能与shell explorer.exe一起使用。

票数 4
EN

Stack Overflow用户

发布于 2015-03-10 16:07:29

我也遇到了同样的问题,而我的解决办法--我使用的是版本3--是在进入新映射的驱动器之前调用Get-PSDrive

代码语言:javascript
复制
$drive = getFreeDrive

subst "$drive`:" T:\temp 
Get-PSDrive | Out-Null
ls "$drive`:\"  # just a dummy command 
subst "$drive`:" /D
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15093347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档