使用来自 SQL table 的变量的自动 robocopy?
Automated robocopy using variables from a SQL table?
我正在尝试编写脚本(最好使用 powershell)一个 robocopy 进程,该进程将从 SQL table 中提取其作业值。
例如在 运行 上,它需要引用 SQL table 的值来构建命令行。
ID 然后希望将日志文件反馈到 tables 以更新信息(时间戳、文件大小等)。
任何人都可以指出一些好的想法或对此有任何想法。
谢谢。
这就是我要做的
1).从 Table
获取信息
Import-Module SQLPS
$dbServer = 'SQLServerName'
$database = 'DBName'
$sourceQuery = "SELECT source from Table"
$source = Invoke-Sqlcmd -serverinstance $dbServer -Database $database -Query $sourceQuery
2). 运行 命令,循环返回的 $source/$target 数组。理想情况下将其包装在函数
中
foreach($sourcePath in $source){robocopy, MD5deep}
3).捕获输出并存储在变量中,然后使用存储过程,如果使用上述执行的日志更容易更新 table。
$conn = New-Object System.Data.SqlClient.SqlConnection("Server=$($databaseServer);Database=$($database);Integrated Security=True")
$conn.Open() | out-null
$cmd = New-Object System.Data.SqlClient.SqlCommand("dbo.usp_RobocopyLog", $conn)
$cmd.CommandType = [System.Data.CommandType]'StoredProcedure'
$parameters = @{"ID"=$ID;"Log"=$Output.ToString();}
#Add Parameters if getting from a loop above
foreach($parameterKey in $parameters.Keys)
{
[Void] $cmd.Parameters.Add("@$($parameterKey)",$parameters[$parameterKey])
}
# Run SQL procedure
$cmd.ExecuteNonQuery() | Out-Null
# Clean-Up
$conn.Close()
如果需要更新多个 table 并且关系复杂,调用 SP 会有所帮助。如果需要,我可以提供更多细节
我正在尝试编写脚本(最好使用 powershell)一个 robocopy 进程,该进程将从 SQL table 中提取其作业值。
例如在 运行 上,它需要引用 SQL table 的值来构建命令行。
ID 然后希望将日志文件反馈到 tables 以更新信息(时间戳、文件大小等)。
任何人都可以指出一些好的想法或对此有任何想法。
谢谢。
这就是我要做的
1).从 Table
获取信息Import-Module SQLPS
$dbServer = 'SQLServerName'
$database = 'DBName'
$sourceQuery = "SELECT source from Table"
$source = Invoke-Sqlcmd -serverinstance $dbServer -Database $database -Query $sourceQuery
2). 运行 命令,循环返回的 $source/$target 数组。理想情况下将其包装在函数
中foreach($sourcePath in $source){robocopy, MD5deep}
3).捕获输出并存储在变量中,然后使用存储过程,如果使用上述执行的日志更容易更新 table。
$conn = New-Object System.Data.SqlClient.SqlConnection("Server=$($databaseServer);Database=$($database);Integrated Security=True")
$conn.Open() | out-null
$cmd = New-Object System.Data.SqlClient.SqlCommand("dbo.usp_RobocopyLog", $conn)
$cmd.CommandType = [System.Data.CommandType]'StoredProcedure'
$parameters = @{"ID"=$ID;"Log"=$Output.ToString();}
#Add Parameters if getting from a loop above
foreach($parameterKey in $parameters.Keys)
{
[Void] $cmd.Parameters.Add("@$($parameterKey)",$parameters[$parameterKey])
}
# Run SQL procedure
$cmd.ExecuteNonQuery() | Out-Null
# Clean-Up
$conn.Close()
如果需要更新多个 table 并且关系复杂,调用 SP 会有所帮助。如果需要,我可以提供更多细节