none
Powershell System.Int32 Fehlermeldung RRS feed

  • Allgemeine Diskussion

  • Hallo an alle,

    ich möchte mit einen Rutsch zig MSA´s anlegen. Hierzu habe ich mir gedacht nehme ich doch Powershell: 

    Leider stoße ich immer auf den Fehler "System.Int32" 

    Mein Skript sieht wie folgt aus: 

    $computername= "testserver"
    
    $Instanzarray= @("Instanz 1","Instanz 2")
    
    foreach ($i in $Instanzarray){
     Write-Host "Anfang von: " $i 
    
        ($i).substring(0,($i).IndexOf('-')).gettype().ToString()-$computername.ToString()
          
        #New-ADServiceAccount -Name ($i).substring(0,($i).IndexOf('-'))-$computername  -Description "Managed Service Account for SQL Server $computername\$i" -DisplayName "$computername\$i"  -RestrictToSingleComputer  -Enabled $true 
        #Add-ADComputerServiceAccount -Computer $computername -serviceAccount ($i).substring(0,($i).IndexOf('-'))-$computername
     Write-Host "Ende von: " $i
    
    
    
    }

    Wie ihr seht habe ich es auch schon mit "ToString" versucht jedoch auch ohne Erfolg. 

    Wieso tritt der Fehler auf? Was mach ich falsch? 

    Montag, 9. März 2020 10:39

