在Powershell中为PSDrive设置名称

时间:2015-07-30 14:23:59

标签: powershell drive

当我创建一个PSDrive时,它通常只获取它指向的位置的名称。 " dom-loc-Share(G:)"

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

Screen

我将我的名字命名为#34; Bob"现在点击名称并进行更改。但是我现在创建的每个PSDrive都称为Bob

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

我试过

Get-PsDrive G

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

如何将此名称设置为" Group-Drive"在创建PSDrive?

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

enter image description here

2 个答案:

答案 0 :(得分:3)

你可以这样做:

$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"}

答案 1 :(得分: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"
        }
    }
}