Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从命令或PowerShell输出中提取字或数字_Powershell_Command Line - Fatal编程技术网

从命令或PowerShell输出中提取字或数字

从命令或PowerShell输出中提取字或数字,powershell,command-line,Powershell,Command Line,我们正在创建大量脚本以从PC收集数据。我需要一些使用“最简单”方法提取相关数据的帮助。我只需要一个方法/概念/想法,我们将应用于其余的。这里有3个例子 Ping平均毫秒响应:Ping的输出将显示如下结果:“最小值=3ms,最大值=8ms,平均值=4MS”。我需要从“ms”中提取Avg编号,并将输出重定向到一个文件(>PingAvg.txt)。最终结果是输出文件中只有一个“4” WMI AV输出:将运行“Get WMIOObject”PowerShell,如下面的一个。我需要只提取名称(displ

我们正在创建大量脚本以从PC收集数据。我需要一些使用“最简单”方法提取相关数据的帮助。我只需要一个方法/概念/想法,我们将应用于其余的。这里有3个例子

  • Ping平均毫秒响应:Ping的输出将显示如下结果:“最小值=3ms,最大值=8ms,平均值=4MS”。我需要从“ms”中提取Avg编号,并将输出重定向到一个文件(>PingAvg.txt)。最终结果是输出文件中只有一个“4

  • WMI AV输出:将运行“Get WMIOObject”PowerShell,如下面的一个。我需要只提取名称(displayName)或状态,并将输出重定向到一个文件(>AvStats.txt)。最终结果是输出文件仅包含AV产品名称“Windows Defender”或仅包含状态“393472

  • PS C:\>获取WmiObject-命名空间根目录\SecurityCenter2-查询“选择*来自AntiVirusProduct”|选择对象*-ExcludeProperty PSComputerName、作用域、路径、选项、类路径、属性、系统属性、限定符Site、容器|格式列表-属性[a-z]
    显示名称:Windows Defender
    实例GUID:{D68DDC3A-831F-4fae-9E44-DA132C1ACF46}
    pathToSignedProductExe:%ProgramFiles%\Windows Defender\msascu.exe
    pathToSignedReportingExe:%ProgramFiles%\Windows Defender\MsMpeng.exe
    产品状态:393472
    时间戳:2017年10月23日星期一14:12:56格林尼治标准时间

    (((ping localhost | Select-String "Average") -split "Average = ")[1] -split "ms")[0] | out-file PingAvg.txt
    
    步骤2:

    (Get-WmiObject -Namespace ROOT\SecurityCenter2 -Query "SELECT * FROM AntiVirusProduct" | Select-Object displayName | ft -HideTableHeaders | out-string).trim() | out-file AvStats.txt
    
    或产品状态

    (Get-WmiObject -Namespace ROOT\SecurityCenter2 -Query "SELECT * FROM AntiVirusProduct" | Select-Object productState | ft -HideTableHeaders | out-string).trim() | out-file AvStats.txt
    
    步骤3:

    ((get-hotfix | sort installedon)[-1] | Select-Object InstalledOn | ft -HideTableHeaders | out-string).trim() | out-file LastPatch.txt
    

    请分享您的反馈。如果有帮助,请确保将其标记为答案。

    这是非常基本的内容,您迄今为止尝试了什么?=>
    Get Help Select Object
    see-ExpandProperty,或者将命令括在括号中,并在属性后面加上一个点。正如@LotPings已经说过的:尝试用这样的点获取所需的属性:
    ($conn.ResponseTime | Measure Object-Average).Average
    其中
    $conn
    包含
    测试连接的结果
    或尝试
    (获取修补程序)。安装到
    以获取修补程序日期谢谢LT!这正是我所寻找的,并为我们提供了一些伟大的概念和思想食粮。关于获取修补程序命令的快速问题。如果我们希望修补程序日期只包含日期而不包含时间,该怎么办。你能指定一个时间格式和/或分割吗?只是好奇:为什么你要使用ping和解析textdata,而不是使用内置的返回对象的测试连接命令?我可以,正如拉佐芬所建议的那样。我在想,与创建变量($conn)然后计算变量相比,使用单个命令获取数据可能更容易。尽管如此,正如你所看到的,我不是这方面的专家。我甚至设法让我的问题被否决了……嗨,乔。这就是你可以做的,只是得到日期。使用空格拆分:
    ((获取修补程序|安装排序)[-1]|选择已安装的对象| ft-HideTableHeaders | out字符串)。trim()-Split“”)[0]
    请向上投票,不要忘了将其标记为答案。谢谢,效果非常好!最后一个问题,如果可以的话。如果“productState”查询返回两行,则它不会修剪前导空格。因此,我将在屏幕最右侧的第1行“331776”(正确修剪),然后在屏幕最左侧的第2行“393472”