2016-03-29 15 views
5

に変換する理由

私は持っているファイルにトークンを設定しようとしています。トークンの内容は、ファイルの1行であり、それの文字列値は$token=$false

私はbool値にこのトークンを変換しようとすると、私はいくつかの問題を抱えているコード

をテストするために簡略化されています。だから私はテストコードを書いて、私はbool値に文字列を変換することができないことがわかった。

[String]$strValue = "$false" 
[Bool]$boolValue = $strValue 

Write-Host '$boolValue =' $boolValue 

これは、次のエラーを与える...

Cannot convert value "System.String" to type "System.Boolean", parameters of this type only accept booleans or numbers, use $true, $false, 1 or 0 instead. 
At :line:2 char:17 
+ [Bool]$boolValue <<<< = $strValue 

あなたが見ることができるように、私は、エラーメッセージによって提案されたよう$false値を使用していますが、それはそれを受け入れていません。何か案は?

+0

も参照してください。http://stackoverflow.com/questions/27484682/safely-converting-string-to-bool-in-powershell –

答えて

6

PowerShellでは、通常のエスケープ文字はバックティックです。通常の文字列が補間されます。$シンボルは、PowerShellによって認識され、解析されます。補間を防ぐには、$からエスケープする必要があります。これはあなたのために働く必要があります。

[String]$strValue = "`$false" 

あなたが最初の主要な$を削除する必要があり、一般的な方法でブール値に「$ true」または「の$ false」を変換するには:

$strValue = $strValue.Substring(1) 

その後に変換しますブール:

[Boolean]$boolValue = [System.Convert]::ToBoolean($strValue) 

あなたのコメントから、あなたのコードを使用するには、最短の解決策は次のようになります。

$AD_Export_TokenFromConfigFile = 
    [System.Convert]::ToBoolean(Get-Content $AD_Export_ConfigFile 
           | % { 
             If($_ -match "SearchUsersInfoInAD_ConfigToken=") { 
              ($_ -replace '*SearchUsersInfoInAD_ConfigToken*=','').Trim() 
             } 
            }.Substring(1)) 
+0

問題はこれをtrueに割り当てることです。それは文字列の読み方であるため、falseでなければなりません。おそらく、別のif/elseステートメントを追加してそれを処理する必要があります。しかし、私はそうする必要はないと思うだろう。 –

+0

"false"をブール値として解析しようとしましたが、運と同じ結果はありません。ブールは、私が書いている複雑なデザインのトークンに使われています。だからそれが望ましい。そうでなければ '$ tokenInUse'というだけでなく、複数のif文forとwhileループに' $ tokenInUse -eq 'false''を書かなければなりません。私は自分のコードを可能な限りきれいに保つようにしています。 –

+0

注:行全体は次のようになります。 '$ AD_Export_TokenFromConfigFile = Get-Content $ AD_Export_ConfigFile | %{if -match "SearchUsersInfoInAD_ConfigToken ="){($ _ -replace '* SearchUsersInfoInAD_ConfigToken * ='、 '')。Trim()}} ' '$ true'や' $ false'の値を文字列として取得します。私はちょうどそれをブールにキャストしようとしているが、それは常に真実としてキャストします... –

関連する問題