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

PowerShell Script starten mit externen CMDlets

Frage Entwicklung

Mitglied: Raducanu

Raducanu (Level 1) - Jetzt verbinden

23.11.2011 um 11:42 Uhr, 6370 Aufrufe, 1 Kommentar

Guten Tag,

ich bin absolute unerfahren was PowerShell betrifft, muß aber ein Problem lösen.
Hier hoffe ich auch eure Hilfe.

Problem:

Software welches eigene CMDlets mitbringt (DataCore SANsymphony-V). Diese CMDlets sollen aus einer Batchfile genutzt werden (werden aus einem Program angestartet welches nur *.bat oder *.exe Dateien ausführen kann -> APC PowerChute Network Shutdown)

Wenn ich die Powershell der Software starte (powershell.exe mit .ps1 Konfigscript zum registrieren der CMDlets) und dort die Befehle bzw meine *.ps1 ausführe funktioniert alles wunderbar.
01.
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe  -c ". \"C:\Program Files\DataCore\SANsymphony\Register-DcsCmdlets.ps1\""
Die Register-DcsCmdlets.ps1 sieht wie folgt aus:

01.
param([ScriptBlock]$scriptBlock, [switch]$forceExit, [string[]]$params) 
02.
 
03.
$configurationPath = $Env:TEMP | Join-Path -ChildPath ([Guid]::NewGuid()) 
04.
New-Item -Path $configurationPath -ItemType Container > $null 
05.
@" 
06.
<?xml version="1.0" encoding="utf-8" ?> 
07.
<configuration> 
08.
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
09.
        <supportedRuntime version="v4.0"/> 
10.
        <supportedRuntime version="v2.0.50727" /> 
11.
    </startup> 
12.
</configuration> 
13.
"@ | Set-Content -Path $configurationPath\powershell.exe.activation_config -Encoding UTF8 
14.
 
15.
$envVariableName = 'COMPLUS_ApplicationMigrationRuntimeActivationConfigPath' 
16.
$envVariableOld = [Environment]::GetEnvironmentVariable($envVariableName) 
17.
[Environment]::SetEnvironmentVariable($envVariableName, $configurationPath) 
18.
 
19.
$importCmdletBlock = {  
20.
	$bpKey = 'BaseProductKey' 
21.
    	$regKey = get-Item "HKLM:\Software\DataCore\Executive" 
22.
    	$strProductKey = $regKey.getValue($bpKey) 
23.
    	$regKey = get-Item "HKLM:\$strProductKey" 
24.
    	$installPath = $regKey.getValue('InstallPath') 
25.
	 
26.
	Import-Module "$installPath\DataCore.Executive.Cmdlets.dll" -DisableNameChecking -ErrorAction Stop 
27.
	Write-Host "Successfully registered SANsymphony-V Cmdlets for Windows PowerShell." 
28.
29.
 
30.
try 
31.
32.
    Cls 
33.
34.
catch 
35.
36.
    # Nothing to do. This will throw an exception only when it is called 
37.
    # without a console. 
38.
39.
 
40.
try 
41.
42.
	if ($scriptBlock -ne $null) 
43.
44.
		$finalBlockString = $importCmdletBlock.ToString() + "`n" + $scriptBlock.ToString() 
45.
		$finalBlock = [scriptblock]::Create($finalBlockString) 
46.
 
47.
		if ($forceExit) 
48.
		{ & powershell.exe -Command $finalBlock -args $params} 
49.
		else 
50.
		{ & powershell.exe -NoExit -Command $finalBlock -args $params } 
51.
52.
	else 
53.
54.
		& powershell.exe -Command $importCmdletBlock -NoExit 
55.
56.
57.
finally 
58.
59.
    [Environment]::SetEnvironmentVariable($envVariableName, $envVariableOld) 
60.
    $configurationPath | Remove-Item -Recurse 
61.
}
Nur wie führe ich meine *.ps1 Datei aus einer *.bat Datei aus, so dass auch die CMDlets der Software zur Verfügung stehen?
Meine *.ps1 Datei
01.
#Konfiguration 
02.
$server="SSY-V-01" 
03.
$username="Administrator" 
04.
$password="test123!" 
05.
 
06.
 
07.
Connect-DcsServer -Server $server -UserName $username -Password $password -Connection $server 
08.
Disable-DcsServerWriteCache -Server $server -Connection $server
Mitglied: Raducanu
23.11.2011 um 15:13 Uhr
Ich bin etwas weiter gekommen:

Mit

01.
#Konfiguration 
02.
$server="SSY-V-01" 
03.
$username="Administrator" 
04.
$password="test123!" 
05.
 
06.
Import-Module 'C:\Program Files\DataCore\SANsymphony\DataCore.Executive.Cmdlets.dll" 
07.
Connect-DcsServer -Server $server -UserName $username -Password $password -Connection $server 
08.
Disable-DcsServerWriteCache -Server $server -Connection $server
Startet zumindest eine PS mit DataCore CMDlets.
Nur die Befehle Connect-DcsServer und Disable-DcsServerWriteCache werden erst ausgeführt wenn ich mit "exit" die DataCore CMDlet Ebende wieder verlasse.
Bitte warten ..
Ähnliche Inhalte
Windows 10
gelöst Hyper-V Cmdlet (Powershell) Sprachproblem (2)

Frage von Highend01 zum Thema Windows 10 ...

VB for Applications
Powershell Script aus VBA heraus ausführen (2)

Frage von mcnico1978 zum Thema VB for Applications ...

Batch & Shell
gelöst Powershell HPE Cmdlet - If - Else (3)

Frage von MasterBaiter zum Thema Batch & Shell ...

Vmware
gelöst VMware Powershell CLI Scripts (15)

Frage von vinevg zum Thema Vmware ...

Neue Wissensbeiträge
Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(2)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Windows 10

Windows 10: Erste Anmeldung Animation deaktivieren

(3)

Anleitung von alemanne21 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Netzwerkprotokolle
gelöst Leiten "dumme" Switches VLAN-Tags mit durch? (25)

Frage von coltseavers zum Thema Netzwerkprotokolle ...

Windows Server
gelöst Neues KB für W10 1607 und W2K16 wieder mal nicht im WSUS 3.0, hat das noch jemand? (16)

Frage von departure69 zum Thema Windows Server ...

Router & Routing
FTTH bzw FTTB Router (13)

Frage von ukulele-7 zum Thema Router & Routing ...

Batch & Shell
Batch zum suchen und verschieben von Verknüpfungen (12)

Frage von zeroblue2005 zum Thema Batch & Shell ...