get-content lista.txt | %{$a = $_;try{[net.dns]::GetHostByAddress($a)}catch{$a}}
PD: $a es declarado porque $_ devuelve el error completo.
get-content lista.txt | %{$a = $_;try{[net.dns]::GetHostByAddress($a)}catch{$a}}
Function InfoExtraScriptCorreo {#region intro_funcion #nombre : InfoExtraScriptCorreo #descripcion: Insertar como tabla info extra en los correos. Salida como String(html) #fecha creac: xx/xx/13 #versión : 0.1 (07/08/13) #autor : Jorge Mestre #Changelog : 07/08/13 - creado #endregion intro_funcion #region css_tabla [string]$csstabla = "<style>" $csstabla = $csstabla + "TABLE{font-family:Arial,Helvetica,sans-serif;border-spacing:1px;` border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}" $csstabla = $csstabla + "TH{white-space: nowrap;border-spacing:1px;font-size:8pt;` border-width: 1px;padding: 1px;border-style: solid;border-color: black;` background-color:#E0EC0F}" $csstabla = $csstabla + "TD{white-space: nowrap;border-spacing:1px;font-size:8pt;` border-width: 1px;padding: 1px;border-style: solid;border-color: black;}" $csstabla = $csstabla + "</style>" #endregion css_tabla $t = "" | Select-Object script,host,working_dir,usuario $t.script = $MyInvocation.PSCommandPath $t.host = [System.Environment]::MachineName $t.working_dir = [System.Environment]::CurrentDirectory $t.usuario = [System.Environment]::UserName [string]$salida = $t | convertto-html -Head $csstabla -As LIST return '<html><body><style>p {font-family:Arial,Helvetica,sans-serif;font-size:8pt}` </style><p> <p> <p> <p>Información extra:</body></html>'+$salida }
$cadena = 'FG?'
#Obtener los códigos ASCII [int[]][char[]]$cadena
70
71
65533
? debería ser una Ñ, que es:
PS C:\> [int][char]"Ñ"
209
Recreando la cadena con el código correcto, recuperamos la Ñ:
el 99% de las veces tenemos que tratar los caracteres con la tabla correspondiente (UTF8, ASCII, etc), pero cuando el tema se pone duro, "las cosas a la vieja usanza" :)
function Reemplazar-Caracter { Param ( [parameter(Mandatory=$true)][string][ValidateNotNullOrEmpty()]$txt,` [parameter(Mandatory=$true)][int][ValidateNotNullOrEmpty()]$CarAnt,` [parameter(Mandatory=$true)][int][ValidateNotNullOrEmpty()]$CarNuevo ) Write-Host -ForegroundColor green $txt Write-Host -ForegroundColor cyan $([int[]][char[]]$txt) [string]$txtnuevo = $null foreach ($ascii in ([int[]][char[]]$txt)) { if ($ascii -eq $CarAnt) { $txtnuevo = $txtnuevo + [char]$CarNuevo } else { $txtnuevo = $txtnuevo + [char]$ascii } } return $txtnuevo }
#region intro #descripcion: agregar direccion X500 a todos los contactos de una OU #fecha creac: 04/11/2013 #versión : 0.1 (04/11/13) #autor : Jorge Mestre #Changelog : 04/11/13 - Creado #endregion intro param( $archOrigen,` $ou = 'OU=NomOU,DC=Lab,DC=local' ) Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010 -ErrorAction `
SilentlyContinue $ErrorActionPreference = "continue" $LegacyDNRaiz = "/o=FirstExchOrg/ou=Exchange Administrative Group `
(FYDIBOHF23SPDLT)/cn=Recipients/cn=" $contactos = Get-MailContact -OrganizationalUnit $ou foreach ($con in $contactos) { $user = $con.alias $user $con.EmailAddresses += [Microsoft.Exchange.Data.CustomProxyAddress]`
(("X500:"+"$LegacyDNRaiz"+"$user")) Set-MailContact -Identity $con.alias -EmailAddresses $mails.EmailAddresses }
#region intro # nombre : Comprobar-Puertos.ps1 # descripción: comprueba que un host responde a varios puertos # fecha creac: 11/07/2011 # versión : 0.2(15/07/2013) # autor : Jorge Mestre # Changelog : 11/07/2011 - creado # Changelog : 15/07/2013 - Agregado param $infinito #keywords : puertos,comprobar,telnet #endregion intro param($puertos,$dst,[switch]$infinito,$tamLog) if ( ((-not $puertos) -or (-not $dst)) -or ` (($infinito) -and (-not $tamLog))) { Write-Host "faltan argumentos`nEj: .\comprobar-puertos.ps1 -dst `"server`" ` -puertos 80,81,9000 [-infinito -tamLog MB]" -ForegroundColor Yellow exit } #region MODIFICAR $ArchLog = ".\LogPuertos.log" $LimTamArchLog = $tamLog # MBs $intervalo = 5 # segundos #EndRegion MODIFICAR #Region Funciones function RevisarTamLog($ArchLog) { $tamArch = ((Get-Item $ArchLog).length)/1mb | Out-Null if ($TamArch -gt $LimTamArchLog) { rm $ArchLog } } function eLog($texto) { $fecha = get-date -F "dd/MM/yyyy - hh:mm:ss" $txt = "$fecha`: puerto $puerto en $dst $texto" Write-Host $txt $txt | Out-File -Encoding utf8 -delimiter ';' -Append $ArchLog } function comprobarPuertos { RevisarTamLog $ArchLog foreach ($puerto in $puertos) { try { $socket = new-object Net.Sockets.TcpClient $socket.Connect($dst, $puerto) $socket.Close() eLog "abierto" } catch { eLog "cerrado" } $socket = $null } } #EndRegion Funciones #Region principal if (-not $infinito) { comprobarPuertos } else { while (1 -eq 1) { comprobarPuertos sleep $intervalo } } #EndRegion principal
Function Enviar-Correo { #region intro_funcion #descripcion: Enviar correo con formato HTML de un objeto de PS #fecha creac: xx/xx/11 #versión : 0.3 (31/10/13) #autor : Jorge Mestre #Changelog : xx/xx/11 - creado #Changelog : 05/08/13 - Corregido formato y agrupado en una sola funcion. #Changelog : 31/10/13 - Parametrizacion #endregion intro_funcion [CmdletBinding(PositionalBinding=$false)] param( [Parameter(Mandatory=$true)]$cuerpo, [switch]$cuerpoHTML, [switch]$attach, $asunto = 'Prueba envío', $cabecera = "Primera linea en el cuerpo del correo", $de = "prueba@labo.local", $para = ("dest1@labo.local","destN@labo.local"), $SMTPserver = "hostname_server_SMTP" ) #Formato tabla HTML [string]$fhtml = "<style>" $fhtml = $fhtml + "TABLE{font-family:Arial,Helvetica,sans-serif;` border-spacing:1px;border-width: 1px;border-style: solid;` border-color: black;border-collapse: collapse;}" $fhtml = $fhtml + "TH{white-space: nowrap;border-spacing:1px;font-size:10pt;` border-width: 1px;padding: 3px;border-style: solid;border-color: black;` background-color:#E0ECFF}" $fhtml = $fhtml + "TD{white-space: nowrap;border-spacing:1px;font-size:10pt;` border-width: 1px;padding: 3px;border-style: solid;border-color: black;}" $fhtml = $fhtml + "</style>" #si es un Array, convertirlo en HTML if (-not $cuerpoHTML) { $infoExtra = try{InfoExtraScriptCorreo}catch {""} [string]$cuerpo = $cuerpo | convertto-html -Head $fhtml $cuerpo = '<p>'+$cabecera+'</p>'+$cuerpo+$infoExtra } if ($attach) {
Send-MailMessage -To $para -Subject $asunto -SmtpServer $SMTPserver -From $de ` -Body $cuerpo -Bodyashtml:$true -Encoding ([System.Text.Encoding]::UTF8) ` -Attachments $attach
} else
{
Send-MailMessage -To $para -Subject $asunto -SmtpServer $SMTPserver ` -From $de -Body $cuerpo -Bodyashtml:$true ` -Encoding ([System.Text.Encoding]::UTF8)
} } # Function Enviar-Correo
PS >; $unArray = Get-Command | select name,Module -last 10
PS >; Enviar-Correo -cuerpo $unArray
$puerto = 3380 # puerto inválido $servidor = "localhost" "vamos con try...`n" try { $socket = new-object Net.Sockets.TcpClient $socket.Connect($servidor, $puerto) $socket.Close() "abierto" } catch { "cerrado (con try)" $conCatch = $_.Exception } "vamos con if...`n" $socket = $null $socket = new-object Net.Sockets.TcpClient $socket.Connect($servidor, $puerto) if ($socket.Connected) { $socket.Close() "abierto" } else { "cerrado (con if)" } $socket = $null "`ncon Catch, el error no me saltó en el medio del script, abajo lo pongo`
(controlando cuando muestro el error):`n" write-host $conCatch -ForegroundColor green