Windows Powershell tutvustus: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Mjogi (talk | contribs)
Mjogi (talk | contribs)
No edit summary
Line 50: Line 50:
PowerShell v2.0 was completed and released to manufacturing in August 2009, as an integral part to Windows 7 and Windows Server 2008 R2. Versions of PowerShell for downlevel OSs (i.e. Windows XP, Windows Server 2003, Windows Vista and Windows Server 2008) were released in October 2009 and are available for download for both 32-bit and 64-bit platforms.[11]
PowerShell v2.0 was completed and released to manufacturing in August 2009, as an integral part to Windows 7 and Windows Server 2008 R2. Versions of PowerShell for downlevel OSs (i.e. Windows XP, Windows Server 2003, Windows Vista and Windows Server 2008) were released in October 2009 and are available for download for both 32-bit and 64-bit platforms.[11]
=Näited=
=Näited=
....
Mõned enim vaja olnud käske administraatoritele:


# Navigate the Windows Registry like the file system -- cd hkcu:


# Search recursively for a certain string within files -- dir –r | select string "searchforthis"
# Find the five processes using the most memory -- ps | sort –p ws | select –last 5
# Cycle a service (stop, and then restart it) like DHCP -- Restart-Service DHCP
# List all items within a folder -- Get-ChildItem – Force
# Recurse over a series of directories or folders -- Get-ChildItem –Force c:\directory –Recurse
# Remove all files within a directory without being prompted for each -- Remove-Item C:\tobedeleted –Recurse
# Restart the current computer -- (Get-WmiObject -Class Win32_OperatingSystem -ComputerName .).Win32Shutdown(2)
information
  9. Get information about the make and model of a computer -- Get-WmiObject -Class Win32_ComputerSystem
  10. Get information about the BIOS of the current computer -- Get-WmiObject -Class Win32_BIOS -ComputerName .
  11. List installed hotfixes (QFEs, or Windows Update files) -- Get-WmiObject -Class Win32_QuickFixEngineering -ComputerName .
  12. Get the username of the person currently logged on to a computer -- Get-WmiObject -Class Win32_ComputerSystem -Property UserName -ComputerName .
  13. Find just the names of installed applications on the current computer -- Get-WmiObject -Class Win32_Product -ComputerName . | Format-Wide -Column 1
  14. Get IP addresses assigned to the current computer -- Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName . | Format-Table -Property IPAddress
  15. Get a more detailed IP configuration report for the current machine -- Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName . | Select-Object -Property [a-z]* -ExcludeProperty IPX*,WINS*
  16. To find network cards with DHCP enabled on the current computer -- Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter "DHCPEnabled=true" -ComputerName .
  17. Enable DHCP on all network adapters on the current computer -- Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=true -ComputerName . | ForEach-Object -Process {$_.EnableDHCP()}
Software management
  18. Install an MSI package on a remote computer -- (Get-WMIObject -ComputerName TARGETMACHINE -List | Where-Object -FilterScript {$_.Name -eq "Win32_Product"}).Install(\\MACHINEWHEREMSIRESIDES\path\package.msi)
  19. Upgrade an installed application with an MSI-based application upgrade package -- (Get-WmiObject -Class Win32_Product -ComputerName . -Filter "Name='name_of_app_to_be_upgraded'").Upgrade(\\MACHINEWHEREMSIRESIDES\path\upgrade_package.msi)
  20. Remove an MSI package from the current computer -- (Get-WmiObject -Class Win32_Product -Filter "Name='product_to_remove'" -ComputerName . ).Uninstall()
Machine management
  21. Remotely shut down another machine after one minute -- Start-Sleep 60; Restart-Computer –Force –ComputerName TARGETMACHINE
  22. Add a printer -- (New-Object -ComObject WScript.Network).AddWindowsPrinterConnection("\\printerserver\hplaser3")
  23. Remove a printer -- (New-Object -ComObject WScript.Network).RemovePrinterConnection("\\printerserver\hplaser3 ")
  24. Enter into a remote PowerShell session (you must have remote management enabled) -- enter-pssession TARGETMACHINE
  25. Run a script on a remote computer -- invoke-command -computername machine1, machine2 -filepath c:\Script\script.ps1





Revision as of 21:45, 14 March 2010

Sissejuhatus

....

Autor

  • Martin Jõgi
  • Grupp A21

Üldine

Mis on Windows Powershell?

