none
Passwort und User zum kopieren integrieren RRS feed

  • Frage

  • Hallo liebe Community,

    Ich habe mich bisher noch nicht wirklich mit PowerShell beschäftigt. Heute kam mein Cheff auf mich zu und meinte ich solle doch so schnell wie möglich (am besten heute noch) eine Lösung finden wie man, zu Schulungszwecken, die host Datei auf den Schulungsrechnern ersetzen kann.

    Das ganze soll wie folgt ablaufen:

    -Usb stick mit *.ps1 und der veränderten host datei einstecken

    -*.ps1 ausführen

    -*.ps1 soll automatisch die host datei auf dem Schulungsrechner ersetzen

    Auf allen Schulungsrechnern ist der selbe Adminname und das selbe Adminpasswort.

    Ich habe mich jetzt schon durchs internet gewühlt und bin immer nur so weit gekommen, das es scheinbar via Netzwerk geht (was Cheff aus unerfindlichen gründen nicht will) aber das es probleme geben würde wenn man die Datei von USB an dem PC ausführen will.

    Ich bin inzwischen so weit:

    Copy-Item -Path g$\hosts -Destination c$\%SystemRoot%\system32\drivers\etc\ -Credential admin, password

    Das ganze funktioniert aber nicht so ganz wie ich will 1. sagt er mir das g$\c\... nicht existiert und 2. will er ein Passwort für admin, password

    Könnt ihr mit bitte sagen was ich falsch mache?

    Freitag, 15. Februar 2013 09:56

Antworten

  • Das Dollarzeichen ($) wird in der PowerShell benutzt um Variablen zu erkennen. Deshalb werden G$ und C$ so angewendet nicht funktionieren.

    Ich nehme mal an, das mit G$ der USB Stick gemeint ist!?
    Dieser kann auf jedem Rechner einen anderen Laufwerksbuchstaben bekommen!
    Also ist die Verwendung von G sowieso nicht anzuraten.

    Um Dateien oder Order im selben Laufwerk zu adressieren nimmt man am besten Relative Pfadangaben!
    In Windows kann man den Aktuellen Pfad mit einem Punkt adressieren!
    Siehe: http://sourceserver.info/wiki/rel_pfad
    Auch in der PowerShell bekommt man den Aktuellen Pfad mit dem Punkt und einem Schrägstrich (.\).
    Siehe: http://www.colorconsole.de/PS_Windows/de/about_locations.htm
    Wenn deine HOST Datei im selben Ordner auf dem USB stick liegt, wie dein .ps1 Script, dann kannst du mit folgender Pfadangabe sicher darauf zugreifen OHNE ein Laufwerksbuchstaben Adressieren zu müssen!.  .\Host (man kann in der PowerShell auch die Variable $Myinvocation.MyCommand.path nehmen).

    Windows stellt viele Umgebungsvariablen zu Verfügung die man kennen sollte!
    Du benutz hier %systemroot%, wie in einer DOS-Konsole, PowerShell ist kein DOS!
    Ebenso ist bei Benutzung von von dieser Variablen die Angabe eines Laufwerks (C$) unnötig und fehlerhaft, da das Laufwerk schon adressiert wird!
    Hast du dir den Inhalt dieser Variablen schon einmal angesehen?

    Man kann Windows auch auf D: oder E: oder….. Installieren, dann greift dein fester Pfad mit C$ sowiso ins leere!
    Siehe: http://www.winfaq.de/faq_html/Content/tip0000/onlinefaq.php?h=tip0328.htm
    Und : http://de.wikipedia.org/wiki/Umgebungsvariable
    In PowerShell greift man auf Umgebungsvariablen mit dem ENV: Laufwerk zu.
    Siehe: http://www.colorconsole.de/PS_Windows/de/about_environment_variables.htm

    Nun sieht dein Befehl etwa so aus:

    Copy-Item -Path .\hosts -Destination $env:SystemRoot\system32\drivers\etc

    Da du sowieso mit dem USB-Stick von Rechner zu Rechner laufen musst, schlage ich dir vor, dass du dich gleich mit dem Administrator anmeldest, dann brauchst du kein Passwort im Script angeben.
    Alternativ schlage ich vor, eine PowerShell mit "ausführen als" zu starten, die dann mit den richtigen rechten läuft und das Script startet.
    Alles andere läuft darauf hinaus, das du das Passwort auf dem USB-Stick lesbar abspeichern musst, was ich nicht empfehle!  


    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!


    Sonntag, 17. Februar 2013 12:52
  • Auch wenn in deinem Script Credentials übergeben werden, wird der Befehl mit dem User Administrator ausgeführt!
    Der User muss also IMMER gewechselt und angemeldet sein, ein anderer hat keine rechte dafür!
    Mach das mal deinem Chef klar ;-) !


    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!

    • Als Antwort markiert PSbeginner Mittwoch, 20. Februar 2013 07:17
    Mittwoch, 20. Februar 2013 06:51

