/// <summary> /// Process users requested by -Name. /// </summary> /// <remarks> /// All arguments to -Name will be treated as names, /// even if a name looks like a SID. /// Users may be specified using wildcards. /// </remarks> private void ProcessNames() { if (Name != null) { foreach (var nm in Name) { try { if (WildcardPattern.ContainsWildcardCharacters(nm)) { var pattern = new WildcardPattern(nm, WildcardOptions.Compiled | WildcardOptions.IgnoreCase); foreach (var user in sam.GetMatchingLocalUsers(n => pattern.IsMatch(n))) { WriteObject(user); } } else { WriteObject(sam.GetLocalUser(nm)); } } catch (Exception ex) { WriteError(ex.MakeErrorRecord()); } } } }
/// <summary> /// Process user requested by -Name. /// </summary> /// <remarks> /// Arguments to -Name will be treated as names, /// even if a name looks like a SID. /// </remarks> private void ProcessName() { if (Name != null) { try { if (CheckShouldProcess(Name, NewName)) { sam.RenameLocalUser(sam.GetLocalUser(Name), NewName); } } catch (Exception ex) { WriteError(ex.MakeErrorRecord()); } } }
/// <summary> /// Process users requested by -Name. /// </summary> /// <remarks> /// All arguments to -Name will be treated as names, /// even if a name looks like a SID. /// </remarks> private void ProcessNames() { if (Name != null) { foreach (var name in Name) { try { if (CheckShouldProcess(name)) { sam.EnableLocalUser(sam.GetLocalUser(name), enabling); } } catch (Exception ex) { WriteError(ex.MakeErrorRecord()); } } } }
/// <summary> /// ProcessRecord method. /// </summary> protected override void ProcessRecord() { try { LocalUser user = null; if (InputObject != null) { if (CheckShouldProcess(InputObject.ToString())) { user = InputObject; } } else if (Name != null) { user = sam.GetLocalUser(Name); if (!CheckShouldProcess(Name)) { user = null; } } else if (SID != null) { user = sam.GetLocalUser(SID); if (!CheckShouldProcess(SID.ToString())) { user = null; } } if (user == null) { return; } // We start with what already exists var delta = user.Clone(); bool?passwordNeverExpires = null; foreach (var paramName in parameterNames) { if (this.HasParameter(paramName)) { switch (paramName) { case "AccountExpires": delta.AccountExpires = this.AccountExpires; break; case "Description": delta.Description = this.Description; break; case "FullName": delta.FullName = this.FullName; break; case "UserMayChangePassword": delta.UserMayChangePassword = this.UserMayChangePassword; break; case "PasswordNeverExpires": passwordNeverExpires = this.PasswordNeverExpires; break; } } } if (AccountNeverExpires.IsPresent) { delta.AccountExpires = null; } sam.UpdateLocalUser(user, delta, Password, passwordNeverExpires); } catch (Exception ex) { WriteError(ex.MakeErrorRecord()); } }