加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – powershell脚本和subst命令

发布时间:2020-12-14 03:58:52 所属栏目:Windows 来源:网络整理
导读:我有以下power shell 2.0脚本: function getFreeDrive{ [char[]]$driveLetters = @([char]'E'..[char]'Z') foreach ($d in $driveLetters) { if(!(Test-Path -Path "$d`:" -IsValid)) { return $d } }}$drive = getFreeDrivesubst "$drive`:" T:temp ls "$
我有以下power shell 2.0脚本:

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创建一个新驱动器
>在这个驱动器上做点什么
>使用subst删除驱动器

当我第一次运行它时,脚本运行正常.
如果我在同一个shell中第二次运行该脚本,我会从ls命令收到错误,指出无法找到该驱动器.如果我打开一个新shell并运行该脚本,它会再次正常运行.

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

或者也许替代subst命令?我尝试使用powershell驱动器,但它不能与其他Windows程序(例如devenv.exe)一起使用.

解决方法

我可以复制与你完全相同的行为,即使在一个Powershell窗口中我甚至无法cd到它创建的驱动器,但如果我打开一个全新的窗口,我可以cd到它就好了.

行为似乎如下所示:

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

解决方法可能是使用如上所述的PSDrives,或者只是不映射,然后取消映射,然后尝试在同一会话中重新映射相同的驱动器.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读