2017-11-07 9 views
1

私はいくつかのPowerShellPowerShell変数は文字列内で展開されていませんか?

param (
    [Parameter(Mandatory=$true)][string]$company, 
    [Parameter(Mandatory=$true)][string]$output 
) 

... 

$objRecordset.Open("Select Col1, Col2, Col3 From $company_Table1.DBF", $objConnection,$adOpenStatic,$adLockOptimistic) 

を書かれている私は

.\Test.ps1 -company A -output C:\test.txt 

を使用してそれを実行していますが、何らかの理由で$company変数は、それが「引用符」でだにもかかわらず、展開されていませんか?それが正常に動作A_Table1.dbfとして、私はそれをハードコーディング

Exception calling "Open" with "4" argument(s): "File '.dbf' does not exist." 
At line:17 char:1 
+ $objRecordset.Open("Select Col1, Col2, Col3 From $company_Table1. ... 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (:) [], MethodInvocationException 
    + FullyQualifiedErrorId : ComMethodTargetInvocation 

...

+0

[変数の拡張とエスケープ文字]の複製が可能です(https://stackoverflow.com/questions/6586364/variable-expansion-and-escaped-characters) –

答えて

5

それはPowerShellは、変数の名前として$company_Table1解析していることを知らせるエラーメッセージ。 _はデリミタとして機能しません。

は、変数名があることとカールかっこデータベースファイルの略です。DBF

${company}_Table1.DBF 
+0

もちろん、jeezです。ありがとう。私は一度それを許可すると私は受け入れるだろう。 – Jack

+0

またはフォーマットオペレータ – 4c74356b41

+0

を使うことができます。私はISEが '$ company_Table1'を単一の変数として表示していると思います。それを見逃すのは難しい。 –

-2

{}を使用して終了PowerShellを伝える必要があります。 データベースでselectを実行しようとしていますが、そのデータベースのテーブルでは選択していません。 これは意味がありません。

それは選択する必要があります* TBL_Whatever LIMIT 0,1 ....から

だからDBファイル自体への接続を開き、そのDB内のテーブルに対して、あなたの選択を行うための最初の必要性。

関連する問題