首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将*.bak文件收集为单个对象

无法将*.bak文件收集为单个对象
EN

Stack Overflow用户
提问于 2013-07-03 05:23:22
回答 1查看 165关注 0票数 0

我是PowerShell的新手。我想写一个简单的程序来列出所有的*.bak文件,然后我可以按日期或大小排序,如下所示。

代码语言:javascript
复制
$Drives = Get-WMIObject -class win32_logicaldisk -filter "DriveType = 3" ;
foreach ($d in $Drives){
    If (($d.deviceId -ne "C:") -and ($d.VolumeName -ne "PAGEFILE")) {
        $backups += Get-ChildItem -Path $d.deviceID -Recurse -filter *.bak
  }

这通常工作得很好,除非例如D:驱动器只有一个*.bak文件。在这种情况下,我会得到一个错误。

代码语言:javascript
复制
Method invocation failed because [System.IO.FileInfo] doesn't contain a method named 'op_Addition'.
At F:\work\PowerShell\DiskSpace\generate-disk-report-v2.ps1:39 char:13
+     $backups += <<<<  Get-ChildItem -Path $d.deviceID -Recurse -filter *.bak
    + CategoryInfo          : InvalidOperation: (op_Addition:String) [], RuntimeException
    + FullyQualifiedErrorId : MethodNotFound

如果我向该驱动器添加一个额外junk.bak,它可以正常工作。

EN

回答 1

Stack Overflow用户

发布于 2013-10-11 02:29:11

在我的例子中,我发现需要将变量初始化为数组,而Get-ChildItem需要作为数组返回,特别是如果它只返回一个文件。

在您的案例中:

代码语言:javascript
复制
$backups = @() - (Before calling Get-ChildItem)

代码语言:javascript
复制
$backups = @(Get-ChildItem -Path $d.deviceID -Recurse -filter *.bak) - (Cast as an array)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17436071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档