Windows PowerShell je vyspělejším nástupcem příkazového řádku. Je využíván k automatizaci a konfigurování OS
Windows. Lze pomocí něho také přistupovat k souborovému systému, registrům, procesům, službám, síťovým komponentám nebo k vybraným aplikacím.
Před samotným prvním použitím je vhodné zjistit zda je v OS
Windows aktivní
PowerShell.
Pokud ne tak nastavit:
Ovládací panely>Programy a funkce>Zapnout nebo vypnout funkce systemu Windows => položka "Windows PowerShell 2.0".
Pokud pomocí
PowerShellu budou prováděny příkazy, které vyžadují vyšší oprávnění pak je nutno předem 32 nebo 64-bitový
PowerShell "Spustit jako správce" (v souladu s 32 nebo 64 typem runtime aplikace PROMOTIC) a zadat tento příkaz:
Set-ExecutionPolicy Unrestricted
a zvolit a potvrdit volbu "
A".
Příklad1:
Spustí příkaz ping a následně netstat
JavaScriptVBScriptVyber a zkopíruj do schránky
var oShell = Pm.AxGetObject("new", "WScript.Shell");
var sInvoke = "";
sInvoke += "ping 127.0.0.1\n";
sInvoke += "netstat";
oShell.Run("PowerShell " + sInvoke, 1, false);
Dim oShell, sInvoke
Set oShell = Pm.AxGetObject("new", "WScript.Shell")
sInvoke = ""
sInvoke = sInvoke & "ping 127.0.0.1" & vbCrLf
sInvoke = sInvoke & "netstat"
oShell.Run "PowerShell " & sInvoke, 1, false
Zaslání zprávy z PowerShellu do PROMOTIC aplikace:
Tento příklad umožňuje pomocí
PowerShellu příkazem
Invoke-WebRequest s metodou
"POST" odeslat zprávu do objektu
PmaWebDir. Tu lze zachytit v události
onPageAction a pomocí parametrů
pEvent.FilePath,
pEvent.Method,
pEvent.Params,
pEvent.Data dále zpracovat.
Samotné metodě
Invoke-WebRequest předchází autentizace jménem a heslem kterým je chráněn Web server aplikace PROMOTIC.
Tento skript lze uložit do souboru s příponou
ps1 a ten pak spouštět jako parametr programu
PowerShell.
$user = 'oper'
$pass = ''
$pair = "$($user):$($pass)"
$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($pair))
$basicAuthValue = "Basic $encodedCreds"
$Headers = @{Authorization = $basicAuthValue}
Invoke-WebRequest 'http://127.0.0.1/dir/test.htm?test=abc' -Headers $Headers -Body 'ahoj' -Method 'POST'
Zaslání požadavku na data z PowerShellu do PROMOTIC aplikace:
Tento příklad umožňuje pomocí
PowerShellu příkazem
Invoke-WebRequest s metodou "GET" zaslat objektu
PmaWebDir požadavek na data.
Samotné metodě
Invoke-WebRequest předchází autentizace jménem a heslem kterým je chráněn Web server aplikace PROMOTIC.
Tento skript lze uložit do souboru s příponou
ps1 a ten pak spouštět jako parametr programu
PowerShell.
$user = 'oper'
$pass = ''
$pair = "$($user):$($pass)"
$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($pair))
$basicAuthValue = "Basic $encodedCreds"
$Headers = @{Authorization = $basicAuthValue}
$res = Invoke-WebRequest 'http://127.0.0.1/dir/test.htm?test=abc' -Headers $Headers -Method 'GET'
$res.Content
# Skript pro zpracování přijatých dat
Tento lze zachytit v události
onPageModify a s pomocí parametrů vyhodnotit a vrátit klientovi požadovaná data. Například:
JavaScriptVyber a zkopíruj do schránky
if (pEvent.FilePath == "test.htm")
{
pEvent.PageString = "Test OK";
}
Nastavení přednastavené tiskárny ve Windows:
JavaScriptVBScriptVyber a zkopíruj do schránky
var oShell = Pm.AxGetObject("new", "WScript.Shell");
var sInvoke = "";
sInvoke += "$MYPRINTER = 'SHARP MX-B350W PCL6'\n";
sInvoke += "$PRINTERTMP = (Get-CimInstance -ClassName CIM_Printer | WHERE {$_.Name -eq $MYPRINTER}[0])\n";
sInvoke += "$PRINTERTMP | Invoke-CimMethod -MethodName SetDefaultPrinter | Out-Null\n";
oShell.Run("PowerShell " + sInvoke, 1, false);
Dim oShell, sInvoke
Set oShell = Pm.AxGetObject("new", "WScript.Shell")
sInvoke = ""
sInvoke = sInvoke & "$MYPRINTER = 'SHARP MX-B350W PCL6'" & vbCrLf
sInvoke = sInvoke & "$PRINTERTMP = (Get-CimInstance -ClassName CIM_Printer | WHERE {$_.Name -eq $MYPRINTER}[0])" & vbCrLf
sInvoke = sInvoke & "$PRINTERTMP | Invoke-CimMethod -MethodName SetDefaultPrinter | Out-Null" & vbCrLf
oShell.Run "PowerShell " & sInvoke, 1, false
Vynucené okamžité ukončení všech aplikací Excel na počítači:
JavaScriptVBScriptVyber a zkopíruj do schránky
var oShell = Pm.AxGetObject("new", "WScript.Shell");
oShell.Exec("taskkill /F /IM EXCEL.exe");
Dim oShell
Set oShell = Pm.AxGetObject("new", "WScript.Shell")
oShell.Exec "taskkill /F /IM EXCEL.exe"