PowerShell脚本:压缩昨天的日志并将其移动到网络路径

时间:2014-02-05 13:42:40

标签: powershell logging zip backup

我是PowerShell的新手,我需要创建一个脚本(也可以通过调度程序工作):

- 将网络路径作为驱动器安装(我想我是用下面的代码完成的)

#Machine hostname - needed for archive creation and identification
$hname = hostname

#Map network drive
$net = $(New-Object -Com WScript.Network)
$net.MapNetworkDrive("X:", "\\your network share\your folder",  
$false, "domain\user", "password") 

#Network folder where archive will be moved and stored
$newdir = "X:\your folder\$hname"

使用昨天的日志创建一个zip文件,其格式为:

$today = (Get-Date).AddDays(-1).ToString('yyyyMMdd')
something_$today_something.w3c

- 将该zip保存在临时本地文件夹中

- 将zip移动到配置的网络路径

- 删除原始日志文件

非常感谢任何完成和优化此脚本的帮助。

感谢。

1 个答案:

答案 0 :(得分:0)

由于您已经在使用卑鄙的com对象,因此您可以尝试以下方法进行压缩:

$zipFileName = "c:\temp\logs.zip"
$shell = New-Object -Com Shell.Application
New-Item $zipFileName -Type f
$zipItem = $shell.NameSpace($zipFileName)
$zipItem.CopyHere( "PathToYourLogFile",16)

因此,如果您有一个充满日志文件的文件夹,则可以运行此

$pathToYourLogsFolder = "c:\somepath"
ls $pathToYourLogsFolder | % { $zipItem.CopyHere( $_.FullName,16) }

然后根据需要处理zip和剩余文件。 您可以在MSDN上阅读有关 CopyHere 功能的更多信息,这在Win2012上不起作用

http://msdn.microsoft.com/en-us/library/windows/desktop/bb787866(v=vs.85).aspx