PowerShell programovanie

Programovacie jazyky, rady, poradňa...
maetoo
Light Star
Light Star
Príspevky: 263
Registrovaný: 24 okt 2009, 20:05
Bydlisko: Trenčín

PowerShell programovanie

Príspevok od používateľa maetoo »

Programovali ste už niekto v PowerShell?
Ake mate s PowerShellom skusenosti?
Da sa v praxy programovanie v PowerShelli dobre využiť?
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: PowerShell programovanie

Príspevok od používateľa BX »

Ja som sa k tomu dostal v práci. Mali v tom napísané skripty na transformovanie SQL z jedného prostredia do druhého, alebo nejakú manipuláciu so súbormi. Bolo to určite lepšie ako nejaké hnusné bat súbory.
A zároveň mi to neprišlo ako niečo, čo by sa musel človek cielene učiť. Je dobré o tom vedieť a keď sa naskytne vhodná príležitosť, s pomocou internetu nie je ťažké v tom niečo napísať.
Mek
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4661
Registrovaný: 23 mar 2005, 23:00
Bydlisko: ZA <-> TN
Kontaktovať používateľa:

Re: PowerShell programovanie

Príspevok od používateľa Mek »

Ano, v praci v nom robime pomerne casto. Ide o jednoduche skripty na periodicku kontrolu integrity dat v databazach a rozne dalsie pomocne utilitky. Syntax powershellu je sice nic moc, ale zvyknut sa da (horsie je, ze casom to clovek zase zabudne a musi googlit). Ale najviac sa mi paci, ze z powershellu sa daju volat metody z CLR, pripadne vlastnych nalinkovanych .NET kniznic.
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8216
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: PowerShell programovanie

Príspevok od používateľa harrison314 »

Ano robim v nom, je to skryprtovaci jazyk, takze necakaj ze v tom spravis nejaku velku aplikaciu.
Pouziva sa na konfiguraciu prostredia, nejake male admin skrypty, v poslupraci s Visual Studium a hôlavne pri nasdzovani vetcoich aplikacii.

Ja ho najcastejsie pouzivam pri instalcnych skryptoch nuget balickov.

Paci sa mi silne napojenie na .NET platformu, cokolvek co je v .Net-e vies zavolat cez PowerShell a ma to foreach.
maetoo
Light Star
Light Star
Príspevky: 263
Registrovaný: 24 okt 2009, 20:05
Bydlisko: Trenčín

Re: PowerShell programovanie

Príspevok od používateľa maetoo »

Nechcem v powershelli spravit ziadnu velku aplikaciu. Ak to powershell zvladne, chcem si vytvorit script, ktory by automaticky doplnil do OEM informacii, aby som to nemusel robit vzdy manualne a zdlhavo cez registre. Da sa nieco taketo naskriptit?
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8216
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: PowerShell programovanie

Príspevok od používateľa harrison314 »

maetoo
Light Star
Light Star
Príspevky: 263
Registrovaný: 24 okt 2009, 20:05
Bydlisko: Trenčín

Re: PowerShell programovanie

Príspevok od používateľa maetoo »

Celkom dobre napísany kód.
Pre mna ma zbytočne funkcionality, ktoré nepotrebujem.
Nechal som sa inšpirovať a spravil som si svoj script.

Tu je:

Kód: Vybrať všetko

write-host # Vloženy enter
write-host "Script sa začal vykonavať" # Oznamy spustenie scriptu

# Definovanie premennych
$oemPatchReg = "HKLM:\Software\Microsoft\Windows\CurrentVersion\OEMInformation" # Cesta k zložke registrov, v ktortej sa OEM Informacie nachadzaju
$oemDiskPatch = "$OSDISK\oem\" # Definovanie žložky, do ktorej sa ma logo skopirovať
$oemPatchLogo = "$PSScriptRoot\pictures\oemlogo.bmp" #Cesta k logu, ktore potrebujeme zobrazovať vo vlastnostiach pc 

# Vytvorý novú zložku
New-Item -ItemType directory -Path $OSDISK\oem\

# Skopriovanie loga zo scriptovej zložky do zložky OEM
Copy-Item -Path $oemPatchLogo "$oemDiskPatch" 

# Vyplnenie registrov
Set-ItemProperty -Path $oemPatchReg -Name Logo -Value $oemDiskPatch # Vloži logo do tento počitač-vlastnosti 
Set-ItemProperty -Path $oemPatchReg -Name Manufacturer -Value "Nazov firmy s.r.o." # Názov firmy
Set-ItemProperty -Path $oemPatchReg -Name SupportPhone -Value "0903222333" # Telefonné číslo
Set-ItemProperty -Path $oemPatchReg -Name SupportHours -Value "Pondelok-Piatok, 8:00-16:30" # Pracovna doba
Set-ItemProperty -Path $oemPatchReg -Name SupportUrl -Value "http://www.nazov-firmy.sk" # Stranka firmy


