¿Estás buscando lecturas para lo que queda de verano? Ponte las pilas con todos estos libros gratis sobre Windows 10, Office 365, Office 2016, Power BI, Azure, Windows 8.1, Office 2013, SharePoint 2016, SharePoint 2013, Dynamics CRM, PowerShell, Exchange Server, System Center, Cloud, SQL Server… ¡y muchos temas más!

¡Libros gratis!

Eric Ligman, gerente senior de ventas en Microsoft, libera anualmente decenas de títulos relacionados con las soluciones de esta empresa. Sin embargo, el año pasado este hecho fue muy sonado ya que se liberó una cantidad cercana a los 300 libros electrónicos gratuitos en diferentes formatos (epub, mobi, pdf) y de cientos de temas como:

  • Azure
  • Biztalk
  • Cloud
  • Developer
  • Dynamics
  • Licensing
  • Office
  • Power BI
  • PowerShell
  • SharePoint
  • SQL Server
  • Surface
  • System Center
  • Virtualization
  • Windows Client
  • Windows Server

Puedes elegir entre diferentes niveles (desde iniciación hasta técnicos) y materias (la mayoría son de informática pura, pero también los hay de negocios y marketing)… ¡comienza tu descarga aquí!

 

Descargar todos los libros

¿Echas de menos un botón “Descargar todo”? Te explicamos, paso a paso, como conseguir todos los títulos sin necesidad de clicar manualmente cada uno de ellos.

  1. Crea una carpeta en la que quieras guardar los libros (por ejemplo, en Documentos, crea una carpeta llamada “Libros”. Nuestra ruta será C:\Documentos\libros\).
  2. Este es el código que tendrás que ejecutar en PowerShell. Sólo tienes que cambiar la ruta como en el ejemplo
    • # Set the folder where you want to save the books to
      $dest = “C:\Documentos\libros\” # Make sure the file path ends in a \

      # Download the source list of books
      $downLoadList = “http://ligman.me/2tk1D2V”
      $bookList = Invoke-WebRequest $downLoadList

      # Convert the list to an array
      [string[]]$books = “”
      $books = $bookList.Content.Split(“`n”)

      # Remove the first line – it’s not a book
      $books = $books[1..($books.Length -1)]
      $books # Here’s the list

      # Get the total number of books we need to download
      $bookCount = $($books).Count

      # Set a simple counter to let the user know what book
      # number we’re currently downloading
      $currentBook = 0

      # As an option, we can have it log progress to a file
      $log = $true

      if ($log -eq $true)

      {

      # Construct a log file name based on the date that
      # we can save progress to
      $dlStart = Get-Date
      $dlStartDate = “$($dlStart.Year)-$($dlStart.Month)-$($dlStart.Day)”
      $dlStartTime = “$($dlStart.Hour)-$($dlStart.Minute)-$($dlStart.Second)”
      $logFile = “$($dest)BookDlLog-$dlStartDate-$dlStartTime.txt”

      }

      # Download the books
      foreach ($book in $books)

      {

      # Increment current book number
      $currentBook++
      try

      {

      # Grab the header with the books full info
      $hdr = Invoke-WebRequest $book -Method Head

      # Get the title of the book from the header then
      # make it a safe string (remove special characters)
      $title = $hdr.BaseResponse.ResponseUri.Segments[-1]
      $title = [uri]::UnescapeDataString($title)

      # Construct the path to save the file to
      $saveTo = $dest + $title

      # If the file doesn’t exist, download it
      if ($(Test-Path $saveTo) -eq $false)

      {

      $msg = “Downloading book $currentBook of $bookCount – $title”
      $msg
      if ($log -eq $true) { “`n$($msg)” | Add-Content $logFile }
      Invoke-WebRequest $book -OutFile $saveTo

      }

      else

      {

      # If it does exist, we need to make sure it wasn’t
      # a partial download. If the file size on the server
      # and the file size on local disk don’t match,
      # redownload it

      # Get the size of the file from the download site
      $dlSize = $hdr.BaseResponse.ContentLength
      # Get the size of the file on disk
      $fileSize = $(Get-ChildItem $saveTo).Length

      if ($dlSize -ne $fileSize)

      {

      # If not equal we need to download the book again
      $msg = “Redownloading book $currentBook of $bookCount – $title”
      $msg
      if ($log -eq $true) { “`n$($msg)” | Add-Content $logFile }
      Invoke-WebRequest $book -OutFile $saveTo

      }

      else

      {

      # Otherwise we have a good copy of the book, just
      # let the user know we’re skipping it.
      $msg = “Book $currentBook of $bookCount ($title) already exists, skipping it”
      $msg
      if ($log -eq $true) { “`n$($msg)” | Add-Content $logFile }

      }

      }

      } # end try

      catch

      {

      $msg = “There was an error downloading $title. You may wish to try to download this book manually.”
      Write-Host $msg -ForegroundColor Red
      if ($log -eq $true) { “`n$($msg)” | Add-Content $logFile }

      } # end catch

      } # end foreach

      # Let user know we’re done, and give a happy little beep
      # in case they aren’t looking at the screen.
      “Done downloading all books”
      [Console]::Beep(500,300)

  3. Abre tu PowerShell (Pulsa el botón de Windows y escribe PowerShell. Pulsa sobre el icono)
  4. Copia y pega tu código modificado (muy importante que sea una ruta existente)
  5. Los libros se irán descargando poco a poco en la carpeta que hayas indicado

Descargar libros gratis