Windows PowerShell Cookbook

From Littledamien Wiki
Jump to navigation Jump to search

Fetching remote content

Download content from the web

This will print out the markup from the index page (which could then be piped through additional commands):

> (new-object Net.WebClient).DownloadString("http://damienjay.com/")

Grep/Searching the content of files

Files in a single directory

> select-string .\*.* -pattern "\my_regexp\"

Recursive search

> gci path\to\search\root\ -rec | select-string -pattern "\my_regexp\"

Recursive search filtered by file type

> Get-ChildItem path\to\search\root\ -include *.txt -rec | select-string -pattern "\my_regexp\"
> # or, using aliases for the commands and not using "-include" ...
> gci path\to\search\root\ *.txt -r | sls -pattern "\my_regexp\"

List directory contents

Fun Things You Can Do With the Get-ChildItem Cmdlet (Microsoft TechNet)

> Get-ChildItem .\
> # or...
> gci .\
> # or...
> gci # for the current directory

Limit listing to file names

> gci path\to\directory | Select-Object Name
> # or...
> Get-ChildItem path\to\directory -name

Recursive listing

> gci -recursive
> # or...
> gci -rec

Environment variables

Displaying, creating, and modifying environment variables using Powershell CLI.[1]

List all environment variables

> Get-ChildItem Env:
> # (or using gci alias...)
> gci env:

Display value of a single environment variable

$Env: followed by the variable name, e.g.:

> $Env:OS

Creating and modifying environment variables

Creating a process-level environment variable

> $env:TestVariable = "This is the test variable value."

Creating a permanent environment variable

> [Environment]::SetEnvironmentVariable("TestVariable", "Test value.", "User")
N.B. It's necessary to create a new Powershell instance to refer to new environment variable values.

Deleting an environment variable

> Remove-Item Env:TestVariable
> # (or...)
> [Environment]::SetEnvironmentVariable("TestVariable", $null, "User")

Notes