Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Powershell: String in andere Session übergeben

Frage Entwicklung Batch & Shell

Mitglied: beta-way-of-life

beta-way-of-life (Level 1) - Jetzt verbinden

15.10.2013, aktualisiert 12:05 Uhr, 3348 Aufrufe, 8 Kommentare, 1 Danke

Hallo Leute,

ich versuche eine Variable in eine zweite Session zu übergeben.

Grund ist folgender:

Für eine Fortschrittsanzeige wird eine neue Powershell Session erstellt.

Ich versuche einen String zu übergeben und diesen dann als Befehl auszuführen.
01.
 $a = "wbadmin blablabla"
Nun wird eine neue Session erzeugt und ich versuche den String $a auszuführen.
01.
Start-Progress {Invoke-Expression -Command $a}
Dies klappt natürlich nicht weil die Variable $a nicht existiert bzw. leer ist.....
Ich würde gerne wissen wie/ob ich das zum laufen bringe. ;)

Hier noch der Code zum erzeugen der neuen Session:
01.
function Start-Progress { 
02.
  param( 
03.
    [ScriptBlock] 
04.
    $code 
05.
06.
   
07.
  $newPowerShell = [PowerShell]::Create().AddScript($code) 
08.
  $handle = $newPowerShell.BeginInvoke() 
09.
   
10.
  while ($handle.IsCompleted -eq $false) { 
11.
    Write-Host '.' -NoNewline 
12.
    Start-Sleep -Milliseconds 500 
13.
14.
   
15.
  Write-Host '' 
16.
   
17.
  $newPowerShell.EndInvoke($handle) 
18.
   
19.
  $newPowerShell.Runspace.Close() 
20.
  $newPowerShell.Dispose() 
21.
}
Ich hoffe das ist einigermaßen verständlich.
Vielleicht hat jemand eine Idee.

LG Joe
Mitglied: colinardo
15.10.2013, aktualisiert um 13:52 Uhr
Hallo Joe,
mach den Aufruf der function doch einfach so, dann klappt 's bei meinen Tests
Start-Progress -code $a
Grüße Uwe
Bitte warten ..
Mitglied: beta-way-of-life
15.10.2013 um 14:11 Uhr
Zitat von colinardo:
Hallo Joe,
mach den Aufruf der function doch einfach so, dann klappt 's bei meinen Tests
> Start-Progress -code $a 
> 
Grüße Uwe

Hallo,

danke, aber wie bekomm ich so die Invoke-Expression hin?

Lg
Bitte warten ..
Mitglied: colinardo
15.10.2013 um 14:15 Uhr
brauchst du doch nicht. Der Befehl wird doch direkt als String an AddScript($code) übergeben und als Befehl interpretiert.
Das wäre doch doppelt gemoppelt.

Grüße Uwe
Bitte warten ..
Mitglied: beta-way-of-life
15.10.2013 um 14:20 Uhr
Zitat von colinardo:
brauchst du doch nicht. Der Befehl wird doch direkt als String an AddScript($code) übergeben und als Befehl
interpretiert.
Das wäre doch doppelt gemoppelt.

Grüße Uwe

Hab ich versucht, aber ich scheine zu blöd zu sein... ;)

01.
$wbadminbefehl = "wbadmin start backup -backuptarget:$verzeichnis -include:$volumes -vssfull -allCritical -quiet >> $log" 
02.
Start-Progress -code $wbadminbefehl
Ergibt:

01.
Start-Progress : Die Argumenttransformation für den Parameter "code" kann nicht verarbeitet werden. Der Wert "wbadmin start backup  
02.
-backuptarget:\\backup01\backup\joe\2013-10-15_14-17_joe01_windows-sicherung -include:C: -vssfull -allCritical -quiet >>  
03.
\\backup01\backup\joe\2013-10-15_14-17_joe01_windows-sicherung\windows-sicherung.log" vom Typ "System.String" kann nicht in den Typ "System.Management.Automation.ScriptBlock"  
04.
konvertiert werden. 
05.
In C:\Scripts\windows-sicherung-flexibel.ps1:222 Zeichen:38 
06.
+                 Start-Progress -code $wbadminbefehl 
07.
+                                      ~~~~~~~~~~~~~~ 
08.
    + CategoryInfo          : InvalidData: (:) [Start-Progress], ParameterBindingArgumentTransformationException 
09.
    + FullyQualifiedErrorId : ParameterArgumentTransformationError,Start-Progress
Bitte warten ..
Mitglied: colinardo
15.10.2013, aktualisiert um 14:32 Uhr
ach OK ich seh den Fehler, du hast den Parameter $code als Typ [ScriptBlock] definiert, dann musst du um den eigentlichen Befehl geschweifte Klammern setzen anstatt Anführungszeichen.
01.
$wbadminbefehl = {wbadmin start backup -backuptarget:$verzeichnis -include:$volumes -vssfull -allCritical -quiet >> $log} 
02.
Start-Progress -code $wbadminbefehl
oder als Alternative in deiner Function das [ScriptBlock] entfernen, dann kannst du die Variable mit Anführungszeichen verwenden.

Grüße Uwe
Bitte warten ..
Mitglied: beta-way-of-life
15.10.2013, aktualisiert um 15:00 Uhr
Danke, jetzt ist der Fehler weg.
Funktionieren tuts trotzdem nicht.... Jetzt wird gar kein wbadmin mehr gestartet.

01.
            if ($tempcopy -eq $true) { 
02.
                wbadmin start backup -backuptarget:$tempcopyverzeichnis -include:$volumes -vssfull -allCritical -quiet >> $log 
03.
04.
            elseif ($tempcopy -eq $false) { 
05.
                $wbadminbefehl = {wbadmin start backup -backuptarget:$verzeichnis -include:$volumes -vssfull -allCritical -quiet >> $log} 
06.
                Start-Progress -code $wbadminbefehl 
07.
                #wbadmin start backup -backuptarget:$verzeichnis -include:$volumes -vssfull -allCritical -quiet >> $log 
08.
09.
            else { 
10.
                echo Ungültiger tempcopy Wert! >> $log 
11.
            }
Mit dem Auskommentierten Befehl funktionierts Problemlos.... So leider nicht. Wird einfach übersprungen.
Bitte warten ..
Mitglied: colinardo
15.10.2013, aktualisiert um 15:33 Uhr
Die Variablen im Script-Block werden nicht aufgelöst, da müsstest du diese vorher mit Scope definieren. Am einfachsten machst du es wie ich oben als Alternative geschrieben habe :
[ScriptBlock] aus der Function entfernen und den Befehl nur in Anführungszeichen setzen.
01.
function Start-Progress { 
02.
  param( 
03.
    $code 
04.
05.
  ... 
06.
.... 
07.
... 
08.
09.
 
10.
$wbadminbefehl = "wbadmin start backup -backuptarget:$verzeichnis -include:$volumes -vssfull -allCritical -quiet >> $log" 
11.
Start-Progress -code $wbadminbefehl
...oder als weitere Option via [ScriptBlock]::Create("deinBefehl") definieren
01.
function Start-Progress { 
02.
  param( 
03.
    [ScriptBlock] $code 
04.
05.
   
06.
 .... 
07.
.... 
08.
09.
 
10.
$wbadminbefehl = [ScriptBlock]::Create("wbadmin start backup -backuptarget:$verzeichnis -include:$volumes -vssfull -allCritical -quiet >> $log") 
11.
Start-Progress -code $wbadminbefehl
Grüße Uwe
Bitte warten ..
Mitglied: beta-way-of-life
15.10.2013 um 15:43 Uhr
Bestens, jetzt läuft es.
Vielen Dank.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst PowerShell String zerlegen in Array, DataTable, Hashtable speichern (7)

Frage von derhoeppi zum Thema Batch & Shell ...

Batch & Shell
PowerShell Transkript Problem (5)

Frage von Marabunta zum Thema Batch & Shell ...

Batch & Shell
gelöst PowerShell, Get-Date, Sommerzeit Winterzeit, Zeitumstellung (6)

Frage von Rippchen zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows 7
gelöst BOOTMGR is missing (auch nach bootrec -RebuildBcd) (21)

Frage von Mipronimo zum Thema Windows 7 ...

Router & Routing
Tipps für Router (ca. 100 clients, VPN) (20)

Frage von oel-auge zum Thema Router & Routing ...

Windows Userverwaltung
Windows Freigabe: Zugriff auf alle Ordner trotz Sicherheitseinstellungen (18)

Frage von Pandreas zum Thema Windows Userverwaltung ...

Exchange Server
gelöst MS Exchange 2016 - Basicconfig Fragen (16)

Frage von maddig zum Thema Exchange Server ...