【问题标题】:I cant format the output of this command correctly我无法正确格式化此命令的输出
【发布时间】:2020-11-29 03:38:35
【问题描述】:

这是我正在执行的命令:

Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\*"  | Where-Object {$_."(default)" -ne $null} | Select-Object @{ expression={$_.PSChildName}; label='Program'} ,@{ expression={$q + $_."(default)" +$q}; label='CommandLine'}

这是输出的sn-p:

Program                    CommandLine                                                                                                 
-------                    -----------                                                                                                 
7zFM.exe                   C:\Program Files\7-Zip\7zFM.exe                                                                             
AcroRd32.exe               C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe                                          
Adobe Audition CC.exe      "C:\Program Files\Adobe\Adobe Audition CC 2019\Adobe Audition CC.exe"                                       
Adobe Media Encoder.exe    "C:\Program Files\Adobe\Adobe Media Encoder CC 2019\Adobe Media Encoder.exe"                                
Adobe Premiere Pro.exe     "C:\Program Files\Adobe\Adobe Premiere Pro CC 2019\Adobe Premiere Pro.exe"                                  
AfterFX.exe                C:\Program Files\Adobe\Adobe After Effects CC 2019\Support Files\AfterFX.exe                                
BJMYDGN.EXE                C:\Program Files\Canon\MyPrinter\BJMyDgn.exe                                                                
BJMYPRT.EXE                C:\Program Files\Canon\MyPrinter\BJMyPrt.exe    

我是文本格式的新手,我正在尝试在 csv 文件中创建它,包含 2 列、程序和可执行文件并删除所有引号“”。 $q + 删除引号,但是如果一个项目有 2 组引号,则一组保持如上(对不起,我应该澄清一下..

我想我在兜圈子,只是在寻求帮助。

我通过管道找出了 csv 格式:

| Export-Csv -Path .\programs.csv -Encoding ascii -NoTypeInformation

【问题讨论】:

    标签: python powershell text formatting


    【解决方案1】:

    像这样?

    Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\*"  | Where "(default)" -ne $null | 
            Select @{ E={$_.PSChildName}; N='Program'} ,@{ E={$_."(default)".Trim('"')}; N='CommandLine'} |
                export-csv .\programs.csv -Encoding ascii -NoType
    

    【讨论】:

    • 谢谢 Esperento57 和 Ryan,此底部代码有效。
    【解决方案2】:

    .NET 中的字符串对象有一个Trim() 方法,该方法通常会从字符串的开头和结尾去除空格,但也可以使用一个字符数组来去除。

    因此,将 CommandLine 的表达式修改为以下内容就足够了:

    $_.'(default)'.Trim('"')
    

    附:我不确定您在 CommandLine 表达式中的 $q 变量是什么。但我认为你不需要它。

    【讨论】:

    • 当我更改代码以反映 .Trim 时,我得到` 1 | … 路径*" | Where-Object {$_.'(default)'.Trim('"') -ne $null} |选择… | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~您不能在空值表达式上调用方法。`
    • $q 删除了格式中的所有引号。但是有些项目有 dbl 引号,而这些项目仍然有引号
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-03
    • 2018-07-08
    • 2023-03-17
    相关资源
    最近更新 更多