Server: Windows 2008 R2
SQL: 2000 Express
Das Script macht folgendes: Ordnergrößen eines Netzwerkshares auslesen und in eine SQL 2008 Express DB schreiben. Der User des Scheduled Tasks ist Domain Admin sowie Sysadmin auf dem SQL Server. Ich habe mich auch bereits als der User selbst angemeldet und das Script ausgeführt, funkt.
$searchFolder = "\\server\c$\share"
$SQLServer = "servername\instancename"
$SQLDBName = "db"
# Start of Script
clear
get-module -listAvailable | import-module
$date = Get-Date -format "yyyy-MM-dd"
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; Integrated Security = True"
$sqlConnection.Open()
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.Connection = $SqlConnection
dir $searchFolder | Where-Object { $_.PSIsContainer } | ForEach-Object {
$colItems = (Get-ChildItem $_.FullName -recurse -erroraction silentlycontinue | Measure-Object -property length -sum)
[int]$length=$colItems.sum/1GB
write-host "$_ = $length GB"
$sqlQuery = "INSERT INTO sizeofj (date,GB,folder) VALUES ( '$date' , '$length', '$_')"
$SqlCmd.CommandText = $SqlQuery
$SqlCmd.executenonquery()
}
$SqlConnection.Close()
Lokal läuft das Script brav, per Schedule steht es einfach bei 0x41301 (Running) und die Datenbank bekommt keine Einträge.
Task Scheduler:
Highest Privileges, run wether user is logged on, 2008 R2 Argument:
-NoLogo -command "&{\\server\c$\scripts\tasks\sql_count_folders_groupdata.ps1}"
oder
& '\\server\c$\scripts\tasks\sql_count_folders_groupdata.ps1'
Hat jemand eine Idee, warum das Script nichts macht?