none
Invoke-commanc mit execution-policy und param-block RRS feed

  • Frage

  • Hallo,

    ich habe folgenden Code:

    $job = Invoke-command {param($DB,$pw) (powershell.exe -noprofile -executionpolicy Bypass "\\<Pfad>\Skript.ps1" $DB $pw)} -ArgumentList $DB_SID, $pw_user –ComputerName "server01" -Credential $credential -AsJob

    Ich möchte remote ein Skript ausführen (als Job), und diesem 2 Parameter übergeben. Das funktioniert an sich auch wunderbar, nur steht mein Job sofort auf Blocked, da eine Nachfrage aufpoppt ob ich das Skript wirklich ausführen will. Daher starte ich das Skript "mit" der executionpolicy bypass.

    Nur blöd, dass jetzt der Param-Block nicht als solcher erkannt wird.

    Wie rum muss ich denn das ganze schreiben, damit er brav alles macht?


    Dienstag, 12. März 2013 11:00

Antworten

  • Ok, jetzt bin ich buff!

    es hat folgender Maßen funktioniert:

    $job = Invoke-command -FilePath "<Pfad>\Skript.ps1" -ArgumentList $DB_SID, $pw_user –ComputerName "server01" -Credential $credential -AsJob
    

    Ich wäre nie darauf gekommen, dass -FilePath mich davor bewahrt, die Ausführung des Skriptes zu bestätigen. Somit kann ich mir dann natürlich das setzen der ExecutionPolicy sparen. Mein Skript ist glücklich, ich bin glücklich :-)

    @Peter: Danke für den Hinweis mit dem FilePath. Dein Beispiel funktioniert leider nicht. Er erkennt die Parameter (die hinter dem Skript-Pfad kommen) leider nicht.

    Dienstag, 12. März 2013 12:26

Alle Antworten

  • Ungetestet so müsste es gehen!

    $job = Invoke-command {param($DB,$pw) (powershell.exe -noprofile -executionpolicy Bypass -Command "& {\\<Pfad>\Skript.ps1 $DB $pw}")} -ArgumentList $DB_SID, $pw_user –ComputerName "server01" -Credential $credential -AsJob


    Gib mal in der Konsole oder ISE folgenden Befehl ein:

    PowerShell.exe /?

    Dann lies dir mal die Hilfe
    AUFMERKSAM durch!
    Dann siehst du in den Beispielen ganz unten, dass das -Command in Klammern oder in Anführungszeichen gehört um die Leerzeichen und die Parameter mit zu übergeben!

    Warum benutzt du PowerShell.exe?
    Lies dir mal die Hilfe zu Invoke-Command und dem Parameter -FilePath durch!

    Get-Help Invoke-Command -Full #oder : http://www.colorconsole.de/PS_Windows/de/Invoke-Command.htm

    Lies ebenso dies hier!
    Get-Help about_Remote_Jobs

    http://www.colorconsole.de/PS_Windows/de/about_remote_jobs.htm


    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!



    Dienstag, 12. März 2013 11:14
  • Ok, jetzt bin ich buff!

    es hat folgender Maßen funktioniert:

    $job = Invoke-command -FilePath "<Pfad>\Skript.ps1" -ArgumentList $DB_SID, $pw_user –ComputerName "server01" -Credential $credential -AsJob
    

    Ich wäre nie darauf gekommen, dass -FilePath mich davor bewahrt, die Ausführung des Skriptes zu bestätigen. Somit kann ich mir dann natürlich das setzen der ExecutionPolicy sparen. Mein Skript ist glücklich, ich bin glücklich :-)

    @Peter: Danke für den Hinweis mit dem FilePath. Dein Beispiel funktioniert leider nicht. Er erkennt die Parameter (die hinter dem Skript-Pfad kommen) leider nicht.

    Dienstag, 12. März 2013 12:26
  • Merke : Es lohnt sich IMMER die komplette Hilfe zu einen Cmdlet zu lesen ;-) !

    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!

    Dienstag, 12. März 2013 13:11