所以我实现了一个记录到数据库的函数
function write-logDB ($user,$message,$reason,$script,$dbConnection) {
$sql= "INSERT INTO ScriptLogging(Date_Time,Person,Message,Reason,Script)
VALUES (GETDATE(),'$user','$message','$reason','$script')"
$command = new-object -TypeName System.Data.OleDb.OleDbCommand
$command.Connection = $dbConnection
$command.CommandText = $sql
$command.ExecuteNonQuery()
}
此函数使用ALREADY开放数据库连接来写入日志。当使用ISE打开此脚本时,此脚本会迭代每个用户在数据库中记录必要的值。没问题。
HOWEVER 如果正在通过任务计划程序运行此脚本(通过定时事件或手动右键单击并单击运行),脚本将失败并且我将收到以下异常错误:
“ExecuteNonQuery需要一个开放且可用的连接。连接的当前状态已关闭。在CreateStudents中的行号655 - MasterLog.ps1功能主要ExecuteNonQuery需要一个打开且可用的连接。连接的当前状态关闭。在行号655在CreateStudents中 - MasterLog.ps1 Function Main“
这是错误输出是我记录功能的一部分。我不确定为什么在运行任务调度程序时关闭连接..它甚至不会在错误之前迭代2个用户。
我已确认并再次确认我通过任务管理器使用与我手动运行时相同的帐户。我还确认了一百万次指向正确的剧本..
我知道您可能没有这方面的答案,但即使帮助进行故障排除或我应该如何进行故障排除也不胜感激。当脚本无法执行任务调度程序时,我收到的唯一数据是我在上面发布的错误代码。
提前致谢。