none
String Variable mit System.Object als String verknüpfen... RRS feed

  • Frage

  • Hallo zusammen,

    ich habe hier ein seltsames Phänomen, dass ich mir nicht erklären kann.

    $temp = $DelGuid[0] | Out-String
    Write-Host $temp
    $temp = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileGuid\" + $temp
    Get-Item -Path $temp

    im Array $DelGuid sind Guids bestimmter Benutzerprofile gespeichert, die ich mit vorher mit Get-ItemProperty ausgelesen haben.

    Nun möchte ich einen Schlüssel, mit dem Namen der GUID des Benutzerprofiles mit "Get-Item" initialisieren.
    Dazu wollte ich einfach, den Pfad des Schlüssels zusammensetzen.
    Nur funktioniert das nicht...
    Es kommt die Fehlermeldung:
    Get-Item : Der Pfad "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileGuid\{688a8280-3d10-4bb7-b87a-b81e2d15a8c3}
    " kann nicht gefunden werden, da er nicht vorhanden ist.

    Setze ich den String manuell ein:

    $temp = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileGuid\" + "{688a8280-3d10-4bb7-b87a-b81e2d15a8c3}"

    funktioniert es...!?

    Der String: System.String + System.Object[] sieht identisch aus wie der String: System.String + System.String

    Was ist das Problem?

    vG MarkMae 


    Mittwoch, 13. November 2019 12:24

Antworten

  • Moin,

    Out-String addiert Zeichen zum Ergebnis. Was Du brauchst, ist entweder

    $DelGuid[0].ToString()

    oder, noch besser, Du achtest darauf, dass tatsächlich Strings in das Array reinkommen.


    Evgenij Smirnov

    http://evgenij.smirnov.de

    • Als Antwort markiert MarkMae Mittwoch, 13. November 2019 13:55
    Mittwoch, 13. November 2019 13:41

Alle Antworten

  • Moin,

    Out-String addiert Zeichen zum Ergebnis. Was Du brauchst, ist entweder

    $DelGuid[0].ToString()

    oder, noch besser, Du achtest darauf, dass tatsächlich Strings in das Array reinkommen.


    Evgenij Smirnov

    http://evgenij.smirnov.de

    • Als Antwort markiert MarkMae Mittwoch, 13. November 2019 13:55
    Mittwoch, 13. November 2019 13:41
  • Ich danke dir!
    Mittwoch, 13. November 2019 13:56
  • Eleganter gehts mit "-f":

    https://ss64.com/ps/syntax-f-operator.html

    $temp = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileGuid\{0}" -f $DelGuid[0]

    -f impliziert dann die ToString()-Methode.

    Mittwoch, 13. November 2019 16:44