Page 1 of 1

Powershell Script als "externes Programm"

Posted: 26. Nov 2015, 14:07
by Thomasgee
Hallo,

ich habe ein Powershell Script, welches mir über die Api eine "zusätzliche Information" als Variable des Computers schreibt.
Funktioniert soweit wunderbar, wenn ich es aus einem Powershell Fenster starte.

Starte ich das Script aber als externes Programm über die EMC, dann beendet sich das Script mit der Fehlermeldung:
Open-Matrix42ServiceConnection : Die Benennung
"Open-Matrix42ServiceConnection" wurde nicht als Name eines Cmdlet, einer
Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt.
Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist
(sofern enthalten), und wiederholen Sie den Vorgang.
Die SDK ist installiert, funktioniert auch wenn ich das Script über Powershell oder Powershell ISE laufen lasse.

Wo ist der Unterschied in den Aufrufen?

Script:

Code: Select all

param([string]$ComputerName,
    [string]$Server="it-empirum",
    [string]$User="ads\empirum.admin",
    [string]$PW="password",
    [string]$Value="Office_Lic",
    [string]$CustomVar="Custom08")


$Empirum=Open-Matrix42ServiceConnection -ServerName $Server -Port 9200 -UserName $User -Password $PW

$Computer=$Empirum.Computers | where{$_.Name -eq $ComputerName}
$Custom01=Get-EmpirumProperty -Session $Empirum -TargetObject $Computer -Property $CustomVar
set-EmpirumProperty -Session $Empirum -TargetObject $Computer -Property $Value -Value $Custom01

Re: Powershell Script als "externes Programm"

Posted: 14. Dec 2016, 11:56
by benjaminh
Hallo.
Ich habe aktuell genau das gleiche Problem. Haben Sie damals eine Lösung gefunden?
Viele Grüße,
Benjamin H.

Re: Powershell Script als "externes Programm"

Posted: 14. Dec 2016, 14:36
by Hendrik_Ambrosius
Sie müssen dann erst mal das Empirum Modul importieren damit die Befehle bekannt sind:
Import-Module Matrix42.SDK.Empirum.PowerShell
ggf. noch mit einem Pfad davor wenn er das Modul nicht so findet.

Re: Powershell Script als "externes Programm"

Posted: 15. Dec 2016, 09:35
by benjaminh
Danke für die Antwort.

Mein Script sieht bisher so aus:

Code: Select all

Param (
    [Parameter(Mandatory=$true)][String]$Computername,
    [Parameter(Mandatory=$true)][String]$Zuweisungsgruppe
)

Import-Module Matrix42.SDK.Empirum.Powershell

$ServerName = 'hahnsoft01.peterhahn.local'
$Port = 9200
$UserName = 'hahndom\empirum.service'
$Password = '***********************'

$session = Open-Matrix42ServiceConnection -ServerName $ServerName -Port $Port -UserName $UserName -Password $Password

$computer = $session.Computers | Where{ $_.Name -eq "$Computername" }
$group = $session.groups  | Where{ $_.Name -eq "$Zuweisungsgruppe" -and $_.GroupType -eq "AssignmentGroup" }

# Add the computer to the group
Add-EmpirumComputerToGroup -Session $session -Computer $computer -Group $group -Verbose

# Activate the computer (-Flags Software,OS,PXE)
Invoke-EmpirumComputerActivation -Session $session -Computer $computer -Flags Software -Verbose
Laut der Fehlermeldung erkennt er auch das "Param" nicht.
Fehlermeldung:

Code: Select all

Die Benennung "param" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.Der Typ "Matrix42.SDK.Contracts.Models.EmpirumGroupTypes" in der Assembly "Matrix42.SDK.Contracts, Version=1.0.164.0, Culture=neutral, PublicKeyToken=null" konnte nicht geladen werden.Die Benennung "Open-Matrix42ServiceConnection" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.Die Benennung "Add-EmpirumComputerToGroup" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.Die Benennung "Invoke-EmpirumComputerActivation" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.