Powershell 获取完整路径信息 [英] Powershell getting full path information

查看:71
本文介绍了Powershell 获取完整路径信息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个名为 Videos 的目录.在这个目录里面,是一堆各种相机的子目录.我有一个脚本可以检查各种摄像机中的每一个,并删除早于特定日期的记录.

I have a directory called Videos. Inside this directory, are a bunch of sub directories of various cameras. I have a script that will check each of the various cameras, and delete recordings older than a certain date.

我在获取相机的完整目录信息时遇到了一些麻烦.我正在使用以下内容来获取它:

I am having a bit of trouble getting the full directory information for the cameras. I am using the following to get it:

#Get all of the paths for each camera
$paths = Get-ChildItem -Path "C:\Videos\" | Select-Object FullName

然后我遍历 $paths 中的每个路径并删除我需要的任何内容:

And then I loop through each path in $paths and delete whatever I need to:

foreach ($pa in $paths) {
    # Delete files older than the $limit.
    $file = Get-ChildItem -Path $pa -Recurse -Force | Where-Object { $_.PSIsContainer -and $_.CreationTime -lt $limit } 
    $file | Remove-Item -Recurse -Force
    $file | Select -Expand FullName | Out-File $logFile -append
}

当我运行脚本时,出现如下错误:

When I run the script, I am getting errors such as:

@{FullName=C:\Videos\PC1-CAM1}
Get-ChildItem : Cannot find drive. A drive with the name '@{FullName=C' does not exist.
At C:\scripts\BodyCamDelete.ps1:34 char:13
+     $file = Get-ChildItem -Path $pa -Recurse -Force | Where-Object { $_.PSIsCont ...
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : ObjectNotFound: (@{FullName=C:String) [Get-ChildItem], DriveNotFoundException
+ FullyQualifiedErrorId : DriveNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

有没有办法把@{FullName= 从路径中去掉?我认为这可能是问题所在.

Is there a way to strip that @{FullName= off of the Path? I think that may be what the issue is.

推荐答案

在您的情况下 $pa 是一个具有 FullName 属性的对象.您访问的方式是这样的.

In your case $pa is an object with a FullName property. The way you would access that would be this.

$file = Get-ChildItem -Path $pa.FullName -Recurse -Force | Where-Object { $_.PSIsContainer -and $_.CreationTime -lt $limit } 

然而,只更改这一行并离开会更简单

However it would just be simpler to change only this line and leave

$paths = Get-ChildItem -Path "C:\Videos\" | Select-Object -ExpandProperty FullName

-ExpandProperty 将只返回字符串而不是 Select-Object 返回的对象.

-ExpandProperty will just return the string instead of the object that Select-Object was returning.

这篇关于Powershell 获取完整路径信息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