Top-Themen

Aktuelle Themen (A bis Z)

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, 3714 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
Mit Powershell Dateien an Drucker übergeben
gelöst Frage von ChrissssiBatch & Shell2 Kommentare

Hallo zusammen, ich habe die Aufgabe bekommen verschiedene Arten von Dateitypen über Powershell zu drucken. PDF und txt funktioniert ...

Batch & Shell
Powershell String selektieren....
gelöst Frage von mguenth83Batch & Shell4 Kommentare

Hi, Ich wollte Euch mal fragen wie Ihr das machen würdetich habe eine Liste von AD Usern mit Telefonnummer ...

Windows Server
Powershell: UInt32 in String konvertieren
gelöst Frage von Susie1703Windows Server2 Kommentare

Hallo an Alle, ich stehe gerade auf dem Schlauch und mein Powershell Guru Kollege ist im Urlaub. Habe folgendes ...

Batch & Shell
Powershell select-string -pattern
gelöst Frage von LianenSchwingerBatch & Shell2 Kommentare

Hallo, ich muss auf die schnelle ca. 1000 EDIFACT Dateien auswerten. Dazu versuche ich mich gerade in Powershell einzuarbeiten. ...

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 3 StundenBatch & Shell1 Kommentar

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 5 StundenHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 20 StundenMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 21 StundenSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server17 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...

Linux
OpenSource Groupware
Frage von FA-jkaLinux13 Kommentare

Hallo, ich suche eine Groupware als Alternative zum Exchange. Wesentliche Aufgaben sind die Handhabung von E-Mails (persönliche und gemeinsam ...

Server-Hardware
Braucht ein Server eine Grafikkarte?
gelöst Frage von lcer00Server-Hardware13 Kommentare

Hallo zusammen, habe gerade 3 Stunden gebraucht, um herauszubekommen, dass die Remotemanagement-Console von Intel (RMM4) nur funktioniert, wenn die ...