A PowerShellt a Microsoft eleinte a hagyományos CMD / DOS-prompt, a parancssor utódjaként tervezte, de aztán egyre inkább egy univerzális rendszerkezelő, feladatautomatizáló platformként lett definiálva.
A PowerShell tehát egyszerre nagyon sok minden: parancssori eszköz, amellyel begépelt parancsokkal tudjuk utasítani a számítógépünket, hogy különböző műveleteket elvégezzen. A PowerShell egy programnyelv is, minden ehhez szükséges jellemzővel: ciklussal, vezérlőutasításokkal, operátorokkal, változókkal, adattípusokkal.
Legtöbb rendszerhéjjal ellentétben, a komunikáció szöveg, de a windows PowerShell a .NET-keretrendszer közös nyelvi futtatókörnyezet (CLR) és a .NET-keretrendszer épül, és objektumokkal kommunikál.
Szintaktika
Megjegyzés jelölése :
## íéáűúőóüö_ÍÉÁŰÚŐÓÜÖ
Más ps elő betöltése:
. d:\prg\Reporting\Modules\kl.ps1
Környezet munkaterület beállítása:
d:
cd \prg\kl\riport
Értékek file-ből betöltése és feldolgozása (soronként tömb elemibe):
$kltam = Get-Content "d:\prg\tam.txt"
$count =0
$kltam | ForEach-Object{
## beolvasás fileből és minta csere tömb elemeivel:
$sql = Load-File ("d:\prg\riport\kl.sql")
$r=[regex]':csere:';
$sql = $r.Replace($sql, $kltam[$count], -1);
...
$count++
}
Minta : LDAP (maszkolt) felhasználók lista lekérdezés és excel-be írás:
$SAMName = "kecskemetil*"
$excel = New-Object -COM Excel.Application
$ci = [System.Globalization.CultureInfo]'en-US'
$src="d:\prg\ldap.xls"
if ( [System.IO.File]::Exists($src) )
{
remove-item -force $src
}
$book = $excel.Workbooks.PSBase.GetType().InvokeMember('Add', [Reflection.BindingFlags]::InvokeMethod, $null,$excel.Workbooks, $null, $ci)
$excel.Visible = 0
$sheet = 1
$sh = $book.sheets.item($sheet)
$sh.Cells.item(1,1).formulaLocal = "CN"
$sh.Cells.item(1,2).formulaLocal = "sAMAccountName"
$sh.Cells.item(1,3).formulaLocal = "title"
$sh.Cells.item(1,4).formulaLocal = "distinguishedname"
$sh.Cells.item(1,5).formulaLocal = "manager"
$sh.Cells.item(1,6).formulaLocal = "displayName"
$sh.Cells.item(1,7).formulaLocal = "physicalDeliveryOfficeName"
$sh.Cells.item(1,8).formulaLocal = "mail'"
$sh.Cells.item(1,9).formulaLocal = "department"
$sh.Cells.item(1,10).formulaLocal = "mobile"
$sh.Cells.item(1,11).formulaLocal = "memberOf"
$sh.Cells.item(1,12).formulaLocal = "initials"
$i = 2
ldap_fnev & "));cn, samaccountname, title, distinguishedname, employeeid, physicalDeliveryOfficeName, manager, displayName, department, mail, mobile, mailNickname, manager, description, extensionAttribute2;subtree"
$root = [ADSI]"LDAP://DC= netudki,DC=corp"
$search = [adsisearcher]$root
$Search.filter = "(&(objectClass=user)(sAMAccountName= $SAMName))"
$colResults = $Search.FindAll()
$ii=2
foreach ($i in $colResults)
{
$sh.Cells.item($ii,1).formulaLocal = [string]$i.Properties.Item('cn')
$sh.Cells.item($ii,2).formulaLocal = [string]$i.Properties.Item('sAMAccountName')
$sh.Cells.item($ii,3).formulaLocal = [string]$i.Properties.Item('title')
$sh.Cells.item($ii,4).formulaLocal = [string]$i.Properties.Item('distinguishedname')
$sh.Cells.item($ii,5).formulaLocal = [string]$i.Properties.Item('manager')
$sh.Cells.item($ii,6).formulaLocal = [string]$i.Properties.Item('displayName')
$sh.Cells.item($ii,7).formulaLocal = [string]$i.Properties.Item('physicalDeliveryOfficeName')
$sh.Cells.item($ii,8).formulaLocal = [string]$i.Properties.Item('mail')
$sh.Cells.item($ii,9).formulaLocal = [string]$i.Properties.Item('department')
$sh.Cells.item($ii,10).formulaLocal = [string]$i.Properties.Item('mobile')
$sh.Cells.item($ii,11).formulaLocal = [string]$i.Properties.Item('memberOf')
$sh.Cells.item($ii,12).formulaLocal = [string]$i.Properties.Item('initials')
$ii++
}
#excel elmentése $src helyre és néven "56" formátumban - excel formátum, majd futo excel folyamat bezárása
[void]$book.PSBase.GetType().InvokeMember('SaveAs', [Reflection.BindingFlags]::InvokeMethod, $null, $book, ($src,"56"), $ci)
$excel.quit()
# if (ps excel) { kill -name excel} ### ha fut mindenképpen lezárás
$null = [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)
PS használat:
cmd/bat fileből:
powershell -noexit &"c:\Könyvtár szóközzel\második.ps1"
powershell -noexit c:\második.ps1
Buktatók:
- a társítás ps1 notepad.exe ezért futtatásnál nem fút
- teljes elérési útvonal megadása szükséges
- jogosultság beállítása (csak admin)
## jog beállítása
PS C:\> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
PS C:\> Set-ExecutionPolicy -ExecutionPolicy Bypass
## jog lekérdezése
PS C:\> Get-ExecutionPolicy -List
A PowerShell tehát egyszerre nagyon sok minden: parancssori eszköz, amellyel begépelt parancsokkal tudjuk utasítani a számítógépünket, hogy különböző műveleteket elvégezzen. A PowerShell egy programnyelv is, minden ehhez szükséges jellemzővel: ciklussal, vezérlőutasításokkal, operátorokkal, változókkal, adattípusokkal.
PowerShell :
az Windows parancssori rendszerhéj, mely különösen a rendszergazdák (üzemeltetésre) számára terveztek.
Windows PowerShell tartalmaz egy interaktív kérdés és a egy parancsfájl-kezelési környezet, amely önállóan vagy együtt is használhatók.
Legtöbb rendszerhéjjal ellentétben, a komunikáció szöveg, de a windows PowerShell a .NET-keretrendszer közös nyelvi futtatókörnyezet (CLR) és a .NET-keretrendszer épül, és objektumokkal kommunikál.
Ez a alapvető változtatás a környezet kezelése és a Windows configuration teljesen új eszközöket és módszereket biztosít.
Windows PowerShell több mint száz alapszintű fő parancsmagot tartalmaz, és mindenki írhat írhat saját parancsmagokat is, melyeket akár más felhasználókkal való megosztással is használhat..
A környezetválasztóval, például a Windows PowerShell hozzáférést biztosít a fájlrendszerhez regisztry-hez, szolgáltatók más adattárakban, a beállításjegyzék és a digitális aláírás tanúsítványtárolókban lévő adatokhoz is.
Windows PowerShell több mint száz alapszintű fő parancsmagot tartalmaz, és mindenki írhat írhat saját parancsmagokat is, melyeket akár más felhasználókkal való megosztással is használhat..
A környezetválasztóval, például a Windows PowerShell hozzáférést biztosít a fájlrendszerhez regisztry-hez, szolgáltatók más adattárakban, a beállításjegyzék és a digitális aláírás tanúsítványtárolókban lévő adatokhoz is.
Használata:
- Fejelsztésre a Powershell ISE alkalmazáson interaktív módban a legkényelmesebb
- Futtatáshoz az elkészült és állományba mentett szkript ( .ps1 file) futtatása elég
Szintaktika
Megjegyzés jelölése :
## íéáűúőóüö_ÍÉÁŰÚŐÓÜÖ
Más ps elő betöltése:
. d:\prg\Reporting\Modules\kl.ps1
Környezet munkaterület beállítása:
d:
cd \prg\kl\riport
Értékek file-ből betöltése és feldolgozása (soronként tömb elemibe):
$kltam = Get-Content "d:\prg\tam.txt"
$count =0
$kltam | ForEach-Object{
## beolvasás fileből és minta csere tömb elemeivel:
$sql = Load-File ("d:\prg\riport\kl.sql")
$r=[regex]':csere:';
$sql = $r.Replace($sql, $kltam[$count], -1);
...
$count++
}
Minta : LDAP (maszkolt) felhasználók lista lekérdezés és excel-be írás:
$SAMName = "kecskemetil*"
$excel = New-Object -COM Excel.Application
$ci = [System.Globalization.CultureInfo]'en-US'
$src="d:\prg\ldap.xls"
if ( [System.IO.File]::Exists($src) )
{
remove-item -force $src
}
$book = $excel.Workbooks.PSBase.GetType().InvokeMember('Add', [Reflection.BindingFlags]::InvokeMethod, $null,$excel.Workbooks, $null, $ci)
$excel.Visible = 0
$sheet = 1
$sh = $book.sheets.item($sheet)
$sh.Cells.item(1,1).formulaLocal = "CN"
$sh.Cells.item(1,2).formulaLocal = "sAMAccountName"
$sh.Cells.item(1,3).formulaLocal = "title"
$sh.Cells.item(1,4).formulaLocal = "distinguishedname"
$sh.Cells.item(1,5).formulaLocal = "manager"
$sh.Cells.item(1,6).formulaLocal = "displayName"
$sh.Cells.item(1,7).formulaLocal = "physicalDeliveryOfficeName"
$sh.Cells.item(1,8).formulaLocal = "mail'"
$sh.Cells.item(1,9).formulaLocal = "department"
$sh.Cells.item(1,10).formulaLocal = "mobile"
$sh.Cells.item(1,11).formulaLocal = "memberOf"
$sh.Cells.item(1,12).formulaLocal = "initials"
$i = 2
ldap_fnev & "));cn, samaccountname, title, distinguishedname, employeeid, physicalDeliveryOfficeName, manager, displayName, department, mail, mobile, mailNickname, manager, description, extensionAttribute2;subtree"
$root = [ADSI]"LDAP://DC= netudki,DC=corp"
$search = [adsisearcher]$root
$Search.filter = "(&(objectClass=user)(sAMAccountName= $SAMName))"
$colResults = $Search.FindAll()
$ii=2
foreach ($i in $colResults)
{
$sh.Cells.item($ii,1).formulaLocal = [string]$i.Properties.Item('cn')
$sh.Cells.item($ii,2).formulaLocal = [string]$i.Properties.Item('sAMAccountName')
$sh.Cells.item($ii,3).formulaLocal = [string]$i.Properties.Item('title')
$sh.Cells.item($ii,4).formulaLocal = [string]$i.Properties.Item('distinguishedname')
$sh.Cells.item($ii,5).formulaLocal = [string]$i.Properties.Item('manager')
$sh.Cells.item($ii,6).formulaLocal = [string]$i.Properties.Item('displayName')
$sh.Cells.item($ii,7).formulaLocal = [string]$i.Properties.Item('physicalDeliveryOfficeName')
$sh.Cells.item($ii,8).formulaLocal = [string]$i.Properties.Item('mail')
$sh.Cells.item($ii,9).formulaLocal = [string]$i.Properties.Item('department')
$sh.Cells.item($ii,10).formulaLocal = [string]$i.Properties.Item('mobile')
$sh.Cells.item($ii,11).formulaLocal = [string]$i.Properties.Item('memberOf')
$sh.Cells.item($ii,12).formulaLocal = [string]$i.Properties.Item('initials')
$ii++
}
#excel elmentése $src helyre és néven "56" formátumban - excel formátum, majd futo excel folyamat bezárása
[void]$book.PSBase.GetType().InvokeMember('SaveAs', [Reflection.BindingFlags]::InvokeMethod, $null, $book, ($src,"56"), $ci)
$excel.quit()
# if (ps excel) { kill -name excel} ### ha fut mindenképpen lezárás
$null = [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)
PS használat:
cmd/bat fileből:
powershell -noexit &"c:\Könyvtár szóközzel\második.ps1"
powershell -noexit c:\második.ps1
Buktatók:
- a társítás ps1 notepad.exe ezért futtatásnál nem fút
- teljes elérési útvonal megadása szükséges
- jogosultság beállítása (csak admin)
## jog beállítása
PS C:\> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
PS C:\> Set-ExecutionPolicy -ExecutionPolicy Bypass
## jog lekérdezése
PS C:\> Get-ExecutionPolicy -List
Megjegyzések
Megjegyzés küldése