none
Variable in Copy-item verwenden RRS feed

  • Frage

  • hallo zusammen

    eigentlich zwei Fragen: wie kann man Variable oder auch die typischen %USERPROFILE%\Desktop in copy befehlen verwenden?

    get-date (Powershell Objekt) geht zb. auch nicht  auch nicht mit get-date.tostring()

    $a = (get-date -Format YYYYMMDD)
    $a = a$ + ".txt"
    Copy-Item c:\temp\test.txt -Destination $a


    CH


    • Bearbeitet -- Chris -- Mittwoch, 7. Dezember 2016 12:38
    Mittwoch, 7. Dezember 2016 12:38

Antworten

  • Moin Chris,

    meintest du etwas wie "Env:\USERPROFILE"

    ich baue mir meine Get-Dates immer wie folgt:

    hier allerdings mit CSV als beispiel.

    $date = Get-Date -Format "yyyy-MM-dd"
    $FileName = "$Date" + "_" + "$Tablename" + ".csv"
    #Export table in csv file
    $Table.Tables[$TableName] | export-csv -Path "\\Server\Reports$\$Filename" -delimiter ";" -NoTypeInformation -encoding UTF8

    Gruß

    Carsten


    Wenn Dir eine Antwort weiter geholfen hat dann markiere sie doch bitte als Antwort! LG Carsten

    • Als Antwort markiert -- Chris -- Mittwoch, 7. Dezember 2016 13:10
    Mittwoch, 7. Dezember 2016 12:49
  • Hallo,

    bei den Get-Date Formatangaben spiel das Gross-/Kleinschreiben eine Rolle.
    Click

    get-date -Format 'yyyyMMdd'

    Und das Userprofil solltest Du besser so ermitteln:

    $env:USERPROFILE


    Beste Gruesse
    brima



    • Bearbeitet brima Mittwoch, 7. Dezember 2016 12:59
    • Als Antwort markiert -- Chris -- Mittwoch, 7. Dezember 2016 13:10
    Mittwoch, 7. Dezember 2016 12:51
  • In Powershell kannst Du auf Variablen über den entsprechenden Provider, wie auf das Dateisystem zugreifen. Ein

    Get-ChildItem Variable:

    listet Dir also alle gerade existierenden Variablen auf. Und ein 

    Get-ChildItem ENV:

    listet Dir alle Umgebungsvariablen auf (... kommt von Environment).

    Und

    (Get-Date).ToString()
    funktioniert. Bringt aber ohne Weiteres nicht das Ergebnis, was Du erwartest.  ;-)



    Grüße - Best regards

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

    • Als Antwort markiert -- Chris -- Mittwoch, 7. Dezember 2016 13:10
    Mittwoch, 7. Dezember 2016 13:00
  • Hallo Chris,

    Augen aufmachen. :-)

    Falsch:

    $a = 'Test'
    $a = a$ + ".txt"

    Richtig:

    $a = 'Test'
    $a = $a + ".txt"

    also $a nicht a$

    oder noch kürzer

    $a = 'Test'
    $a += ".txt"

    Beste Gruesse
    brima


    • Als Antwort markiert -- Chris -- Mittwoch, 7. Dezember 2016 13:23
    • Bearbeitet brima Mittwoch, 7. Dezember 2016 13:24
    Mittwoch, 7. Dezember 2016 13:21

Alle Antworten

  • Moin Chris,

    meintest du etwas wie "Env:\USERPROFILE"

    ich baue mir meine Get-Dates immer wie folgt:

    hier allerdings mit CSV als beispiel.

    $date = Get-Date -Format "yyyy-MM-dd"
    $FileName = "$Date" + "_" + "$Tablename" + ".csv"
    #Export table in csv file
    $Table.Tables[$TableName] | export-csv -Path "\\Server\Reports$\$Filename" -delimiter ";" -NoTypeInformation -encoding UTF8

    Gruß

    Carsten


    Wenn Dir eine Antwort weiter geholfen hat dann markiere sie doch bitte als Antwort! LG Carsten

    • Als Antwort markiert -- Chris -- Mittwoch, 7. Dezember 2016 13:10
    Mittwoch, 7. Dezember 2016 12:49
  • Hallo,

    bei den Get-Date Formatangaben spiel das Gross-/Kleinschreiben eine Rolle.
    Click

    get-date -Format 'yyyyMMdd'

    Und das Userprofil solltest Du besser so ermitteln:

    $env:USERPROFILE


    Beste Gruesse
    brima



    • Bearbeitet brima Mittwoch, 7. Dezember 2016 12:59
    • Als Antwort markiert -- Chris -- Mittwoch, 7. Dezember 2016 13:10
    Mittwoch, 7. Dezember 2016 12:51
  • In Powershell kannst Du auf Variablen über den entsprechenden Provider, wie auf das Dateisystem zugreifen. Ein

    Get-ChildItem Variable:

    listet Dir also alle gerade existierenden Variablen auf. Und ein 

    Get-ChildItem ENV:

    listet Dir alle Umgebungsvariablen auf (... kommt von Environment).

    Und

    (Get-Date).ToString()
    funktioniert. Bringt aber ohne Weiteres nicht das Ergebnis, was Du erwartest.  ;-)



    Grüße - Best regards

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

    • Als Antwort markiert -- Chris -- Mittwoch, 7. Dezember 2016 13:10
    Mittwoch, 7. Dezember 2016 13:00
  • Danke Carsten

    dein Code hat mir sehr geholfen. Man muss auch die Variable unter Hochkomma setzen. Dann klappts.

    $a = a$ + ".txt" daher ging es nicht

    einmal so einmal so, das soll jemand verstehen

    das geht zum Beispiel ohne Hochkomma in einem andere Codebeispiel. Hat jetzt nicht mit copy zu tun, aber man sieht, dass Variable mit String verbunden werden.

    $UserID + "," + $path >> $FileName


    CH

    Mittwoch, 7. Dezember 2016 13:09
  • Hallo Chris,

    Augen aufmachen. :-)

    Falsch:

    $a = 'Test'
    $a = a$ + ".txt"

    Richtig:

    $a = 'Test'
    $a = $a + ".txt"

    also $a nicht a$

    oder noch kürzer

    $a = 'Test'
    $a += ".txt"

    Beste Gruesse
    brima


    • Als Antwort markiert -- Chris -- Mittwoch, 7. Dezember 2016 13:23
    • Bearbeitet brima Mittwoch, 7. Dezember 2016 13:24
    Mittwoch, 7. Dezember 2016 13:21
  • hab's jetzt nochmals - mit euren Tipps - etwas kompakter geschrieben

    $date = "c:\temp\" + (Get-Date -Format "yyyy-MM-ddmm") + ".txt"
    Copy-Item c:\temp\test.txt -Destination $date


    CH

    Mittwoch, 7. Dezember 2016 13:25