Formatear texto en Capitales "EL TEXTO" > "El Texto"

function ProperCase($txt)
{
 ## String -> String
 ## Formatea de Forma Capitalizada: EL TEXTO > El Texto
 $txt = $txt.ToLower()
 $txt = [Regex]::Replace($txt, '\b(\w)', { param($m) $m.Value.ToUpper() })
 return $txt.trim()
}
 
PS > ProperCase "HOLA QUE tAl ToDO Bien"
Hola Que Tal Todo Bien

convertir fechas wmi a formato decente

function Get-SystemUptime           
{           
   $os = Get-WmiObject Win32_OperatingSystem               
   [Management.ManagementDateTimeConverter]::ToDateTime($os.LastBootUpTime)
}

AccessRights exportados a csv

Para evitar que al exportar permisos de exchange a csv lo muestre asi:
System.Collections.ObjectModel.Collection`1[Microsoft.Exchange.Management.MapiTasks.PublicFolderAccessRight]

utiliza la siguiente expresion:
Get-PublicFolderClientPermission -identity "\PFolder" | select identity,user,@{Name = 'AccessRights';Expression = {[string]::join(',',$_.AccessRights)}}

Windows - "You must install networking before you change this computers domain membership"

Si aparece éste mensaje al tratar de unir el PC a dominio, reiniciar el servicio "Computer Browser"

C# - Crear usuario local y agregarlo a un grupo local


using System;
using System.DirectoryServices;

// crear un usuario local y agregarlo a un grupo local

class Crearusuario
{
    static void Main()
    {
        string usuario = "usuario1";
        string grupo = "Administradores";
        string password = "passw0rd";
        string pc = "w153622";
        string PathNT = "WinNT://" + pc + ",computer";
        string PathUsuario = "WinNT://" + pc + "/" + usuario + ",user";
        string PathGrupo = "WinNT://" + pc + "/" + grupo + ",group";
        
        try
        {                
            DirectoryEntry NT = new DirectoryEntry(PathNT);
            DirectoryEntry NuevoUsuario = NT.Children.Add(usuario, "user");
            NuevoUsuario.Invoke("SetPassword", new object[] { password });
            NuevoUsuario.Invoke("Put", new object[] { "Description", "usuario auxiliar" });
            NuevoUsuario.Invoke("Put", new object[] {"UserFlags", 0x00010000}); //NeverExpires
            NuevoUsuario.CommitChanges();
            Console.WriteLine("creado ok");
         }
         catch (Exception e)
         {
            Console.WriteLine("error al crear usuario;" + e.Message);
         }

         try // agregar a grupo
         {
            DirectoryEntry grupoNT = new DirectoryEntry(PathGrupo);
            grupoNT.Invoke("Add", new object[] { PathUsuario });
            grupoNT.CommitChanges();
            Console.WriteLine("agregado a " + grupo + " OK");
         }
         catch (Exception g)
         {
           Console.WriteLine("error al agregar " + usuario + " a " + grupo + ";" + g.Message);
         }
         Console.ReadLine();
     }
} //class Crearusuario