write-host "Script dokončeny" # Oznamy uspešne dokončenie scriptu
Keď ho spustim, napíše mi tam chýby:

Kód: Vybrať všetko

Script sa začal vykonavať


    Directory: C:\


Mode                LastWriteTime         Length Name                                                                                                                    
----                -------------         ------ ----                                                                                                                    
d-----       17.05.2016     14:54                oem                                                                                                                     
Set-ItemProperty : Requested registry access is not allowed.
At C:\Users\DeMi\Desktop\OEM Information - Maetoo\OEM Information.ps1:16 char:1
+ Set-ItemProperty -Path $oemPatchReg -Name Logo -Value $oemDiskPatch # ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (HKEY_LOCAL_MACH...\OEMInformation:String) [Set-ItemProperty], SecurityException
    + FullyQualifiedErrorId : System.Security.SecurityException,Microsoft.PowerShell.Commands.SetItemPropertyCommand
 
Set-ItemProperty : Requested registry access is not allowed.
At C:\Users\DeMi\Desktop\OEM Information - Maetoo\OEM Information.ps1:17 char:1
+ Set-ItemProperty -Path $oemPatchReg -Name Manufacturer -Value "Nazov  ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (HKEY_LOCAL_MACH...\OEMInformation:String) [Set-ItemProperty], SecurityException
    + FullyQualifiedErrorId : System.Security.SecurityException,Microsoft.PowerShell.Commands.SetItemPropertyCommand
 
Set-ItemProperty : Requested registry access is not allowed.
At C:\Users\DeMi\Desktop\OEM Information - Maetoo\OEM Information.ps1:18 char:1
+ Set-ItemProperty -Path $oemPatchReg -Name SupportPhone -Value "090322 ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (HKEY_LOCAL_MACH...\OEMInformation:String) [Set-ItemProperty], SecurityException
    + FullyQualifiedErrorId : System.Security.SecurityException,Microsoft.PowerShell.Commands.SetItemPropertyCommand
 
Set-ItemProperty : Requested registry access is not allowed.
At C:\Users\DeMi\Desktop\OEM Information - Maetoo\OEM Information.ps1:19 char:1
+ Set-ItemProperty -Path $oemPatchReg -Name SupportHours -Value "Pondel ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (HKEY_LOCAL_MACH...\OEMInformation:String) [Set-ItemProperty], SecurityException
    + FullyQualifiedErrorId : System.Security.SecurityException,Microsoft.PowerShell.Commands.SetItemPropertyCommand
 
Set-ItemProperty : Requested registry access is not allowed.
At C:\Users\DeMi\Desktop\OEM Information - Maetoo\OEM Information.ps1:20 char:1
+ Set-ItemProperty -Path $oemPatchReg -Name SupportUrl -Value "http://w ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (HKEY_LOCAL_MACH...\OEMInformation:String) [Set-ItemProperty], SecurityException
    + FullyQualifiedErrorId : System.Security.SecurityException,Microsoft.PowerShell.Commands.SetItemPropertyCommand
 
Script dokončeny
Čast s vytvorenim novej zložky a skopirovanie loga mi pracuje, ale časť vyplnenia registrov nie.
Pate s tymito chýbami skusenosti?
Viete mi poradiť kde v scripte mám chýbu, keď mi nepracuje vyplnenie registrov?
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8216
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: PowerShell programovanie

Príspevok od používateľa harrison314 »

Mas to tam napisane, ten skrypt nema prava pracovat z registramy, skus ho spustit ako admin, alebo ak nepomoze tak zmen ExecutionPolicy
maetoo
Light Star
Light Star
Príspevky: 263
Registrovaný: 24 okt 2009, 20:05
Bydlisko: Trenčín

Re: PowerShell programovanie

Príspevok od používateľa maetoo »

Spustil som Powershell ako administratora. Otvoril script a spustil.
Script fungoval na prvykrat.

Co je toExecutionPolicy?
Ako sa nastavuje?

Pocul som, ze v PowerShelli sa da vlozit nejaky kod, a ze ked otvorim
script bude hned spusteny ako administrator bez toho, aby som ja
musel spustat PowerShell ako administratora.
Ako to nastavit? Mate s tym skusenosti?
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8216
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: PowerShell programovanie

Príspevok od používateľa harrison314 »

maetoo
Light Star
Light Star
Príspevky: 263
Registrovaný: 24 okt 2009, 20:05
Bydlisko: Trenčín

Re: PowerShell programovanie

Príspevok od používateľa maetoo »

Googlil som. Nasiel som aj stranku, ktoru si publikoval.
V PowerShelli som spravil prvy script, nemam s nim moc skusenosti,
takze navod na stranke neviem vyuzit. Keby som to vedel vyuzit,
nepisal by som sem na stranku.
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8216
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: PowerShell programovanie

Príspevok od používateľa harrison314 »

Napísať odpoveď