Ok, jeg er nybegynner - og fortapt i dette:
Jeg har en Array der noen stasjonsdata fra WMI er fanget opp:
$drivedata = $Drives | select @{Name="Kapazität(GB)";Expression={$_.Kapazität}}
Arrayet har disse verdiene (2 stasjoner):
@{Kapazität(GB)=1.500} @{Kapazität(GB)=1.500}
og ønsker bare å konvertere 1.500 til et tall 1500
Jeg prøvde forskjellige forslag jeg fant her, men klarte ikke å få det til å fungere:
-Erstatt ".",""" og [int]
fungerer ikke.
Jeg er ikke sikker på om regex ville være riktig og hvordan du gjør dette.
For hjelp mange takk på forhånd.
Bare å kaste strengen som en int
vil ikke fungere pålitelig. Du må konvertere den til en int32
. Til dette kan du bruke .NET-klassen convert
og metoden ToInt32
. Metoden krever en string
($strNum
) som hovedinndata, og basetallet
(10
) som tallsystemet skal konverteres til. Dette er fordi du ikke bare kan konvertere til desimalsystemet (10
-basetallet), men også til for eksempel det binære systemet (base 2).
Prøv denne metoden:
[string]$strNum = "1.500"
[int]$intNum = [convert]::ToInt32($strNum, 10)
$intNum
Siden dette emnet aldri fikk en verifisert løsning, kan jeg tilby en enkel løsning på de to problemene jeg ser du ba om løsninger på.
String-klassen har en replace-metode for strengobjektet du vil oppdatere:
Eksempel:
$myString = $myString.replace(".","")
Klassen system.int32 (eller bare [int] i Powershell) har en metode som heter "TryParse" som ikke bare returnerer en boolsk verdi som angir om strengen er et heltall, men som også returnerer verdien av heltallet til en eksisterende variabel som referanse hvis den returnerer true.
Eksempel:
[string]$convertedInt = "1500"
[int]$returnedInt = 0
[bool]$result = [int]::TryParse($convertedInt, [ref]$returnedInt)
Jeg håper dette løser problemet du opprinnelig tok opp i spørsmålet ditt.