|
|
| (118 intermediate revisions by the same user not shown) |
| Line 1: |
Line 1: |
| * [http://www.microsoft.com/windowsserver2003/technologies/management/powershell/download.mspx Windows PowerShell V1]
| | #REDIRECT [[:Category:PowerShell]] |
| * [http://support.microsoft.com/kb/968929 Windows PowerShell V2]
| |
| | |
| == 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
| |
| | |
| <pre>
| |
| 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
| |
| </pre>
| |
| | |
| | |
| == WMI ==
| |
| | |
| Cmdlet for using WMI via PowerShell is '''Get-WMIObject''', which has an alias of '''gwmi''', for example...
| |
| | |
| <pre>
| |
| 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
| |
| </pre>
| |
| | |
| | |
| === Find Classes and Properties ===
| |
| | |
| In order to find the correct class use...
| |
| <pre>
| |
| Get-WMIObject -list -credential $cred -computer 159.104.224.167 | Select-String -InputObject {$_.Name} Win32*
| |
| </pre>
| |
| | |
| 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)...
| |
| <pre>
| |
| Get-WMIObject Win32_BIOS | Format-List *
| |
| </pre>
| |
| | |
| [http://technet.microsoft.com/en-gb/magazine/2009.02.windowspowershell.aspx TechNet article: Windows PowerShell Best Inventory Tool Ever!]
| |
| | |
| == Network ==
| |
| === Ping ===
| |
| <pre>
| |
| PS H:\> $objPing = New-Object system.Net.NetworkInformation.Ping
| |
| PS H:\> $objPing.Send('127.0.0.1')
| |
| | |
| Status : Success
| |
| Address : 127.0.0.1
| |
| RoundtripTime : 0
| |
| Options : System.Net.NetworkInformation.PingOptions
| |
| Buffer : {97, 98, 99, 100...}
| |
| </pre>
| |
| | |
| === Name/Address Resolution ===
| |
| '''IP to Name'''
| |
| * Be aware, where no name can be found, the call throws an exception. If assigning result to a variable, then it seems to return the local hostname, which is odd.
| |
| <pre>
| |
| PS H:\> [System.Net.Dns]::GetHostbyAddress("159.104.31.83")
| |
| | |
| HostName Aliases AddressList
| |
| -------- ------- -----------
| |
| L-STRUTTS1 {} {159.104.31.83}
| |
| </pre>
| |
| | |
| '''Name to IP'''
| |
| <pre>
| |
| PS H:\> [System.Net.Dns]::GetHostAddresses("l-strutts1")
| |
| | |
| Address : 1394567327
| |
| AddressFamily : InterNetwork
| |
| ScopeId :
| |
| IsIPv6Multicast : False
| |
| IsIPv6LinkLocal : False
| |
| IsIPv6SiteLocal : False
| |
| IPAddressToString : 159.104.31.83
| |
| </pre>
| |
| | |
| == MySQL ==
| |
| <pre>
| |
| function ConnectMySQL([string]$user,[string]$pass,[string]$MySQLHost,[string]$database) {
| |
| | |
| # Load MySQL .NET Connector Objects
| |
| [void][system.reflection.Assembly]::LoadWithPartialName("MySql.Data")
| |
| | |
| # Open Connection
| |
| $connStr = "server=" + $MySQLHost + ";port=3306;uid=" + $user + ";pwd=" + $pass + ";database="+$database+";Pooling=FALSE"
| |
| $conn = New-Object MySql.Data.MySqlClient.MySqlConnection($connStr)
| |
| $conn.Open()
| |
| $cmd = New-Object MySql.Data.MySqlClient.MySqlCommand("USE $database", $conn)
| |
| return $conn
| |
| }
| |
| | |
| function WriteMySQLQuery($conn, [string]$query) {
| |
| $command = $conn.CreateCommand()
| |
| $command.CommandText = $query
| |
| $RowsInserted = $command.ExecuteNonQuery()
| |
| $command.Dispose()
| |
| if ($RowsInserted) {
| |
| return $RowInserted
| |
| } else {
| |
| return $false
| |
| }
| |
| }
| |
| | |
| # setup vars
| |
| $user = 'myuser'
| |
| $pass = 'mypass'
| |
| $database = 'mydatabase'
| |
| $MySQLHost = 'database.server.com'
| |
| | |
| # Connect to MySQL Database
| |
| $conn = ConnectMySQL $user $pass $MySQLHost $database
| |
| | |
| # Read all the records from table
| |
| $query = 'INSERT INTO test (id,name,age) VALUES ("1","Joe","33")'
| |
| $Rows = WriteMySQLQuery $conn $query
| |
| Write-Host $Rows " inserted into database"
| |
| </pre>
| |
| | |
| | |
| [[Category:PowerShell]]
| |
| [[Category:WMI]]
| |
| [[Category:MySQL]]
| |