我正在尝试使用以下命令获取网络映射的驱动器。
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命令获取本地和远程值。
答案 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.