【问题标题】:Powershell Script assistance required需要 Powershell 脚本协助
【发布时间】:2015-06-05 00:10:15
【问题描述】:

我将一个文件的内容传送到 Select-Object 并为每个名称创建两个属性 ComputerNameFileExists,其中后一个值是 Test-Path 的结果

Get-Content c:\Users\Admin\Documents\Scripts\Serverlist.txt | `
   Select-Object @{Name='ComputerName';Expression={$_}},@{Name='FolderExist';Expression={ Test-Path "\\$_\c$\Data\Repository"}},
@{Name='Size';Expression={$_.Sum}}

如果每个服务器上都存在此文件夹,我想返回它的大小。你会怎么做?

尝试添加

@{Name='Size';Expression={$_.Sum}}

发给我的select-object,但这不会返回任何值

【问题讨论】:

    标签: powershell


    【解决方案1】:

    我想这就是你要找的东西

      Get-Content c:\Users\Admin\Documents\Scripts\Serverlist.txt | Select-Object @{Name='ComputerName';Expression={$_}},@{Name='FolderExist';Expression={ Test-Path "\\$_\c$\Data\Repository"}}, @{Name='Size';Expression={ "{0:n2}" -f ((gci -path "\\$_\c$\Data\Repository" -recurse | measure-object -property length -sum).sum /1mb) + " mb" }}
    

    【讨论】:

      【解决方案2】:

      由于至少一个计算属性依赖于另一个,因此您必须至少执行 2 个 Select-Object 语句,但我可能会使用 ForEach-ObjectNew-Object 代替:

      Get-Content c:\Users\Admin\Documents\Scripts\Serverlist.txt | ForEach-Object {
        New-Object psobject -Property @{
          'ComputerName' = $_
          'FileExists' = ($FileExists = Test-Path ($FilePath = "\\$_\c$\Data\repository"))
          'Size' = if($FileExists){ (Get-Item $FilePath).Length } else { $null }
        }
      }
      

      如果C:\Data\repository 是一个目录,(Get-Item $FilePath).Length 不会让你走得太远,但你可以在 if 块中替换你自己的语句

      为了我未来的同事,我可能会避免像你的例子那样做一个单行,而是像这样写多个语句:

      Get-Content c:\Users\Admin\Documents\Scripts\Serverlist.txt | ForEach-Object {
      
        $ComputerName = $_
      
        $FilePath = "\\$ComputerName\c$\Data\repository"
        $FileExists = Test-Path $FilePath
      
        if($FileExists){
          $Size = Get-Item $FilePath | Select-Object -ExpandProperty Length
        } else {
          $Size = $null
        }
      
        New-Object psobject -Property @{
          'ComputerName' = $ComputerName
          'FileExists'   = $FileExists
          'Size'         = $Size
        }
      }
      

      【讨论】:

        猜你喜欢
        • 2018-08-08
        • 2016-11-17
        • 2021-06-24
        • 2016-04-05
        • 1970-01-01
        • 2020-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多