Import-CSV mit Powershell über einen variablen Pfad

Ich versuche, eine CSV-Datei mit Powershell in eine Datenbank zu importieren, wobei der Pfad in einer Variablen definiert ist. Aber es scheint nicht zu funktionieren.

$path = "C:\Users\Admin\Desktop\TestFolder\file.txt"   
Import-CSV -Header ("header1","header2","header3") -Path $path

Das Obige funktioniert nicht und ich bin mir nicht sicher warum. Wenn ich $path drucke, erhalte ich den richtigen Pfad, und wenn ich Import-CSV mit dem Pfad direkt darin ausführe, funktioniert es auch einwandfrei.

Write-Host $path
C:\Users\Admin\Desktop\TestFolder\file.txt

Import-CSV -Header ("header1","header2","header3") -Path C:\Users\Admin\Desktop\TestFolder\file.txt
header1   test123
header2   test345
header3   test567

header1   test789
header2   test901
header3   test123
etc...

Mit Windows Server 2012 Standard, und die PowerShell 2.

Jede Hilfe wird geschätzt,
Dank


BEARBEITEN:
Mein vollständiger code sieht aus wie this, aber das funktioniert nicht. Ich versuche, einen Ordner mit PowerShell anzusehen und ihn dann in SQL Server 2012 zu importieren. Die Ordneruhr funktioniert einwandfrei, aber ich kann den Import anscheinend nicht zum Laufen bringen. Ich dachte, das Problem liegt bei $DataImport und ging daher zu den Grundlagen zurück, um herauszufinden, was das Problem war. Ich habe das sehr grundlegende Setup von Import-CSV wie oben erwähnt ausprobiert, aber dies (in seiner einfachen Version wie oben) funktioniert nicht.. also dachte ich, ich benutze Import-CSV falsch.

Author: John, 2013-03-14

2 answers

Das Pastebin scheint entfernt worden zu sein, daher kann ich das vollständige Skript nicht kommentieren. Möglicherweise möchten Sie jedoch Folgendes versuchen:

  • Verwenden Sie für alle Nur-Text-Zeichenfolgen, die als Parameter in Ihrem Skript verwendet werden, einfache Anführungszeichen ' '.
  • Verwenden Sie für alle Zeichenfolgen, die Variablen enthalten, die als Parameter in Ihrem Skript verwendet werden, doppelte Anführungszeichen " ".

Die ersten beiden Befehlszeilen, die Sie in Ihrer Frage angeben, sollten beispielsweise lauten:

$path = 'C:\Users\Admin\Desktop\TestFolder\file.txt'
Import-CSV -Header ('header1','header2','header3') -Path "$path"
 0
Author: Iszi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-09-07 06:17:49

Bitte versuchen Sie es so:

foreach($file in dir $CodesetBulkLoadLocation -Recurse -Include @("*.csv"));
{

#$files = @{
#'ICD10' = @{ 'EDIT_FUNCTION'='UCM-REPT-TEEN-PREG-DIAG'; 'TABLE_FUNCTION'='UCM-REPT'; 'CODE_FUNCTION' = 'I0' }
#}
#foreach($file_desc in $files.GetEnumerator())
#{
$filename = $file_desc.Key
$edit_func = $file_desc.Value.EDIT_FUNCTION
$table_func = $file_desc.Value.TABLE_FUNCTION
$code_func = $file_desc.Value.CODE_FUNCTION

$filePath = "C:\jobs\AA\DEV6\UCM\${filename}.csv"
$importFile = Import-CSV $filePath
foreach($item in $importFile)
    {
   $proc1 = $item.DIAG_NBR
   $proc2 = $item.DIAG_NBR
  # $ymdeff = $item.YMDEFF
   #$ymdend = $item.YMDEND
   #$ymdtrans = $item.YMDTRANS

   Write-Verbose "$proc1, $proc2"

   $currentDate = Get-Date -Format yyyyMMdd


# *******************************************************************************
# * Insert codes and fees into the su_edit_detail.
# *******************************************************************************

'{0,-60}{1,20}' -f "Insert TEEN PREGNANCY  ICD9 AND ICD10 CODES  into the su_edit_detail ",(Get-Date -Format yyyyMMdd:hhmmss);

$myQuery = @"
SET PAGES 600;
SET LINES 4000;
SET ECHO ON;
SET serveroutput on;

WHENEVER sqlerror exit sql.sqlcode;

insert into SU_EDIT_DETAIL(EDIT_FUNCTION, TABLE_FUNCTION, CODE_FUNCTION, CODE_TYPE,CODE_BEGIN, CODE_END, EXCLUDE, INCLUDE_X, OP_NBR, TRANSCODE, VOID, YMDEFF, YMDEND, YMDTRANS)
 select '$edit_func','$table_func','$code_func','DIAG','$proc1','$proc2',' ',' ','MIS', 'C',' ',20141001, 99991231, 20131120
from dual where not exists(select * from SU_EDIT_DETAIL where (EDIT_FUNCTION = '$edit_func' and TABLE_FUNCTION = '$table_func' and CODE_BEGIN='$proc1' and CODE_END='$proc2'));
commit;               
"@
$null = Invoke-SqlPlus -MessageOnFail 'Insert into su_edit_detail failed' -Query $myQuery;

}
}
}
 -1
Author: VIjay Patel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-02-25 04:08:07