Alle Antworten

  • In Deinem Substring-Gehirn-Verknotungs-Konstrukt versuchst Du mit .IndexOf('-') zu ermitteln, an welcher Stelle ein "Minus" zu finden ist .... da ist aber gar kein "Minus".  ;-) :-D

    Was willst Du eigentlich mit diesem Monstrum erreichen?


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''


    • Bearbeitet BOfH-666 Montag, 9. März 2020 13:32
    Montag, 9. März 2020 13:32
  • Hallo BOfH-666 ja das ist richtig! Ich hatte es wieder gut gemeint und das Array noch mal vorher angepasst. Im eigentlichen Array stehen "-" drin.  

    $Instanzarray= @("start-server1","start-2")

    Entschuldigung! Jetzt ist der Bindestrich da. Ziel ist es die beiden Auskommentierten Anweisungen zum Managed Service Account zu bestücken. 

    Montag, 9. März 2020 15:19
  • Die Frage ist eher, was willst du mit "Gettype().ToString()"!

    "IndexOf" liefert dir einen Int-Wert der Position.
    GetType() liefert dir den Typ des Ergebnisses, also Int.
    ToString() liefert dir nun den Namen des Type's, also "Int".
    Von diesem Namen versucht du den Namen des Computers abzuziehen, also quasi "Apfel - Birne".

    Aber was willst du eigentlich?

    $Arr = $i.Split("-")

    $arr[0].Trim() enthält den 1. Teil, $arr[1].Trim() den 2. Teil.
    Ist $arr.length = 1, ist kein 2. Teil vorhanden.



    Montag, 9. März 2020 15:33
  •  Ziel ist es die beiden Auskommentierten Anweisungen zum Managed Service Account zu bestücken. 

    Häh?  ;-) :-D  ... neee ... ich meinte doch nur die String-Acrobatik.  :-D

    Versteh ich das richtig - Du möchtest die MSA's quasi "start-<ComputerName>" nennen?

    Warum dann nicht einfach

    "start-{0}" -f $ENV:ComputerName
    ??  ;-)


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    • Bearbeitet BOfH-666 Montag, 9. März 2020 15:47
    Montag, 9. März 2020 15:43
  • Hallo an alle, 

    $computername= "testserver"
    
    $Instanzarray= @("start-server1","startx-2")
    
    
    
    foreach ($i in $Instanzarray){
     Write-Host "Anfang von: " $i 
    
        #($i).substring(0,($i).IndexOf('-')).gettype().ToString()-$computername.ToString()
        
        $test = ($i).substring(0,($i).IndexOf('-'))  #-$computername
        $test = $test +"-"+$computername
    
        #oder: 
        $test = ($i).substring(0,($i).IndexOf('-')) +"-"+$computername
    
        #write-Host $test
        
        Write-Host New-ADServiceAccount -Name `"$test`"  -Description "Managed Service Account for SQL Server $test" -DisplayName `"$test`"  -RestrictToSingleComputer  -Enabled $true  
        Write-Host Add-ADComputerServiceAccount -Computer $computername -serviceAccount $test
          
    
    
    
        #New-ADServiceAccount -Name ($i).substring(0,($i).IndexOf('-'))-$computername  -Description "Managed Service Account for SQL Server $computername\$i" -DisplayName "$computername\$i"  -RestrictToSingleComputer  -Enabled $true 
        #Add-ADComputerServiceAccount -Computer $computername -serviceAccount ($i).substring(0,($i).IndexOf('-'))-$computername
     Write-Host "Ende von: " $i
    
    }

    nach längeren Überlegungen ist es mir eingefallen. 

    In diesem Konstrukt von wahrscheinlich zu früh aufstehen (?!) 

    ($i).substring(0,($i).IndexOf('-')).gettype().ToString()-$computername.ToString()

    wird das Verbindungszeichen - als Rechenzeichen gesehen und rechnen kann man nur mit Zahlen. 

    Mein Ziel war es aber "start-Testsever" zu erhalten. 

    Wenn ihr aber weiterhin mögt könnt ihr mir gerne Verbesserungsvorschläge senden. Man lernt ja nie aus!

    Montag, 9. März 2020 19:27
  • Mein Ziel war es aber "start-Testsever" zu erhalten.

    Meinen Verbesserungvorschlag dafür hatte ich Dir oben ja schon gepostet. Wenn Du Deine Methode benutzt und Du in Deinem $Instanzarray zwei Strings mit "Start-" am Anfang drin hast und über dieses Array eine Schleife laufen lässt, die daraus und aus dem ComputerNamen etwas bastelt, wirst Du spätestens beim zweiten Durchlauf einen Fehler erhalten, weil das Konstrukt aus "Start-" und ComputerName beim zweiten Durchlauf das gleiche ist, wie beim ersten Durchlauf. Es ist also nicht nur ein Syntax-Fehler sondern auch ein Logik-Fehler.


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    • Bearbeitet BOfH-666 Dienstag, 10. März 2020 02:10
    Dienstag, 10. März 2020 01:50
  • Ich verstehe auch noch nicht wirklich, was eigentlich das Ziel ist...

    > $test = ($i).substring(0,($i).IndexOf('-')) #-$computername

    Substring ist irgendwie von gestern...
    PS C:\WINDOWS\system32> $i -match '^(?<Prefix>.*)-'
    True
    
    PS C:\WINDOWS\system32> $matches.Prefix
    startx
    > ($i).substring(0,($i).IndexOf('-')).gettype().ToString()-$computername.ToString()
    Klar wird das als Rechenzeichen gesehen, was auch sonst? Was Du hier allerdings mit GetType() erreichen wolltest, ist unklar. Und warum Du Strings noch mal ToString() castest, ebenfalls :-)


    Greetings/Grüße, Martin - https://mvp.microsoft.com/en-us/PublicProfile/5000017 Mal ein gutes Buch über GPOs lesen? - http://www.amazon.de/Windows-Server-2012--8-Gruppenrichtlinien/dp/3866456956 Good or bad GPOs? My blog - http://evilgpo.blogspot.com And if IT bothers me? Coke bottle design refreshment - http://sdrv.ms/14t35cq


    Dienstag, 10. März 2020 11:55
  • Dann schau doch einfach mal die Vorschläge und Hinweise an;-).
    Dienstag, 10. März 2020 17:01