如何格式化PowerShell中net view命令输出,提取指定内容?
解决方案
可以通过PowerShell的字符串处理与数组操作实现需求,具体实现方式如下:
分步处理
提取第一行标题内容:
$titleLine = $Shares[0]筛选出包含共享名称的目标行(分隔线之后、命令成功提示之前的行):
方法一:通过正则匹配默认共享的格式(以$结尾)$targetLines = $Shares | Where-Object { $_ -match '^\w+\$$' }方法二:通过定位分隔线位置来截取范围
$sepIndex = $Shares.IndexOf($Shares | Where-Object { $_ -match '^-+$' }) $targetLines = $Shares[($sepIndex + 1)..($Shares.Count - 2)]从每行提取共享名称(第一列内容):
$shareNames = $targetLines | ForEach-Object { ($_ -split '\s+')[0] }输出最终结果:
$titleLine $shareNames
整合为单行命令
如果需要更简洁的写法,可以直接用一行命令完成:
$Shares[0]; $Shares | Where-Object { $_ -match '^\w+\$$' } | ForEach-Object { ($_ -split '\s+')[0] }
执行后会输出符合要求的内容:
Shared resources at \COMPUTERNAME ADMIN$ C$ IPC$
内容的提问来源于stack exchange,提问作者Biswa
相关产品推荐
相关产品推荐

