【问题标题】:Powershell Function Not Mapping Drive When Called调用时Powershell函数不映射驱动器
【发布时间】:2017-06-21 14:08:00
【问题描述】:

我正在创建一个 New-PSDrive 并映射到共享驱动器。代码在函数之外运行良好,但只要它包含在函数中,我就会看到它尝试映射驱动器。当我运行Get-PSDrive时,指定的共享驱动器没有列出来。

这与在函数外运行脚本完全相反,运行Get-PSDrive 后,我绝对可以看到驱动器映射到共享文件夹,并且它也在文件夹资源管理器中的计算机下列出/显示。

function MapDrive {

# creates an array of available Drive Letters 
$driveArray = @("A","B","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z")

# check every letter in the array if its available then create a New-PSDrive
foreach ($letter in $driveArray) {
    If (!(Test-Path "$letter`:")) {
        New-PSDrive -Name $letter -Root "\\my_server_ip\shared_folder" -Persist -PSProvider Filesystem -Credential (Get-Credential)
        break
    }
    Else {
        Write-Host "No available Drives."
        break
    }
}

}

MapDrive

Get-PSDrive

【问题讨论】:

  • 试试-scope Global
  • 我是脚本和使用 Powershell 的新手,我非常感谢 SimonS。

标签: powershell


【解决方案1】:

使用来自Getting a free drive letter 的答案:

$letter = Get-ChildItem function:[f-z]: -n | Where { !(Test-Path $_) } | select -First 1

New-PSDrive -Name ($letter)[0] -Root "\\my_server_ip\shared_folder" -Persist -PSProvider Filesystem -Credential (Get-Credential)

【讨论】:

  • 这也很有效,谢谢詹姆斯!这种方法绝对是另一种实现方式,我真的很感激。
猜你喜欢
  • 1970-01-01
  • 2021-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多