我尝试在powershell中将日志导出到csv文件,但是在为文件中的每个“日志”放置时间戳时遇到困难。我可以将日志导出到csv文件,但是对于它记录的每个操作,我希望有一个单独的时间戳。例如,我希望在我的csv文件中的输出如下所示,并且每个操作都有一个时间戳(注意操作前的时间戳)
2020/02/13 93520 - Performing the operation "Remove File" on target "\\03042019-PC\C$\Users\*\AppData\Local\Apps\Test\21.txt".
2020/02/13 93522 - Performing the operation "Remove File" on target "\\03052019-PC\C$\Users\*\AppData\Local\Apps\Test\51.txt".
任何帮助都将不胜感激!以下是我目前所拥有的:(来自网上调查)
Import-Module ActiveDirectory
$timestamp = "LogFile"
$filepath = "C:\$timestamp.csv"
#$Computers = Get-ADComputer -Filter {Name -like "*-PC"} | Select-Object -ExpandProperty Name
$Computers = Get-ADComputer -Filter {Name -like "03*2019-PC"} | Select-Object -ExpandProperty Name
# Loop through users and delete the file
ForEach ($Computer in $Computers) {
$path = "\\$Computer\C$\Users\*\AppData\Local\Apps\Test\*"
$result = Get-ChildItem -Path $path | Remove-Item -force -verbose *>> $filepath
}
$upperLimit = [datetime]::MaxValue #replace with your own date
$lowerLimit = [datetime]::MinValue #replace with your own date
$log | foreach {
$dateAsText = ($_ -split '\s',2)[0]
try
{
$date = [datetime]::Parse($dateAsText)
if (($lowerLimit -lt $date) -and ($date -lt $upperLimit))
{
$_ #output the current item because it belongs to the requested time frame
}
}
catch [InvalidOperationException]
{
#date is malformed (maybe the line is empty or there is a typo), skip it
}
}
2条答案
按热度按时间jxct1oxe1#
我假设您希望时间戳是当前的日期和时间,尽管我不确定5位数字的含义,例如,示例中的数字
93520
是什么?2020年2月13日93520-对目标文件"\03042019-PC\C $\用户 *\应用程序数据\本地\应用程序\测试\21.txt"执行"删除文件"操作。
无论如何,如果您希望日期+时间戳包含当前日期和时间,只需使用
get-date
cmdlet生成并格式化它,然后使用格式化字符串. More on formatted string here将其连接到日志文本。示例如下。注:
hh:mm:ss tt
输出12小时时间(AM/PM)。HH:mm:ss
输出24小时时间另外,我注意到您的程序不会像编写的那样工作,您将
$log
的内容通过管道传输到foreach中,但是变量$log从未加载数据这个程序做了我认为你想让它做的事情。注解掉我的临时代码行
$Computers = ("MyComputer1", "MyComputer2")
,并取消注解你想要的对Get-ADComputer
的调用r9f1avp52#
不要忘了过滤器,你可以在powershell中使用下面的命令创建一个过滤器
注意,“timestamp”这个名字是任意的。你可以调用任何东西,然后用管道把任何命令输入到它里面。使用额外的管道到Tee-object来记录输出到一个文件