Power Shell

From vwiki
Revision as of 15:05, 10 November 2009 by Sstrutt (talk | contribs) (→‎WMI: Reworked page a bit)
Jump to navigation Jump to search

Credentials

When running commands that require a connection to a remote machine its useful to be able to store a user/pass combination so that you aren't repeatedly prompted every time you run a command. Create a credential object, then supply that in place of a username in a command

PS H:\> $cred = Get-Credential

cmdlet Get-Credential at command pipeline position 1
Supply values for the following parameters:
Credential
PS H:\> Get-WMIObject -query "SELECT * FROM Win32_OperatingSystem" -credential $cred -computer 159.104.224.167

SystemDirectory : C:\WINDOWS\system32
Organization    : TF
BuildNumber     : 3790
RegisteredUser  : TF
SerialNumber    : 69712-640-3560061-45009
Version         : 5.2.3790


WMI

Cmdlet for using WMI via PowerShell is Get-WMIObject, which has an alias of gwmi, for example...

PS H:\> Get-WMIObject -query "Select * from Win32_OperatingSystem"

SystemDirectory : C:\WINDOWS\system32
Organization    :
BuildNumber     : 2600
RegisteredUser  : TF
SerialNumber    : 76487-OEM-0011903-00102
Version         : 5.1.2600

PS H:\> Get-WMIObject -query "SELECT * FROM Win32_UTCTime"

__GENUS          : 2
__CLASS          : Win32_UTCTime
__SUPERCLASS     : Win32_CurrentTime
__DYNASTY        : Win32_CurrentTime
__RELPATH        : Win32_UTCTime=@
__PROPERTY_COUNT : 10
__DERIVATION     : {Win32_CurrentTime}
__SERVER         : L-0STRUTTS1
__NAMESPACE      : root\cimv2
__PATH           : \\L-0STRUTTS1\root\cimv2:Win32_UTCTime=@
Day              : 27
DayOfWeek        : 4
Hour             : 10
Milliseconds     :
Minute           : 0
Month            : 8
Quarter          : 3
Second           : 1
WeekInMonth      : 5
Year             : 2009

PS H:\> Get-WMIObject -query "Select * from Win32_OperatingSystem" -credential sysmgr -computer ukpgemon2

SystemDirectory : C:\WINDOWS\system32
Organization    : Thomson Financial
BuildNumber     : 3790
RegisteredUser  : Dell Image Rev 1
SerialNumber    : 69712-640-3560061-45321
Version         : 5.2.3790

PS H:\> Get-WMIObject -query "Select * from Win32_userAccount WHERE Domain = 'OCM-WCS1' AND Name = 'pptp_ypos'" -credential administrator -computer 159.104.224.167
 
AccountType : 512
Caption     : OCM-WCS1\pptp_ypos
Domain      : OCM-WCS1
SID         : S-1-5-21-2453442427-2400495818-1845097998-1073
FullName    : Ypos-Consulting GmbH
Name        : pptp_ypos


Find Classes and Properties

In order to find the correct class use...

Get-WMIObject -list -credential $cred -computer 159.104.224.167 | Select-String -InputObject {$_.Name} Win32*

To then see all the properties of a class use (doesn't work on remote machines (access denied) - this is a known bug in Power Shell v1)...

Get-WMIObject Win32_BIOS | Format-List *

TechNet article: Windows PowerShell Best Inventory Tool Ever!