Mostrando entradas con la etiqueta powershell. Mostrar todas las entradas
Mostrando entradas con la etiqueta powershell. Mostrar todas las entradas

viernes, 5 de marzo de 2021

Script to add an alert to an Azure App Service using Powershell

With this script, you can add an alert about the number of HTTP errors to an Azure App Service.

The same script could be used to add any kind of alert to any kind of Azure Resource.

---------------------------------------------------

martes, 10 de julio de 2018

Ping to a specific port

Many times is necessary to check if a socket replies (a socket is the combination of a host and a port).
At least by my side, the most common way to do that is with the command telnet.
You only need to open a command prompt in Windows and type

telnet <ip address or hostname> <port>

But there are some problems with telnet:
  • Since Windows 7/2008, it is not installed by default, and maybe you have not rights to install it.
  • Each time you launch the command, the connection usually get stuck (it depends of the service we are testing) and you have to wait until the remote host cuts the connection.
There are a lot of third party software that we can use in Windows (netcat, nmap, etc). But in some cases you cannot use third party software in your computer because the security policy of your company forbids it.

Fortunately in PowerShell we can use the cmdlet Test-NetConnection for make some diagnostics for a network connection. It is a kind of PowerShell swiss army knife for networking, because it can replace the commands ping, telnet, and traceroute, and provides more info that these ones.

But in this case we can use this command (or his alias TNC) to check if a TCP port is open in a remote host. The syntax would be:

Test-NetConnection <ip address or hostname> -port <port>

The result of the test will be like this:

                              ComputerName           : palou-it.blogspot.com
                              RemoteAddress          : 172.217.20.65
                              RemotePort             : 80
                              InterfaceAlias         : Ethernet 2
                              SourceAddress          : 192.168.1.25
                              PingSucceeded          : False
                              PingReplyDetails (RTT) : 0 ms
                              TcpTestSucceeded       : True

But really, this is not a ping, because it only makes a request, and sometimes we need a continuous connection attempt, per example when we are monitoring some remote service, and we have to launch the command each time we want to check the connectivity to the socket.
Well, why don't we use PowerShell to create a little tool to launch a ping to a specific port?
With only 4 lines of test, we have a tool that will ask us for the remote host and the remote port, and it will be probing the connection until we stop it. 

$destination_host = Read-host -prompt 'Input destination host'
$destination_port = Read-host -prompt 'Input destination port'

do
{
start-sleep -s 2
tnc $destination_host -port $destination_port | fl remoteaddress,RemotePort,tcptestsucceeded

} while ($destination_host=$destination_host)


Copy and paste the script in a notepad and save it as ping-port.ps1.
Then execute it in PowerShell and you have your new tool to check continuously a port in a remote host (to stop it, simply press Control+C).







martes, 18 de agosto de 2015

Importar máquina virtual a Azure

En este post vimos cómo crear una máquina virtual con Hyper-V, ahora vamos a subirla a Azure, el servicio Cloud de Microsoft.
Para ello, debemos contar con una subscripción, si no tenemos una, podemos hacer una de prueba en este link https://azure.microsoft.com/es-es/pricing/free-trial/

1. Una vez que tengamos nuestra subscripción, tenemos que instalar la consola de PowerShell de Azure, aquí se pueden encontrar las instrucciones para instalarla y conectarse a nuestra subscripción https://azure.microsoft.com/en-us/documentation/articles/powershell-install-configure/


2. Lo primero que tenemos que hacer es configurar el almacenamiento donde irá el disco duro de nuestra máquina virtual.
 New-AzureStorageAccount -StorageAccountName “teststorage1”  -label “test-storage1” -Location “West Europe” 




3. Para ver los datos de nuestro nuevo almacenamiento
Get-AzureStorageAccount