Windows powershell (2.0) on revolutsiooniline skriptimiskeel ja käsurea keskkond, mis elab Elab .NET Framework’i seljas. See on lisatud Windows 7 ja Windows Server 2008 R2 sisse. Powershell 2.0 võimaldab kaughaldust kõigile serveritele ja rakendustele, haldust on võimalik teha läbi Powershelli. Näiteks Exchange 2010, Windows Server 2008 R2(ning uuemad Microsofti server-tooted). Powershell 2.0-s ei pea oma masinasse enam rakenduste haldusliidest installima. Halduseks vajalikud käsud käitatakse serveril, käsurida jooksutatakse aga masinas. Powershellis pole vaja leida, paigaldada ega tundma õppida uusi tööriistu või käske - kõik on lihtsalt avastatav. Windows powershellil on paindlik väljund ehk ühe käsu väljund võib olla teise käsu sisendiks (nagu bash shellis). Windows Powershell vähendab tulemuse saavutamise aega säilitades ühtlase keele.


Tugevused:

  • Järjekindel süntaks: Add, New, Get, Set, Remove, Clear, Connection, EventLog, Member, Printer, Service, Transaction ja WmiObject
  • Komponeeritav: Interaktiivsed keskkonnad võimaldavad tükk-haaval lahenduste loomist ja lihtsalt kokkuseotav (“toru”) keeruliste ülesannete lahendamiseks.
  • Tulemuste saavutamise aeg on palju lühem
  • Laiendatavus Moodulid viivad asja järgmisele tasemele.
  • Skriptimine Skriptimine ei ole enam ajutiste lahenduste leiutamiseks. Tööriistakomplekt on täienenud.
  • Integreeritud läbi serveri rollide Active Directory®, Exchange, Group Policy, jne.
  • Paindlik väljund: PowerShelli väljundiks on objektid, mida on lihtne teisendada ja tarbida järgmise käsu poolt (ei mingit tekstitöötlust!).

(Eneta, 2010)

Käsud

Moodulid

Scriptimise mugavuse muutmiseks on olemas Windows Powershell Pack, mis sisaldab 10 moodulit. See pakk aitab kirjutada kasutajaliideseid powershell scriptis, hallata RSS feede, toimetada Task Scheduler-s otse käsurealt jne. Tõmba siit: PowerShellPack Näiteks:

  • Taskide haldamine:
 PS> New-task | 
Add-TaskTrigger -DayOfWeek Monday, Wednesday, Friday -WeeksInterval 2 -At "3:00 PM" |
 Add-TaskAction -Script {
   Get-Process | Out-GridView
   Start-Sleep -Seconds 100
 } |
 Register-ScheduledTask TestTask
  • RSS feedide töötlemine:
 PS> Get-Feed |
Get-Article |
 Sort-Object PubDate -Descending |
 Select-Object Title, Description -First 10 |
 Out-GridView

Ajalugu

Every released version of Microsoft DOS and Microsoft Windows for personal computers has featured a command-line interface tool. These are COMMAND.COM (in installations relying on MS-DOS, including Windows 9x) and cmd.exe (in Windows NT-family operating systems). These are regular command line interpreters that include only a handful of basic commands. For other purposes, a separate console application needs to be provided, to be invoked from these shells. They also include a scripting language (batch files), which can be used to automate various tasks. However, they cannot be used to automate all facets of GUI functionality, in part because command-line equivalents of operations exposed via the graphical interface are limited, and the scripting language is elementary, preventing the creation of complex scripts by composing available functionality. In Windows Server 2003, the situation was improved,[8] but scripting support was still considered unsatisfactory.

Microsoft attempted to address some of these shortcomings by introducing the Windows Script Host in 1998 with Windows 98, and its command-line based host: cscript.exe . It integrates with the Active Script engine and allows scripts to be written in compatible languages, such as JScript and VBScript, leveraging the APIs exposed by applications via COM. However, it has its own deficiencies, as well. It is not integrated with the shell, its documentation is not very accessible, and it quickly gained a reputation as a system vulnerability vector after several high-profile computer viruses exploited weaknesses in its security provisions. Different versions of Windows provided various special-purpose command line interpreters (such as netsh and WMIC) with their own command sets. None of them were integrated with the command shell; nor were they interoperable.

By 2003, Microsoft had started to develop a new shell called Monad (aka Microsoft Shell or MSH). Monad was to be a new extensible command shell with a fresh design that would be capable of automating a full range of core administrative tasks. Microsoft published the first Monad public beta release on June 17, 2005, Beta 2 on September 11, 2005, and Beta 3 on January 10, 2006. They announced on April 25, 2006 that Monad was renamed to Windows PowerShell, positioning it as a significant part of their management technology offerings.[9] Release Candidate 1 of PowerShell was released at the same time. Release Candidate 2 of PowerShell was released September 26, 2006 and released to web (RTW) on November 14, 2006. PowerShell for Vista was released on January 30, 2007.[10] The last CTP release of Windows PowerShell v2.0 was made available in December 2008.

