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, 3842 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: Anführungszeichen in Parameter mit übergeben

Frage von tralvellerBatch & Shell3 Kommentare

Hallo zusammen, ich erstelle mir gerade ein Powershell-Skript welches mit Parameter arbeitet und zum Beispiel einen Pfad mit Leerzeichen ...

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
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 15 StundenWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 16 StundenSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Datenschutz

Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10

Information von Penny.Cilin vor 1 TagDatenschutz8 Kommentare

Hallo, passend zum Thema Ablösung LIMUX in München ein Beitrag bei Heise (siehe Link folgend). Behörden ignorieren Sicherheitsbedenken gegenüber ...

Sicherheit
Information Security Hub Munich airport
Information von brammer vor 1 TagSicherheit

Hallo, Neues Center für Cyber Kriminalität am Münchener Flughafen brammer

Heiß diskutierte Inhalte
Exchange Server
Exchange Postfach Einbindung Betriebs-rat -Arzt, Bewerbung .
gelöst Frage von YellowcakeExchange Server23 Kommentare

Hey ich habe da mal eine Denksport Aufgabe bekommen Genutzt wird ein Exchange Server 2010. hier gibt es den ...

Windows Server
Downgrade von Windows Server 2016 auf 2012 - Wie vorgehen?
Frage von EstefaniaWindows Server13 Kommentare

Guten Ich habe eine Frage an Erfahrene unter euch. Durch einen InPlace Upgrade wurde Windows Server 2012 auf die ...

Datenschutz
Telematikinfrastruktur Erfahrungsaustausch
Frage von MOS6581Datenschutz12 Kommentare

Moin, unter meinen Kunden befinden sich auch einige Ärzte, welche sich künftig mit der Telematikinfrastruktur-Geschichte der Gematik herumärgern dürfen. ...

Windows Server
Delgegierte OU via RDP verwalten - Objektverwaltung zuweisen
gelöst Frage von TOAOICEWindows Server12 Kommentare

Hallo, ich habe folgendes Problem. Ich möchte in meiner Domäne (Server2016), einer Gruppe (OUAdmin) Berechtigungen auf die OU Test ...