【发布时间】:2019-02-27 23:47:31
【问题描述】:
我知道 win32 有 260 个字符的限制,但我很好奇为什么我的代码工作了一半。见下文。
$Age_of_Files = -30
$Path = '\\share\d$\share'
$Age_of_Files = -30
$Current_Date = Get-Date
$Del_date = $Current_Date.AddDays($Age_of_Files)
$post = "<BR><i>Report generated on $((Get-Date).ToString())</i>"
Get-ChildItem $Path -Recurse |
Where-Object { $_.LastWriteTime -lt $Del_date} |
Select Name, FullName, LastWriteTime
$Data | ConvertTo-HTML -PreContent $pre -PostContent $post | Out-File $Report
Invoke-Item $Report
Read-Host 'Have you checked the Output File...Ok to Continue with Delete?' | Out-Null
这将检查我的网络共享没有问题并且没有错误,虽然有很多目录超过 260 个字符但我也想将其导出为 HTML 文件,所以如果我更改这行代码。
$Data = Get-ChildItem $Path -Recurse |
Where-Object { $_.LastWriteTime -lt $Del_date } |
Select Name, FullName, LastWriteTime
然后它不会通过目录递归,并给我字符限制错误。
有没有办法解决这个问题?除了将其导出为 HTML 并添加实际的删除命令之外,我想我快到了。
【问题讨论】:
-
我写了一个函数来绕过 260 个字符的限制:gallery.technet.microsoft.com/scriptcenter/…
-
您好 Boeprox,非常感谢您分享您的代码,我认为这就是答案!但不幸的是,当我添加变量 $Date = Get-ChildItem2 时它没有做任何事情
-
你能扩展一下吗?添加变量是什么意思?当您不添加变量而只是“按原样”运行时会发生什么?在运行命令之前,你有没有点源文件来加载函数?
-
嗨 Boeprox,是的,它可以在不添加
$Data值的情况下正常工作,就像我的代码一样。但是为了能够将该数据导出到 HTML 文件中,我需要将数据添加到像这样的数组中$Data = Get-ChildItem2 $Path -Recurse | Where-Object { $_.LastWriteTime -lt $Del_date } | Select Name, FullName, LastWriteTime这然后会阻止您的代码执行,它什么也不做。使用前面的代码,我开始收到 260 个字符限制错误。我确实在运行命令之前加载了函数。 -
我尝试运行您在评论中提供的代码,但无法重现您所描述的代码停止执行的问题。只需添加 $Data 以保存输出不应阻止命令执行。像这样运行它,看看会发生什么:
$Data = Get-ChildItem2
标签: powershell