わかりました、私は初心者です-これで迷子になりました:
WMIからのドライブデータがキャプチャされるアレイがあります。
$drivedata = $Drives | select @{Name="Kapazität(GB)";Expression={$_.Kapazität}}
アレイには次の値があります(2ドライブ):
@{Kapazität(GB)=1.500} @{Kapazität(GB)=1.500}
1.500を1500に変換したいだけです
私はここで見つけたさまざまな提案を試みましたが、それを機能させることができませんでした:
-Replace ".","" and [int]
は機能しません。正規表現が正しいかどうか、およびこれを行う方法はわかりません。
事前に多くの感謝を助けてください。
文字列をint
としてキャストするだけでは、確実に機能しません。 int32
に変換する必要があります。これには、.NET convert
クラスとそのToInt32
メソッドを使用できます。このメソッドには、メイン入力としてstring
($strNum
)、および変換する数値システムのbase number
(10
)が必要です。これは、10進法(10
基数)だけでなく、たとえば2進法(基数2)に変換できるためです。
このメソッドを試してください:
[string]$strNum = "1.500"
[int]$intNum = [convert]::ToInt32($strNum, 10)
$intNum
数値を含む変数を文字列として1で割るだけです。PowerShellは結果を自動的に整数に変換します。
$ a = 15; $ b = 2; $ a + $ b-> 152
ただし、前に分割した場合:
$ a/1 + $ b/1-> 17
このトピックは検証済みの解決策を受け取ったことがないため、解決策を求めた2つの問題に対する簡単な解決策を提供できます。
文字列クラスは、更新する文字列オブジェクトのreplaceメソッドを提供します。
例:
$myString = $myString.replace(".","")
System.int32クラス(または単にpowershellの[int])には、「TryParse」というメソッドがあります。このメソッドは、文字列が整数かどうかを示すブール値を返すだけでなく、整数の値を既存のtrueを返す場合、参照による変数。
例:
[string]$convertedInt = "1500"
[int]$returnedInt = 0
[bool]$result = [int]::TryParse($convertedInt, [ref]$returnedInt)
質問で最初に提起した問題に対処することを望みます。