在 Powershell 中为 PSDrive 设置名称

问题描述 投票:0回答:2

当我创建 PSDrive 时,它通常只获取它指向的位置的名称。 “成为 dom-loc-分享 (G:)”

New-PSDrive -Description "Group-Drive" –Name "G" –PSProvider FileSystem –Root "\\dom\dfs\dom-loc-Share" –Persist | Out-Null 

Screen

我现在通过单击名称并更改它来将我的名称命名为“Bob”。然而,我现在创建的每个 PSDrive 都称为 Bob

这很奇怪,但不是真正的问题(尽管如果有人愿意解释的话)。 我的问题是:如何在脚本中设置名称,即 bob?

我试过了

Get-PsDrive G

并检查了属性,但无法设置在Windows资源管理器中显示的名称。

创建 PSDrive 时如何将此名称而不是 bob 设置为“Group-Drive”?

如果我尝试 Get-WmiObject -Class win32_volume 我得到以下结果...

powershell drive
2个回答
4
投票

您可以这样做(也推荐在PowerShell社区博客上):

$drive = Get-WmiObject -Class win32_volume -Filter "DriveLetter = 'g:'"

Set-WmiInstance -input $drive -Arguments @{Label="Bob"}

旁注:

使用

Set-WmiInstance
很有用,因为它可以一次更改多个参数;示例:

Set-WmiInstance -input $drive -Arguments @{DriveLetter="Q:"; Label="NewLabel"}

0
投票

我找到了答案,但如果有人知道更好的方法,请随时告诉我。

$DNsplit = ((Get-ADUser ([Environment]::UserName)).DistinguishedName).split(",")
$STO = $DNsplit[$DNsplit.count -5].Substring(3,3)
$MyRoot = "\\dom\dfs\dom-$Sto-Share"
$RegPath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2"
if(Test-Path $MyRoot)
{
    if(Get-PSDrive | ?{$_.Name -eq "G"}) 
    {
        Remove-PSDrive G
    }
    New-PSDrive –Name G –PSProvider FileSystem –Root $MyRoot –Persist -Scope Global | Out-Null 
    $a = Get-ChildItem "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2"
    foreach($Key in $a)
    {
        $CompKey = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\$($MyRoot.Replace('\','#'))"
        if($Key.Name -eq $CompKey)
        {
            Set-ItemProperty -Path $key.PSPath -Name "_LabelFromReg" -Value "Group-Drive"
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.