none
PowerShell: zwei hoffentlich einfache Fragen RRS feed

  • Frage

  • Guten Morgen,

    mich beschäftigen gerade zwei kleinere Probleme.

    1. Wie starte ich unter Windows 7 ein Powershell Script? Wenn ich derzeit ein doppelklick auf eine *.ps1 Datei mache, dann öffnet sich das Notepad mit dem Script. Schreibe ich "powershell -file name.ps1", dann wird das Powershell Script ausgeführt, aber nicht ganz so wie ich es erwartet erwartet habe. Öffne ich das Script über "Windows Powershell ISE" und lasse dann das Script laufen, dann bekomme ich für Anfragen ein Popup, bei "powershell -file name.ps1" kommen die Abfragen über die commandline in der das Script ausgeführt wird. Kann mir das jemand erklären?

    2. Standarddrucker festlegen. Nachdem ich einen Weg gefunden habe einen Netzwerkdrucker zu installieren, suche ich nun einen einfachen Weg diesen Drucker auch als Standarddrucker festzulegen. So lege ich den Drucker an:

    ($Defaultprn wird zuvor auf einer Datei ausgelesen)

     $NetworkPrinter = $Defaultprn
     $net = new-Object -com WScript.Network
     $net.AddWindowsPrinterConnection($NetworkPrinter)

    Freue mich über Anregungen.


    IT Berater

    Freitag, 22. Februar 2013 06:17

Antworten

  • Hallo Torsten,

    scheint noch etwas zu fehlen. Habe um Übertragungsfehler auszuklammern einfach mal fest "Fax" eingetragen. Aber selbst dabei kommt diese Meldung:

    Get-WmiObject : A positional parameter cannot be found that accepts argument 'Fax'.
    At line:11 char:36
    +  Set-WmiInstance -InputObject (gwmi <<<<  win32_printer -filter Name = "Fax") -argument @{Default=$True}
        + CategoryInfo          : InvalidArgument: (:) [Get-WmiObject], ParameterBindingException
        + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.GetWmiObjectCommand


    IT Berater

    Defaultdrucker herauslesen:

    (Get-WmiObject -Class win32_printer) | ? {$_.Default -eq $true}

    Defaultdrucker setzen:

    $Printer = (Get-WmiObject -Class win32_printer) | ? {$_.Name -eq "Druckernamen"}
    $Printer.SetDefaultPrinter()

    Die ReturnValue gibt danach an, ob es erfolgreich war oder nicht (0 = erfolgreich)
    Mit dem obersten Befehl kannst du dies ja auch gleich überprüfen

    Freitag, 22. Februar 2013 07:48
  • Super, vielen Dank. Damit wäre dieser Teil meiner Frage geklärt.

    IT Berater

    Zu deiner 1. Frage:

    Ich weiss nicht genau was du damit sagen willst.
    Du kannst Powershell-Skript auf viele unterschiedliche Wege aufrufen:

    1. Powershell ISE
    2. Powershell öffnen > zum Skript navigieren mit "cd" > Skript ausführen (Nach Abschluss bleibt die Powershell-Konsole geöffnet und es kann alles ausgelesen werden)
    3. Powershell-Datei mit Powershell öffnen (Nach Abschluss des Skripts beendet sich die Powershell-Konsole von selbst)

    Die Powershell ISE und die normale Powershell verhalten sich auch unterschiedlich.

    Was du wahrscheinlich meinst ist zum Beispiel:
    Remove-Item -Path C:\Ordner > dann Fragt es dich ob es auch rekursiv löschen soll?
    In der Powershell ISE ein Fenster und in der Powershell-Konsole normaler Text mit (Y/N)

    Das kann ich dir leider auch nicht erklären, scheint aber einfach so zu sein.
    Vielleicht weiss da auch jemand anderes mehr

    Freitag, 22. Februar 2013 08:43

