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, 6221 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
Batch & Shell
gelöst PC nach einem Kopiervorgang herunterfahren - PowerShell Script? (4)

Frage von Stefan007 zum Thema Batch & Shell ...

Windows Server
PowerShell Script - Ordnerrechte setzen (7)

Frage von desmondjames zum Thema Windows Server ...

Batch & Shell
gelöst Powershell Script mit Zertifikat signieren (5)

Frage von zamsi7 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Exchange Server
gelöst Email in Exchange an 2ten Empfänger senden (18)

Frage von MultiStorm zum Thema Exchange Server ...

Weiterbildung
Gehaltsvorstellungen (14)

Frage von SYS64738 zum Thema Weiterbildung ...

Verschlüsselung & Zertifikate
gelöst Festplattenverschlüsselung im Ausland (13)

Frage von Nicolaas zum Thema Verschlüsselung & Zertifikate ...

Windows Server
gelöst Microsoft-Lizenz CALs und passendes Server-Betriebssystem (13)

Frage von planetIT2016 zum Thema Windows Server ...