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

Mitglied: beta-way-of-life

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

15.10.2013, aktualisiert 12:05 Uhr, 4372 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
Powershell matching string
gelöst Frage von noname69Batch & Shell7 Kommentare

Moin Entwickler, bin derzeit dabei, zwei txt Dateien zu analysieren. Die eine ist (namentlich) zeitlich gesehen der Vorgänger und ...

Batch & Shell
Powershell String formatieren
gelöst Frage von derhoeppiBatch & Shell1 Kommentar

Hallo, ich habe ein Skript das einen Netzwerkswitch ausliest. Das hat bis dato auch funktioniert, aber mit einem Firmwareupdate ...

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. ...

Batch & Shell
Powershell string + nummer auslesen
gelöst Frage von Bastian94Batch & Shell2 Kommentare

Hallo Community, versuche gerade aus einer Textdatei folgende Varianten an Nummern auszulesen: "9417217" "KN822530703" "9487639-22000076B9" "8603862-040000E79F" "7504232-3300003261" "7220478-33000046AE" "5064368-060000C480" ...

Neue Wissensbeiträge
Datenschutz

SiSyPHuS Win10: Analyse der Telemetriekomponenten in Windows 10

Tipp von freesolo vor 1 StundeDatenschutz

Alle die sich detailliert für die Datensammlung interessieren die unter Windows 10 stattfindet, sollten sich folgende Analyse des BSI ...

Sicherheit
Adminrechte dank Intel-Grafikkarte
Information von DerWoWusste vor 4 StundenSicherheit

ist das Advisory, welches beschreibt, welche Intel HD Graphics Modelle Sicherheitslücken haben, mit denen sich schwache Nutzer zu Admins ...

Internet

EU Urheberrechtsreform: Eingriff in die Internetkultur

Information von Frank vor 22 StundenInternet1 Kommentar

Liebe Besucherin, lieber Besucher, warum erscheint das obere Banner in allen Beiträgen? Aus Protest gegen Teile der geplanten EU-Urheberrechtsreform ...

Windows Server
Windows Backup - FilterManager Event 3
Tipp von NixVerstehen vor 1 TagWindows Server

Hallo zusammen, ich bin kein gelernter ITler und auch beruflich nicht in dem Feld tätig. Wir setzen in unserem ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Glasfaserkabel verlegen und Anschlüsse setzen
Frage von LLL0rdLAN, WAN, Wireless20 Kommentare

Hallo Leute, ich muss demnächst ein Netzwerkkabel auf einer Länge von ca. 70 Metern verlegen. Das Netzwerkkabel soll dabei ...

Server-Hardware
Kompatibilität Tray für HP Proliant DL385 G10 vs. G8, G9
Frage von chris123Server-Hardware19 Kommentare

Hallo, weiß einer der hier anwesenden, ob die Trays für 2,5 " HDDs zwischen einem DL 385 G10 und ...

E-Mail
Wie funktionieren DNS Blacklisten?
gelöst Frage von WinLiCLIE-Mail12 Kommentare

Ich frage mich schon seit längerem, woher genau die Blacklisten für die Mailserver die Domains und Ips kennen die ...

Server-Hardware
Server Hardwareempfehlung für Projekt
gelöst Frage von heax22Server-Hardware12 Kommentare

Hallo zusammen, ich bin auf der Suche nach einer geeigneten Server Plattform um unter Hyper-V einen virtuellen Server 2016 ...