Differences between revisions 13 and 17 (spanning 4 versions)
Revision 13 as of 2019-01-09 22:07:12
Size: 2497
Editor: scot
Comment:
Revision 17 as of 2019-02-01 00:19:17
Size: 3739
Editor: scot
Comment:
Deletions are marked like this. Additions are marked like this.
Line 12: Line 12:
|| Where-Object {$_.property -like '*string*'} || Will filter the objects ||
Line 71: Line 72:

== List VMs at the end of the semester to be deleted ==

{{{#!highlight powershell
Get-SCVirtualMachine | Select Name, MarkedAsTemplate, Owner | Sort-Object -Property Owner, Name | Export-Csv -Path .\vms2019w.csv
}}}

== Setting up a Windows 2019 Server for the first time ==

{{{#!highlight powershell
# Install the AVMA key.
slmgr /ipk TNK62-RXVTB-4P47B-2D623-4GF74

# Set the timezone
# First I'm going to search for the timezone I want
Get-TimeZone -ListAvailable | Where-Object {$_.DisplayName -like '*Eastern*'}
# This gave me the parameter needed to set the time zone.
Set-TimeZone -Name "Eastern Standard Time"

# Set the Hostname of the computer:
Rename-Computer -NewName "windows2019" -Restart

# Next we need to install Windows update and get it started.
# This will install nuget package too.
Install-Module PSWindowsUpdate

# Now start the update process
# First we'll look at what updates are there
Get-WUInstall
# Now install them
Install-WindowsUpdate
}}}

Resources:

 * [[https://gallery.technet.microsoft.com/scriptcenter/2d191bcd-3308-4edd-9de2-88dff796b0bc#content|Powershell and Windows Update]]

Here is a list of Power Shell Scripts that are too cool to ignore

For the uninitiated:

Symbol

Meaning

%

shortcut for foreach object

$_

current object in the pipeline

Get-Member

Will list the fields of the object you send it

Sort-Object -Property [property name]

Will sort the objects you send in by the property name(s) which can be a comma separated list

Where-Object {$_.property -like '*string*'}

Will filter the objects

Windows and AD Scripts

List of AD accounts and the last time they logged in

   1 Get-ADUser -Filter * -SearchBase "dc=home,dc=scotnpatti,dc=com" -ResultPageSize 0 -Prop CN,samaccountname,lastLogonTimestamp | 
   2      select CN, samaccountname,@{n="lastLogonDate";e={[datetime]::FromFileTime($_.LastLogonTimestamp)}} 

List Memory Installed

   1 Get-WmiObject win32_physicalmemory | Format-Table Manufacturer,Banklabel,Configuredclockspeed,Devicelocator,Capacity,Serialnumber -autosize

List object from Registry - namely version of .NET installed

   1 gci 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' | sort pschildname -des | foreach-object {$_.name; $_.GetValue("Version");}

Remote commands

   1 Invoke-Command -ComputerName eve -ScriptBlock { date }

Replace a string in a file using a regular expression

So I downloaded a bunch of files from "the way back machine" site and I needed to update the hard-coded links to be relative site links. The following little script did it for me.

   1 $files = ls Level*.html
   2 foreach ($item in $files) {
   3     (Get-Content -path $item) | % { $_ -Replace '(https://web.archive.org/nebula/level)([0123456789]{2})/', 'Level$2.html' } | Set-Content $item
   4 } 

SCVMM Powershell scripts

I needed this once when I was trying to refresh the Library share. It failed on refresh with an error saying that a DVD was in use and wouldn't refresh until it was no longer in use. The following commands allowed me to identify the machines.

In general all of these need:

   1 Import-Module VirtualMachineManager

Get a list of Virtual Machines that have a DVD attached

   1 Get-SCVMMServer -ComputerName Samuel
   2 Get-SCVirtualMachine | Get-SCVirtualDVDDrive | Where-Object {$_.Connection -eq "ISOImage"} | Select Name, Connection, ISO

List VMs at the end of the semester to be deleted

   1 Get-SCVirtualMachine | Select Name, MarkedAsTemplate, Owner | Sort-Object -Property Owner, Name | Export-Csv -Path .\vms2019w.csv

Setting up a Windows 2019 Server for the first time

   1 # Install the AVMA key.
   2 slmgr /ipk TNK62-RXVTB-4P47B-2D623-4GF74
   3 
   4 # Set the timezone 
   5 #  First I'm going to search for the timezone I want
   6 Get-TimeZone -ListAvailable | Where-Object {$_.DisplayName -like '*Eastern*'}
   7 #  This gave me the parameter needed to set the time zone. 
   8 Set-TimeZone -Name "Eastern Standard Time"
   9 
  10 # Set the Hostname of the computer:
  11 Rename-Computer -NewName "windows2019" -Restart
  12 
  13 # Next we need to install Windows update and get it started.
  14 # This will install nuget package too.
  15 Install-Module PSWindowsUpdate
  16 
  17 # Now start the update process
  18 #   First we'll look at what updates are there
  19 Get-WUInstall 
  20 #   Now install them
  21 Install-WindowsUpdate

Resources:

WindowsAdministration/PowerShellScripts (last edited 2024-08-30 00:21:07 by scot)