代码之家  ›  专栏  ›  技术社区  ›  Mira

在powershell中的路径之间添加空间

  •  0
  • Mira  · 技术社区  · 7 年前

    我的脚本有一个问题,它通过我的日志过滤并以裸尾方式打开相关的日志。我目前的问题是,一些文件路径在打印时没有空格,而一些文件路径有空格。我一直试图通过放置+“”+来获得空格,但这绝对没有任何作用。

    picture of output

    我的代码

    $files = ""
    [xml]$photonconfig = Get-Content 
    C:\Users\Administrator\Desktop\PhotonServer.config
    
    $photonconfig.SelectNodes("Configuration/*")  | Select-Object -Expand Name | 
    % {$_.replace("CriticalOps","")} | ForEach {
    $files+= Write-Host ""
    $files+= Get-ChildItem C:\Users\Administrator\Desktop\log\log/*$_*.log |sort -property LastWriteTime -Descending | Select-Object -first 3 
    
    
    }
    
    $clr= Get-ChildItem  C:\Users\Administrator\Desktop\log\log/PhotonCLR.log | 
    Select-Object 
    
    $all = $files + $clr 
    
    $all
    

    完整代码:

     $files = @()
     [xml]$photonconfig = Get-Content 
     C:\Users\Administrator\Desktop\PhotonServer.config
    
     $photonconfig.SelectNodes("Configuration/*")  | Select-Object -Expand Name | % {$_.replace("CriticalOps","")} | ForEach {
     $files+= Write-Output ""
     $files+= Get-ChildItem C:\Users\Administrator\Desktop\log\log/*$_*.log |sort -property LastWriteTime -Descending | Select-Object -first 3 
    
    
    }
    
    $clr= Get-ChildItem  C:\Users\Administrator\Desktop\log\log/PhotonCLR.log | Select-Object 
    
    $all = "$clr " + "$files" 
    
    $cmd=Start-Process C:\Users\Administrator\Desktop\baretail\baretail.exe $all
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   JosefZ    7 年前

    请考虑以下对象类型:

    PS D:\PShell> (Get-ChildItem).GetType().FullName
    System.Object[]
    
    PS D:\PShell> (Get-ChildItem)[0].GetType().FullName
    System.IO.DirectoryInfo
    
    PS D:\PShell> (Get-ChildItem)[-1].GetType().FullName
    System.IO.FileInfo
    
    PS D:\PShell> "".GetType().FullName
    System.String
    
    PS D:\PShell> ( Write-Host "" ) -eq $null
    
    True
    

    因此,出现了一些自动类型铸造,例如 $files+= Get-ChildItem …

    1. 使用数组 $files = @() 而不是字符串 $files = "" .
    2. Avoid using Write-Host at all .
    3. 考虑两者之间的差异 类型铸造方法 :
      • [xml]$photonconfig = Get-Content C:\…\Desktop\PhotonServer.config strongly type the variable $photonconfig
      • $photonconfig = [xml]$( Get-Content C:\…\Desktop\PhotonServer.config ) (我更喜欢这种变体)