使用powershell从“网络使用”命令中获取值

时间:2019-05-14 13:18:07

标签: powershell

我正在尝试使用以下命令获取网络映射的驱动器。

Get-WmiObject -Class Win32_MappedLogicalDisk |  %{$_.Name}

Get-WmiObject -Class Win32_MappedLogicalDisk |  %{$_.ProviderName}

这在某些系统中有效,但是在其他系统中则无效(可能是Powershell版本问题),所以我想到了使用net use命令。但是,当我键入“ net use”时,我无法获取值或不确定如何获取值显示

当我键入net use时,我会得到状态,本地,远程和网络列。我尝试使用以下命令获取字段值。

net use | select local.

但我什么都没发空

在下面的命令中使用。

net use | select local.

需要从net use命令获取本地和远程值。

3 个答案:

答案 0 :(得分:0)

如何使用get-psdrive(根头实际上与displayroot属性匹配)?

get-psdrive | where displayroot -like '\\*'

Name           Used (GB)     Free (GB) Provider      Root
----           ---------     --------- --------      ----
Y                  91.84          7.82 FileSystem    \\server....

答案 1 :(得分:0)

根据可用的PowerShell版本,您可能会遇到类似的问题
Get-SmbMapping包裹了CimClass: ROOT/Microsoft/Windows/SMB:MSFT_SmbMapping

但否则输出类似于net use

要处理实际的net use输出并转换为具有属性的对象,
您可以使用:

$SmbMapping = (net use) -like '* \\*' | ForEach-Object { 
    $Status,$Local,$Remote,$Null = $_ -split ' +',4
    [PSCustomObject]@{
        Status = $Status
        Local  = $Local
        Remote = $Remote
    }
}

这至少在我的德语区域设置Win10中有效。
(不确定其他语言环境中的状态消息是否不同。)

答案 2 :(得分:0)

请参阅此以解析旧式控制台输出---

How to Convert Text Output of a Legacy Console Application to PowerShell Objects

但是,还有LotPings已经给您的。您的查询可能与此重复... Equivalent of net use (to list computer's connections) in powershell? ...并且它是可接受的答案

# For the mapped logical drive you can use WMI class Win32_MappedLogicalDisk :

Get-WmiObject Win32_MappedLogicalDisk

# Here is another way with Win32_LogicalDisk :

PS C:\> Get-WmiObject -Query "Select * From Win32_LogicalDisk Where DriveType = 4"

DeviceID     : V:
DriveType    : 4
ProviderName : \\jpbdellf1\c$
FreeSpace    :
Size         :
VolumeName   :

# Edited
# You are right, you can get what you need with Win32_NetworkConnection :
Get-WmiObject Win32_NetworkConnection

LocalName                     RemoteName                    ConnectionState               Status
---------                     ----------                    ---------------               ------
                              \\jpbasusf1\temp              Connected                     OK

# On Seven or W2K8 be careful to call this with the same user that run the NET USE because it's a session information.