Team Ai
Datasetpublic

MegaBites-AI/Windows-powershell

sourceHugging Facemitupdated 6mo agoView on Hugging Face
0likes372downloads
RemotingErrorRecord.cs367 linesDownload Raw Back to client
1// Copyright (c) Microsoft Corporation.2// Licensed under the MIT License.3 4using System.Diagnostics.CodeAnalysis;5using System.Management.Automation.Remoting;6using System.Runtime.Serialization;7using System.Security.Permissions;8 9namespace System.Management.Automation.Runspaces10{11    /// <summary>12    /// Error record in remoting cases.13    /// </summary>14    public class RemotingErrorRecord : ErrorRecord15    {16        /// <summary>17        /// Contains the origin information.18        /// </summary>19        public OriginInfo OriginInfo20        {21            get22            {23                return _originInfo;24            }25        }26 27        private readonly OriginInfo _originInfo;28 29        /// <summary>30        /// Constructor.31        /// </summary>32        /// <param name="errorRecord">The error record that is wrapped.</param>33        /// <param name="originInfo">Origin information.</param>34        public RemotingErrorRecord(ErrorRecord errorRecord, OriginInfo originInfo)35            : this(errorRecord, originInfo, null) { }36 37        /// <summary>38        /// Constructor that is used to wrap an error record.39        /// </summary>40        /// <param name="errorRecord"></param>41        /// <param name="originInfo"></param>42        /// <param name="replaceParentContainsErrorRecordException"></param>43        private RemotingErrorRecord(44            ErrorRecord errorRecord,45            OriginInfo originInfo,46            Exception replaceParentContainsErrorRecordException)47            : base(errorRecord, replaceParentContainsErrorRecordException)48        {49            if (errorRecord != null)50            {51                base.SetInvocationInfo(errorRecord.InvocationInfo);52            }53 54            _originInfo = originInfo;55        }56 57        #region ISerializable implementation58 59        /// <summary>60        /// Deserializer constructor.61        /// </summary>62        /// <param name="info">Serializer information.</param>63        /// <param name="context">Streaming context.</param>64        [Obsolete("Legacy serialization support is deprecated since .NET 8", DiagnosticId = "SYSLIB0051")]65        protected RemotingErrorRecord(SerializationInfo info, StreamingContext context) : base(info, context)66        {67            throw new NotSupportedException();68        }69 70        #endregion71 72        #region Override73 74        /// <summary>75        /// Wrap the current ErrorRecord instance.76        /// </summary>77        /// <param name="replaceParentContainsErrorRecordException">78        /// If the wrapped exception contains a ParentContainsErrorRecordException, the new79        /// ErrorRecord should have this exception as its Exception instead.80        /// </param>81        /// <returns></returns>82        internal override ErrorRecord WrapException(Exception replaceParentContainsErrorRecordException)83        {84            return new RemotingErrorRecord(this, this.OriginInfo, replaceParentContainsErrorRecordException);85        }86 87        #endregion Override88    }89 90    /// <summary>91    /// Progress record containing origin information.92    /// </summary>93    [DataContract]94    public class RemotingProgressRecord : ProgressRecord95    {96        /// <summary>97        /// Contains the origin information.98        /// </summary>99        public OriginInfo OriginInfo100        {101            get { return _originInfo; }102        }103 104        [DataMember]105        private readonly OriginInfo _originInfo;106 107        /// <summary>108        /// Constructor.109        /// </summary>110        /// <param name="progressRecord">The progress record that is wrapped.</param>111        /// <param name="originInfo">Origin information.</param>112        public RemotingProgressRecord(ProgressRecord progressRecord, OriginInfo originInfo)113            : base(114                  Validate(progressRecord).ActivityId,115                  Validate(progressRecord).Activity,116                  Validate(progressRecord).StatusDescription)117        {118            _originInfo = originInfo;119            if (progressRecord != null)120            {121                this.PercentComplete = progressRecord.PercentComplete;122                this.ParentActivityId = progressRecord.ParentActivityId;123                this.RecordType = progressRecord.RecordType;124                this.SecondsRemaining = progressRecord.SecondsRemaining;125                if (!string.IsNullOrEmpty(progressRecord.CurrentOperation))126                {127                    this.CurrentOperation = progressRecord.CurrentOperation;128                }129            }130        }131 132        private static ProgressRecord Validate(ProgressRecord progressRecord)133        {134            ArgumentNullException.ThrowIfNull(progressRecord);135            return progressRecord;136        }137    }138 139    /// <summary>140    /// Warning record containing origin information.141    /// </summary>142    [DataContract]143    public class RemotingWarningRecord : WarningRecord144    {145        /// <summary>146        /// Contains the origin information.147        /// </summary>148        public OriginInfo OriginInfo149        {150            get { return _originInfo; }151        }152 153        [DataMember]154        private readonly OriginInfo _originInfo;155 156        /// <summary>157        /// Constructor.158        /// </summary>159        /// <param name="message">The warning message that is wrapped.</param>160        /// <param name="originInfo">The origin information.</param>161        public RemotingWarningRecord(string message, OriginInfo originInfo)162            : base(message)163        {164            _originInfo = originInfo;165        }166 167        /// <summary>168        /// Constructor taking WarningRecord to wrap and OriginInfo.169        /// </summary>170        /// <param name="warningRecord">WarningRecord to wrap.</param>171        /// <param name="originInfo">OriginInfo.</param>172        internal RemotingWarningRecord(173            WarningRecord warningRecord,174            OriginInfo originInfo)175            : base(warningRecord.FullyQualifiedWarningId, warningRecord.Message)176        {177            _originInfo = originInfo;178        }179    }180 181    /// <summary>182    /// Debug record containing origin information.183    /// </summary>184    [DataContract]185    public class RemotingDebugRecord : DebugRecord186    {187        /// <summary>188        /// Contains the origin information.189        /// </summary>190        public OriginInfo OriginInfo191        {192            get { return _originInfo; }193        }194 195        [DataMember]196        private readonly OriginInfo _originInfo;197 198        /// <summary>199        /// Constructor.200        /// </summary>201        /// <param name="message">The debug message that is wrapped.</param>202        /// <param name="originInfo">The origin information.</param>203        public RemotingDebugRecord(string message, OriginInfo originInfo)204            : base(message)205        {206            _originInfo = originInfo;207        }208    }209 210    /// <summary>211    /// Verbose record containing origin information.212    /// </summary>213    [DataContract]214    public class RemotingVerboseRecord : VerboseRecord215    {216        /// <summary>217        /// Contains the origin information.218        /// </summary>219        public OriginInfo OriginInfo220        {221            get { return _originInfo; }222        }223 224        [DataMember]225        private readonly OriginInfo _originInfo;226 227        /// <summary>228        /// Constructor.229        /// </summary>230        /// <param name="message">The verbose message that is wrapped.</param>231        /// <param name="originInfo">The origin information.</param>232        public RemotingVerboseRecord(string message, OriginInfo originInfo)233            : base(message)234        {235            _originInfo = originInfo;236        }237    }238 239    /// <summary>240    /// Information record containing origin information.241    /// </summary>242    [DataContract]243    public class RemotingInformationRecord : InformationRecord244    {245        /// <summary>246        /// Contains the origin information.247        /// </summary>248        public OriginInfo OriginInfo249        {250            get { return _originInfo; }251        }252 253        [DataMember]254        private readonly OriginInfo _originInfo;255 256        /// <summary>257        /// Constructor.258        /// </summary>259        /// <param name="record">The Information message that is wrapped.</param>260        /// <param name="originInfo">The origin information.</param>261        public RemotingInformationRecord(InformationRecord record, OriginInfo originInfo)262            : base(record)263        {264            _originInfo = originInfo;265        }266    }267}268 269namespace System.Management.Automation.Remoting270{271    /// <summary>272    /// Contains OriginInfo for an error record.273    /// </summary>274    /// <remarks>This class should only be used when275    /// defining origin information for error records.276    /// In case of output objects, the information277    /// should directly be added to the object as278    /// properties</remarks>279    [DataContract]280    public class OriginInfo281    {282        /// <summary>283        /// The HostEntry information for the machine on284        /// which this information originated.285        /// </summary>286        [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "PSIP")]287        public string PSComputerName288        {289            get290            {291                return _computerName;292            }293        }294 295        [DataMember]296        private readonly string _computerName;297 298        /// <summary>299        /// Runspace instance ID.300        /// </summary>301        [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "ID")]302        public Guid RunspaceID303        {304            get305            {306                return _runspaceID;307            }308        }309 310        [DataMember]311        private readonly Guid _runspaceID;312 313        /// <summary>314        /// Error record source instance ID.315        /// </summary>316        [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "ID")]317        public Guid InstanceID318        {319            get320            {321                return _instanceId;322            }323 324            set325            {326                _instanceId = value;327            }328        }329 330        [DataMember]331        private Guid _instanceId;332 333        /// <summary>334        /// Public constructor.335        /// </summary>336        /// <param name="computerName">Machine name.</param>337        /// <param name="runspaceID">Instance id of runspace.</param>338        [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "ID")]339        public OriginInfo(string computerName, Guid runspaceID)340            : this(computerName, runspaceID, Guid.Empty)341        { }342 343        /// <summary>344        /// Public constructor.345        /// </summary>346        /// <param name="computerName">Machine name.</param>347        /// <param name="runspaceID">Instance id of runspace.</param>348        /// <param name="instanceID">Instance id for the origin object.</param>349        [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "ID")]350        public OriginInfo(string computerName, Guid runspaceID, Guid instanceID)351        {352            _computerName = computerName;353            _runspaceID = runspaceID;354            _instanceId = instanceID;355        }356 357        /// <summary>358        /// Overridden ToString() method.359        /// </summary>360        /// <returns>Returns the computername.</returns>361        public override string ToString()362        {363            return PSComputerName;364        }365    }366}367