我是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移动到配置的网络路径
- 删除原始日志文件
非常感谢任何完成和优化此脚本的帮助。
感谢。
答案 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