Вставить из PowerShell в SQL Таблица сервера - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть следующий скрипт PowerShell, который будет извлекать из переданной папки все файлы .wav, получать некоторую информацию и экспортировать в файл .csv, я хотел бы получить помощь по вставке в таблицу SQL Server. .

Param($FolderPath)
    $fulldate = Get-Date -format yyyyMMdd
    $startPath = Join-Path -Path $FolderPath -ChildPath $fulldate

$com = (New-Object -ComObject Shell.Application).NameSpace($startPath)
for($i = 0; $i -lt 64; $i++) {
    $name = $com.GetDetailsOf($com.Items, $i)
    if ($name -eq 'Length') { $lengthattribute = $i}
}

$com.Items() |
    ForEach-Object {
        [PSCustomObject]@{
            Name = $_.Name
            Size = $com.GetDetailsOf($_, 1)
            DateCreated = $com.GetDetailsOf($_, 4)
            Length = $com.GetDetailsOf($_, $lengthattribute)
        }
    } | Export-Csv -Path c:\Dell\audiolength.csv -Encoding ascii -NoTypeInformation
Get-Content c:\Dell\audiolength.csv -Encoding UTF8 | % { $_ -replace """","" } | Out-File "c:\Dell\audiolengthCLEAN.csv" 

Он работает так:

.\test.ps1 'c:\Dell\'

Сейчас он вставляется в .CSV, но я хочу вставить его прямо на SQL Сервер.

Это то, что у меня есть для SQL, но оно не работает ...

    Param(
        $FolderPath
    )
    $server = "localhost"
$Database = "Data"

$Connection = New-Object System.Data.SQLClient.SQLConnection
$Connection.ConnectionString = "server='$Server';database='$Database';trusted_connection=true;"
$Connection.Open()
$Command = New-Object System.Data.SQLClient.SQLCommand
$Command.Connection = $Connection
    $fulldate = Get-Date -format yyyyMMdd
$startPath = Join-Path -Path $FolderPath -ChildPath $fulldate

$com = (New-Object -ComObject Shell.Application).NameSpace($startPath)
for($i = 0; $i -lt 64; $i++) {
    $name = $com.GetDetailsOf($com.Items, $i)
    if ($name -eq 'Length') { $lengthattribute = $i}
}
$com.Items() |
    ForEach-Object {
        [PSCustomObject]@{
        Name = $_.Name
            Size = $com.GetDetailsOf($_, 1)
            DateCreated = $com.GetDetailsOf($_, 4)
            Length = $com.GetDetailsOf($_, $lengthattribute)
        } | Select-Object -Property Name,Size,DateCreated,Length 
$toto = 'Size'
foreach($i in $com) {
    $sql ="

INSERT INTO [dbo].[audiolength]
           ([Name]
           ,[Size]
           ,[DateCreated]
           ,[Length])
           VALUES 
           ('$lengthattribute' 
           ,'$toto' 
           ,'DateCreated' 
           ,'Length') 

    " 
    $Command.CommandText = $sql
    $Command.ExecuteReader()
}
$Connection.Close()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...