HOLA!!!
Alguna vez les paso tener que arreglar el problema de "RPC Unavailable" error 1722?, que siempre queda mal en nuestros scripts de active directory o el Configuration manager (ademas de otros lados)ts
Para prevenir esto cree este script que permite verificarlo en batch por servidor, asi no estamos siempre con los mismos problemas de firewall o configuracion.
Sin mas preambulo el codigo:
# Como ejecutar: RPCCheck -Server NombreDelServidorAqui
#
# Requerimientos: portqry.exe (de Sysinternals).
# El path a portqry.exe tendra que reflectar la ubicacion del script.
#
Param(
[string]$Server
)
workflow Check-Port {
param ([string[]]$RPCServer,[array]$arrRPCPorts)
$comp = hostname
ForEach -parallel ($RPCPort in $arrRPCPorts)
{
$bolResult = InlineScript{Test-NetConnection -ComputerName $Using:RPCServer -port $Using:RPCPort _
-InformationLevel Quiet}
If ($bolResult)
{
Write-Output "$RPCPort en $RPCServer esta disponible"
}
Else
{
Write-Output "$RPCPort en $RPCServer no esta disponible "
}
}
}
$strRPCPort = "135"
# MODIFICAR ESTE PATH A LA CARPETA DE SYSINTERNALS
$strPortQryPath = "C:\Sysinternals"
If (Test-Path "$strPortQryPath\PortQry.exe")
{
$strPortQryCmd = "$strPortQryPath\PortQry.exe -e $strRPCPort -n $Server"
}
Else
{
Write-Output "Could not locate Portqry.exe at the path $strPortQryPath"
Exit
}
$arrPorts = @()
$arrQuryResult = Invoke-Expression $strPortQryCmd
ForEach ($strResult in $arrQuryResult)
{
If ($strResult.Contains("ip_tcp"))
{
$arrSplt = $strResult.Split("[")
$strPort = $arrSplt[1]
$strPort = $strPort.Replace("]","")
$arrPorts += $strPort
}
}
$arrPorts = $arrPorts | Sort-Object |Select-Object -Unique
Check-Port -RPCServer $Server -arrRPCPorts $arrPorts
Atención:
Tienen que instalar PortQry.
Tendran que escribir el Path del PortQry.exe en esta linea del script: $strPortQryPath = "C:\Sysinternals"
Ademas necesitan PowerShell v4
PortQry.exe se descarga de www.sysinternals.com (http://www.sysinternals.com)
GRACIAS POR LEER!!!
¡Volvió números!
Gracias por el aporte ;D
~ DtxdF