2017-07-24 2 views
2

Ich habe eine Powershell-Funktion erstellt, um Sitzungsanmeldungen remote auf einem Server zu aktivieren oder zu deaktivieren. Es ist im Grunde das Powershell-Äquivalent von "Anmeldung/Aktivierung ändern".Ausnahme beim Aufrufen von "Put" mit "0" -Argument (en): "" auf Win32_TerminalServiceSetting

Es funktioniert auf den meisten Maschinen, aber aus irgendeinem Grund Ich verstehe nicht, für einige ist es die folgende Fehlermeldung zurück:

Exception    : System.Management.Automation.MethodInvocationException: Exception calling "Put" with "0" argument(s): "" ---> System.IO.FileNotFoundException 
          at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo) 
          at System.Management.ManagementObject.Put(PutOptions options) 
          at System.Management.ManagementObject.Put() 
          at Put(Object , Object[]) 
          at System.Management.Automation.MethodInformation.Invoke(Object target, Object[] arguments) 
          at System.Management.Automation.DotNetAdapter.AuxiliaryMethodInvoke(Object target, Object[] arguments, MethodInformation methodInformation, Object[] 
         originalArguments) 
          --- End of inner exception stack trace --- 
          at System.Management.Automation.DotNetAdapter.AuxiliaryMethodInvoke(Object target, Object[] arguments, MethodInformation methodInformation, Object[] 
         originalArguments) 
          at System.Management.Automation.DotNetAdapter.MethodInvokeDotNet(String methodName, Object target, MethodInformation[] methodInformation, 
         PSMethodInvocationConstraints invocationConstraints, Object[] arguments) 
          at System.Management.Automation.DotNetAdapter.MethodInvoke(PSMethod method, PSMethodInvocationConstraints invocationConstraints, Object[] arguments) 
          at System.Management.Automation.Adapter.BaseMethodInvoke(PSMethod method, PSMethodInvocationConstraints invocationConstraints, Object[] arguments) 
          at System.Management.Automation.PSMethod.Invoke(PSMethodInvocationConstraints invocationConstraints, Object[] arguments) 
          at System.Management.Automation.PSMethod.Invoke(Object[] arguments) 
          at System.Management.Automation.Language.PSInvokeMemberBinder.InvokeAdaptedMember(Object obj, String methodName, Object[] args) 
          at System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite site, T0 arg0) 
          at System.Management.Automation.Interpreter.DynamicInstruction`2.Run(InterpretedFrame frame) 
          at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) 
TargetObject   : 
CategoryInfo   : NotSpecified: (:) [], MethodInvocationException 
FullyQualifiedErrorId : DotNetMethodException 
ErrorDetails   : 
InvocationInfo  : System.Management.Automation.InvocationInfo 
ScriptStackTrace  : at <ScriptBlock>, <No file>: line 1 
PipelineIterationInfo : {} 

Der Fehler-Stack-Trace hilft mir nicht.

Ich verwende denselben Code mit demselben lokalen Administrator auf allen Computern. Hier

ist der eigentliche Code-Schnipsel:

$TSConnector = Get-WmiObject -Class Win32_TerminalServiceSetting -Namespace "root/cimv2/terminalservices" -Authentication PacketPrivacy 
$TSConnector.Logons = 0 
$TSConnector.Put() 

Jede Idee?

+0

Konnte nicht auf mehreren Server 2012R2-2016 Hosts reproduzieren, bitte teilen Sie ein bisschen mehr Details über den fehlgeschlagenen Host. Vielleicht wurde es überhaupt nicht für Terminaldienste aktiviert oder der Dienst wird gestoppt? –

+0

Sie können auf etwas @GrigorySergeev sein. Auf allen Servern läuft 2008R2, aber ich habe bemerkt, dass ihre Konfiguration des Remotedesktop-Sitzungshosts etwas anders ist: Bei den Geräten, die einwandfrei funktionieren, ist Citrix ICA 3.0 installiert, während auf den fehlerhaften Servern nur RDP 7.1 installiert ist. – geoced

+0

Nun, keiner meiner Testpersonen hat ICA, funktioniert aber gut. Windows-Updates müssen neu gestartet werden? .. –

Antwort

1

Es stellt sich also heraus, dass auf Windows Server 2008 R2, wenn die Rolle des Remotedesktop-Sitzungshosts nicht installiert ist, der Server für "Remotedesktop für Administration" konfiguriert ist.

Wie erläutert auf this technet article:

Die folgenden sind Einschränkungen der Remote Desktop für Administration:

  1. Die Standardverbindung (RDP-Tcp) können nur maximal zwei gleichzeitige Fernverbindungen.

  2. Lizenzierungseinstellungen können nicht konfiguriert werden.

  3. RD Connection Broker-Einstellungen können nicht konfiguriert werden.

  4. Der Benutzeranmeldemodus kann nicht konfiguriert werden.

Also am Ende hatte ich diese Ausnahme zu fangen und wieder zurück change logon /disable in diesem speziellen Fall zu verwenden.

Kudos zu @GrigorySergeev für mich in die richtige Richtung!

Verwandte Themen