我在我们的环境中的服务器上运行了许多预定作业,但今天早上监控小组与我联系了有关占用所有磁盘空间的服务帐户配置文件。我挖了一遍,在C:\ Users \ service_account \ AppData \ Local \ Microsoft \ Office365 \ Powershell目录中找到了日志,但其中3个在不同日期的大小超过10 GB。
我把它缩小到一个脚本我们每小时检查AD dir同步以确保它不会超过一个小时,但我不确定最佳做法是什么?此外,此位置的大多数日志大小仅为4 kb,表示典型的跟踪,如连接时间,cmdlet初始化等。
我不知道如何打开如此庞大的文件来查看可能存在的问题。有没有其他人遇到这种事情?我在网上找不到多少。另外,我确实运行Remove-pssession *来关闭我的会话。 Thx提前......
答案 0 :(得分:1)
你有几个选择。
一次从磁盘一行或多行读取文件,使用每一行,然后将每行写回磁盘。如果需要。 不是通过使用普通的Get-Content将整个文件缓存在RAM中,而是一次一点地从磁盘上读取它。下面是一个非常简单的示例,说明如何执行此操作。
$file = New-Object System.IO.StreamReader -Arg "test.txt"
while ($line = $file.ReadLine()) {
# $line has your line
}
$file.close()
或使用......
Get-Content -Readcount 100
...一次处理大量的行,上面将给出每行100行的数组。
此论坛上最近有关于使用大型文件和PoSH并且不得不使用System.IO.StreamReader / System.IO.StreamWriter .Net aproach来处理用例的帖子。
例如: Unable to Find and Replace a string in 2GB XML file using Powershell
但是这个论坛还有很多,只需使用[powershell]大文件
搜索它们