Völlig Neuling einfache Powershell Frage Ich versuche, das zu tun folgende - für jede * SQL-Datei im aktuellen Verzeichnis LaufeWie @ Zeichen in Powershell zu verwenden?
sqlplus username/[email protected]_identifier_specified_in_argument @file_name
Hier ist, was ich habe, so weit:
$scripts = dir *.sql
foreach($script in $scripts) {
write-host sqlplus username/password"@"$args "@"$script.Name
}
(Ich weiß, Write-Host gibt es auf den Bildschirm, ich versuche nur für jetzt zu debuggen)
Allerdings gibt es etwas funky mit wie Powershell behandelt die @ -Zeichen und wenn ich das laufe ich immer etwas li ke
PS C:\code\scripts> C:\utils\run_sql_scripts_on.ps1 identifier
sqlplus username/[email protected] @ ALERTS.sql
Sehen Sie das Leerzeichen nach dem "@"? Was gibt?
Was die 'und @ Symbole tatsächlich tun machen? –
Der Backtick ist das Escapezeichen in PowerShell. Das @ kann in PS verwendet werden, um leere Arrays zu erstellen, zum Beispiel $ a = @(). In diesem Fall glaube ich nicht, dass das @ das Problem war, sondern die doppelten Anführungszeichen. Ersetzen Sie das @ durch einen Buchstaben und Sie sehen immer noch den zusätzlichen Platz. Ich denke, Write-Host fügt automatisch ein Leerzeichen nach einer doppelten Anführungszeichenfolge ein. – aphoria
Das Problem ist, dass PowerShell "@" und $ script.home als zwei separate Argumente sah, da die zweite ein Ausdruck ist und Write-Host alle Argumente mit einem Leerzeichen verbindet. – JasonMArcher