用于复制和记录的Powershell脚本

时间:2015-12-07 11:05:40

标签: powershell scripting

我已经找到了类似的答案,但我仍然会围成一圈。

我是任何形式的脚本的新手,所以这是一个卑鄙的脚本。该脚本基本上是将日志文件和数据从位置复制到远程服务器,并在每次执行时附加日志,但对于我的生活,我不能通过更改{{1}来使其仅通过本地网络工作}。

我很感激任何反馈和帮助。这来自我创建的批处理文件,并考虑在黑暗艺术中尝试和进步。

当计算机连接到网络时,将安排脚本运行任务。

提前致谢

更新

我没有得到任何类型的txt或数据的日志文件中没有输出或错误消息,至于我试图在虚拟机场景中从本地复制到服务器但不会运行的错误消息,但如果我申请这在本地机器上将c复制到d没问题。正如我说完全新手

missing function body in function declaration
at line:2 char1
<<<<c:script\copy_log.ps1
+categoryinfo    : parser error: (:) []. ParentContainsErrorRecordException
+FullyQualifiedErrorId : MissingFunctionBody

格式的道歉必须输入它,因为我可以从单位c + p

更新

发现共享到其他服务器的共享没有正确修复,但脚本仍然没有创建日志文件

function CopyLogFiles ($sourcePackage) { #used this syntax as I couldn't get anything else to work and took it from here
    $dirName = "\\server\$sourcePackage" #server it is going to
    if (!(Test-Path $dirName)) { mkdir $dirName }
    Copy-Item -Path "C:\Program Files (x86)\ESS-T\$sourcePackage\Logs" -Destination $dirName -Recurse -Force
}

CopyLogFiles AppLauncher_V2.0.0.7
CopyLogFiles MMA_V2.0.0.12
CopyLogFiles MML_V2.0.0.4
CopyLogFiles SerialDataReader_V2.0.0.5 

function Log-Write {
    Param ([string]$LogString)
    Add-Content $LogFile -value $LogString
}

$LogFile = "C:\Program Files (x86)\ESS-T\.log"

1 个答案:

答案 0 :(得分:1)

不要重新发明轮子。 Copy-Item对于小案例很方便,但Windows自Windows 7以来每次安装都包含robocopy,而且它更快,更强大,并且内置了日志记录使用/log:FILENAME开关。

https://technet.microsoft.com/en-us/library/cc733145.aspx

继续测试您目的地的存在与否在PowerShell脚本中手动创建它,但将复制操作的日志记录保留为robocopy

编辑:您没有创建日志文件,因为您不必定义日志文件名称,直到 其余代码运行。