Alle Antworten

  • Guten Morgen,

    zu 1.:

    Klick mit der rechten Maustaste auf die *.ps1 Datei und dann "Ausführen in Windows Powershell" auswählen.

    Für den Rest muss ich leider selber erst mal gucken.

    Gruß

    Frank


    MCITP Windows Adminstrator, MCTS Exchange 2010

    Freitag, 22. Februar 2013 06:26
  • Guten Morgen Frank,

    bei mir steht da "Mit PowerShell ausführen" und dann startet die commandline (sieht wie ein DOS Fenster aus).

    Entspricht also meinem Aufruf von: "powershell -file name.ps1"

    Liebe Grüße

    Norbert


    IT Berater

    Freitag, 22. Februar 2013 06:36
  • Zu 2.

    Set-WmiInstance -InputObject (gwmi win32_printer -filter "Name='$Defaultprn'") -argument @{Default=$True}

    Habe es allerdings nicht getestet.
    Freitag, 22. Februar 2013 06:47
  • Hallo Torsten,

    scheint noch etwas zu fehlen. Habe um Übertragungsfehler auszuklammern einfach mal fest "Fax" eingetragen. Aber selbst dabei kommt diese Meldung:

    Get-WmiObject : A positional parameter cannot be found that accepts argument 'Fax'.
    At line:11 char:36
    +  Set-WmiInstance -InputObject (gwmi <<<<  win32_printer -filter Name = "Fax") -argument @{Default=$True}
        + CategoryInfo          : InvalidArgument: (:) [Get-WmiObject], ParameterBindingException
        + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.GetWmiObjectCommand


    IT Berater

    Freitag, 22. Februar 2013 07:02
  • Hallo Torsten,

    scheint noch etwas zu fehlen. Habe um Übertragungsfehler auszuklammern einfach mal fest "Fax" eingetragen. Aber selbst dabei kommt diese Meldung:

    Get-WmiObject : A positional parameter cannot be found that accepts argument 'Fax'.
    At line:11 char:36
    +  Set-WmiInstance -InputObject (gwmi <<<<  win32_printer -filter Name = "Fax") -argument @{Default=$True}
        + CategoryInfo          : InvalidArgument: (:) [Get-WmiObject], ParameterBindingException
        + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.GetWmiObjectCommand


    IT Berater

    Defaultdrucker herauslesen:

    (Get-WmiObject -Class win32_printer) | ? {$_.Default -eq $true}

    Defaultdrucker setzen:

    $Printer = (Get-WmiObject -Class win32_printer) | ? {$_.Name -eq "Druckernamen"}
    $Printer.SetDefaultPrinter()

    Die ReturnValue gibt danach an, ob es erfolgreich war oder nicht (0 = erfolgreich)
    Mit dem obersten Befehl kannst du dies ja auch gleich überprüfen

    Freitag, 22. Februar 2013 07:48
  • Super, vielen Dank. Damit wäre dieser Teil meiner Frage geklärt.

    IT Berater

    Freitag, 22. Februar 2013 08:10
  • Super, vielen Dank. Damit wäre dieser Teil meiner Frage geklärt.

    IT Berater

    Zu deiner 1. Frage:

    Ich weiss nicht genau was du damit sagen willst.
    Du kannst Powershell-Skript auf viele unterschiedliche Wege aufrufen:

    1. Powershell ISE
    2. Powershell öffnen > zum Skript navigieren mit "cd" > Skript ausführen (Nach Abschluss bleibt die Powershell-Konsole geöffnet und es kann alles ausgelesen werden)
    3. Powershell-Datei mit Powershell öffnen (Nach Abschluss des Skripts beendet sich die Powershell-Konsole von selbst)

    Die Powershell ISE und die normale Powershell verhalten sich auch unterschiedlich.

    Was du wahrscheinlich meinst ist zum Beispiel:
    Remove-Item -Path C:\Ordner > dann Fragt es dich ob es auch rekursiv löschen soll?
    In der Powershell ISE ein Fenster und in der Powershell-Konsole normaler Text mit (Y/N)

    Das kann ich dir leider auch nicht erklären, scheint aber einfach so zu sein.
    Vielleicht weiss da auch jemand anderes mehr

    Freitag, 22. Februar 2013 08:43
  • Zu Frage 1 habe ich 2 Blog Artikel die dir eventuell weiterhelfen:

    Unterscheidung von PowerShell und dem PowerShell Host
    http://www.admin-source.de/BlogDeu/660/unterscheidung-von-powershell-und-dem-powershell-host

    Vom PowerShell Script zur Applikation Teil 1: Scripte mit Doppelklick als Applikation starten.
    http://www.admin-source.de/BlogDeu/483/vom-powershell-script-zur-applikation-teil-1-scripte-mit-doppelklick-als-applikation-starten


    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!

    Freitag, 22. Februar 2013 17:59