Alle Antworten

  • Samstag, 16. Februar 2013 06:58
  • Das Dollarzeichen ($) wird in der PowerShell benutzt um Variablen zu erkennen. Deshalb werden G$ und C$ so angewendet nicht funktionieren.

    Ich nehme mal an, das mit G$ der USB Stick gemeint ist!?
    Dieser kann auf jedem Rechner einen anderen Laufwerksbuchstaben bekommen!
    Also ist die Verwendung von G sowieso nicht anzuraten.

    Um Dateien oder Order im selben Laufwerk zu adressieren nimmt man am besten Relative Pfadangaben!
    In Windows kann man den Aktuellen Pfad mit einem Punkt adressieren!
    Siehe: http://sourceserver.info/wiki/rel_pfad
    Auch in der PowerShell bekommt man den Aktuellen Pfad mit dem Punkt und einem Schrägstrich (.\).
    Siehe: http://www.colorconsole.de/PS_Windows/de/about_locations.htm
    Wenn deine HOST Datei im selben Ordner auf dem USB stick liegt, wie dein .ps1 Script, dann kannst du mit folgender Pfadangabe sicher darauf zugreifen OHNE ein Laufwerksbuchstaben Adressieren zu müssen!.  .\Host (man kann in der PowerShell auch die Variable $Myinvocation.MyCommand.path nehmen).

    Windows stellt viele Umgebungsvariablen zu Verfügung die man kennen sollte!
    Du benutz hier %systemroot%, wie in einer DOS-Konsole, PowerShell ist kein DOS!
    Ebenso ist bei Benutzung von von dieser Variablen die Angabe eines Laufwerks (C$) unnötig und fehlerhaft, da das Laufwerk schon adressiert wird!
    Hast du dir den Inhalt dieser Variablen schon einmal angesehen?

    Man kann Windows auch auf D: oder E: oder….. Installieren, dann greift dein fester Pfad mit C$ sowiso ins leere!
    Siehe: http://www.winfaq.de/faq_html/Content/tip0000/onlinefaq.php?h=tip0328.htm
    Und : http://de.wikipedia.org/wiki/Umgebungsvariable
    In PowerShell greift man auf Umgebungsvariablen mit dem ENV: Laufwerk zu.
    Siehe: http://www.colorconsole.de/PS_Windows/de/about_environment_variables.htm

    Nun sieht dein Befehl etwa so aus:

    Copy-Item -Path .\hosts -Destination $env:SystemRoot\system32\drivers\etc

    Da du sowieso mit dem USB-Stick von Rechner zu Rechner laufen musst, schlage ich dir vor, dass du dich gleich mit dem Administrator anmeldest, dann brauchst du kein Passwort im Script angeben.
    Alternativ schlage ich vor, eine PowerShell mit "ausführen als" zu starten, die dann mit den richtigen rechten läuft und das Script startet.
    Alles andere läuft darauf hinaus, das du das Passwort auf dem USB-Stick lesbar abspeichern musst, was ich nicht empfehle!  


    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!


    Sonntag, 17. Februar 2013 12:52
  • PowerShell Buch empfehlung siehe hier in der mitte des Threads
    http://social.technet.microsoft.com/Forums/de-DE/powershell_de/thread/84727252-3d5d-459e-b3a8-73a15807a807

    Kostenlose PowerShell Informationen (Workshop, E-Books) findest du hier:
    http://www.admin-source.de/BlogDeu/kostenlose-powershell-ebook-tutorial-workshop-howto

    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!

    Sonntag, 17. Februar 2013 17:32
  • Ich hätte auch vorgeschlagen das man das alles machen kann indem man sich als Administrator anmeldet aber da ist Chef dagegen.

    Ich habe auch schon zig andere bzw einfachere Lösungen vorgeschlagen aber Chef will genau das und genau so.

    ich versuche es jetzt mal mit den von euch genannten Möglichkeiten. Danke schonmal.

    Dienstag, 19. Februar 2013 07:17
  • Auch wenn in deinem Script Credentials übergeben werden, wird der Befehl mit dem User Administrator ausgeführt!
    Der User muss also IMMER gewechselt und angemeldet sein, ein anderer hat keine rechte dafür!
    Mach das mal deinem Chef klar ;-) !


    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!

    • Als Antwort markiert PSbeginner Mittwoch, 20. Februar 2013 07:17
    Mittwoch, 20. Februar 2013 06:51
  • danke das is genau das was ich mir dachte (und hören wollte)

    also isses fast einfacher die datei auf jedem rechner einfach ins verzeichniss zu ziehen

    Mittwoch, 20. Februar 2013 07:17