4. Por defecto, el Escritorio Remoto de nuestra máquina virtual en Hyper-V estará habilitado, pero no permitido a nivel de Firewall, por lo que es imprescindible hacerlo antes del siguiente paso. Hay que hacerlo tanto para redes públicas como para redes privadas.

5. Necesitamos convertir nuestro disco VHDX en VHD para poder subirlo a Azure
Convert-VHD -Path  “C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks\w10_x86.vhdx” -DestinationPath c:\temp\w10x86.vhd   (la carpeta c:\temp tiene que estar creada anteriormente)





6. Ya podemos subir el disco duro de nuestra máquina virtual al almacenamiento de Azure.
Add-AzureVhd -Destination https://teststorage1.blob.core.windows.net/vhdstore/win10.vhd -LocalFilePath C:\temp\w10x86.vhd






7. Ahora nos vamos al portal de gestión de Azure https://manage.windowsazure.com y accedemos a la opción de Virtual Machines. Le damos a Create a Disk. 






8. Especificamos un nombre para el disco, le damos al icono de la carpeta para explorar el almacenamiento





9. Veremos el almacenamiento donde hemos subido el disco de la máquina virtual, lo seleccionamos y damos a Open.





10. Hay que marcar la casilla que indica que el disco duro virtual contiene un Sistema Operativo y seleccionar Windows 





11. Y ya tenemos el VHD preparado para nuestra máquina virtual.



12. En la parte de Instances, le damos a Create a Virtual Machine




13. Seleccionamos las opciones COMPUTE >> VIRTUAL MACHINE >> FROM GALLERY






14. En el asistente, en la parte inferior izquierda, seleccionamos MY DISKS y elegimos el VHD que hemos subido.





15. Le asignamos un nombre y unas características (estas dependen del precio que se quiera pagar). 





16. Creamos un nuevo servicio Cloud y le ponemos el nombre y los puertos por los que nos conectaremos a la máquina virtual por RDP y por PowerShell.




17. Indicamos si queremos algún software extra en nuestra VM…





18. Y esperamos mientras la VM se aprovisiona.





19. Cuando indique que la VM está Running, ya podremos conectarnos a ella a través de RDP.






20. Pulsamos sobre el icono CONNECT y el navegador nos pedirá si queremos abrir o guardar el archivo con extensión .rdp.





21. Cuando abramos dicho archivo, iniciará la conexión de Terminal Server y nos pedirá el usuario y contraseña de la máquina virtual (recordad que en este caso es el que configuramos cuando creamos la máquina virtual en Hyper-V)





22. Nos saldrá la alerta de seguridad correspondiente al certificado de la máquina, ya que es autofirmado, aceptamos…






23. Y estaremos conectados a nuestra máquina Windows 10 en Azure.



viernes, 7 de agosto de 2015

Modificar los parámetros de conexión a una máquina virtual de Hyper-V

Si al conectarnos a una máquina virtual en Hyper-V, configuramos varias opciones de la conexión, y le indicamos que no queremos que nos vuelva a preguntar; esta es la opción que dejé marcada en el post Instalar Windows 10 sobre Hyper-V y que se puede ver en esta imagen.




Pero es posible que en el futuro sí que necesitemos cambiarlo. Para ello, podemos ir a la ruta donde está el archivo de configuración de la conexión y renombrarlo, o modificar el atributo “SaveButtonChecked” a False y guardarlo.



La ruta del archivo es la siguiente, cambiando <user> por el nombre del usuario correspondiente:

C:\Users\<user>\AppData\Roaming\Microsoft\Windows\Hyper-V\Client\1.0

Y el nombre del fichero en cuestión tiene esta sintaxis, cambiando <GUID de la VM> por el correspondiente identificador de la máquina virtual:


vmconnect.rdp.<GUID de la VM>.config

¿Dónde encuentro este GUID? Pues recurrimos a nuestra amiga PowerShell, con este comando nos devolverá el nombre de todas nuestras máquinas virtuales y su correspondiente GUID:

get-vm | select name,id