PowerShell v2.0 was completed and released to manufacturing in August 2009, as an integral part to Windows 7 and Windows Server 2008 R2. Versions of PowerShell for downlevel OSs (i.e. Windows XP, Windows Server 2003, Windows Vista and Windows Server 2008) were released in October 2009 and are available for download for both 32-bit and 64-bit platforms.[11]

Näited

Mõned enim vaja olnud käske administraatoritele:

  1. Navigate the Windows Registry like the file system -- cd hkcu:
  1. Search recursively for a certain string within files -- dir –r | select string "searchforthis"
  1. Find the five processes using the most memory -- ps | sort –p ws | select –last 5
  1. Cycle a service (stop, and then restart it) like DHCP -- Restart-Service DHCP
  1. List all items within a folder -- Get-ChildItem – Force
  1. Recurse over a series of directories or folders -- Get-ChildItem –Force c:\directory –Recurse
  1. Remove all files within a directory without being prompted for each -- Remove-Item C:\tobedeleted –Recurse
  1. Restart the current computer -- (Get-WmiObject -Class Win32_OperatingSystem -ComputerName .).Win32Shutdown(2)

information

  9. Get information about the make and model of a computer -- Get-WmiObject -Class Win32_ComputerSystem
 10. Get information about the BIOS of the current computer -- Get-WmiObject -Class Win32_BIOS -ComputerName .
 11. List installed hotfixes (QFEs, or Windows Update files) -- Get-WmiObject -Class Win32_QuickFixEngineering -ComputerName .
 12. Get the username of the person currently logged on to a computer -- Get-WmiObject -Class Win32_ComputerSystem -Property UserName -ComputerName .
 13. Find just the names of installed applications on the current computer -- Get-WmiObject -Class Win32_Product -ComputerName . | Format-Wide -Column 1
 14. Get IP addresses assigned to the current computer -- Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName . | Format-Table -Property IPAddress
 15. Get a more detailed IP configuration report for the current machine -- Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName . | Select-Object -Property [a-z]* -ExcludeProperty IPX*,WINS*
 16. To find network cards with DHCP enabled on the current computer -- Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter "DHCPEnabled=true" -ComputerName .
 17. Enable DHCP on all network adapters on the current computer -- Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=true -ComputerName . | ForEach-Object -Process {$_.EnableDHCP()}

Software management

 18. Install an MSI package on a remote computer -- (Get-WMIObject -ComputerName TARGETMACHINE -List | Where-Object -FilterScript {$_.Name -eq "Win32_Product"}).Install(\\MACHINEWHEREMSIRESIDES\path\package.msi)
 19. Upgrade an installed application with an MSI-based application upgrade package -- (Get-WmiObject -Class Win32_Product -ComputerName . -Filter "Name='name_of_app_to_be_upgraded'").Upgrade(\\MACHINEWHEREMSIRESIDES\path\upgrade_package.msi)
 20. Remove an MSI package from the current computer -- (Get-WmiObject -Class Win32_Product -Filter "Name='product_to_remove'" -ComputerName . ).Uninstall()

Machine management

 21. Remotely shut down another machine after one minute -- Start-Sleep 60; Restart-Computer –Force –ComputerName TARGETMACHINE
 22. Add a printer -- (New-Object -ComObject WScript.Network).AddWindowsPrinterConnection("\\printerserver\hplaser3")
 23. Remove a printer -- (New-Object -ComObject WScript.Network).RemovePrinterConnection("\\printerserver\hplaser3 ")
 24. Enter into a remote PowerShell session (you must have remote management enabled) -- enter-pssession TARGETMACHINE
 25. Run a script on a remote computer -- invoke-command -computername machine1, machine2 -filepath c:\Script\script.ps1


Kokkuvõte

Windows PowerShell on käsurea keskkond ja skriptimiskeel on eelkõige just süsteemiülematele. Powershell sisaldab järgmisi funktsioone: Käske(cmdlets), et kiirendada administreerimist, skriptimise võimalus, objektidega manipuleerimine (objekte on võimalik saata mujale tööriistadesse või andmebaasi) ning palju muud. Powershell on loodud just mõeldes IT spetsialisti peale, et võimaldada Windows süsteemide ja rakenduste haldamist ning automatiseerimist. Minu arust on Powershell vägagi asjalik ning vajalik tööriist.



Kasutatud kirjandus

  1. Eneta foorum
  2. PowerShellPack
  3. Windows Powershell - Wikipedia
  4. Microsoft TechNet - Powershell
  5. google.com