Windows PowerShell to udoskonalony następca wiersza poleceń. Stosowany jest do automatyzacji oraz ustawiania SO
Windows. Można go również użyć do uzyskania dostępu do systemu plików, rejestrów, procesów, usług, komponentów sieciowych lub do wybranych aplikacji.
Przed pierwszym zastosowaniem należy stwierdzić czy czy SO
Windows jest aktywny
PowerShell.
Jeżeli nie, to ustawić:
Panel sterowania>Programy i funkcje>Włącz lub wyłącz funkcje systemu Windows => pozycja "Windows PowerShell 2.0".
Jeżeli przy pomocy
PowerShella będą wykonywane polecenia, które wymagają wyższe uprawnienia, wtedy jest konieczne wcześniej uruchomić 32 lub 64-bitowy
PowerShell "jako administrator" (zgodnie z 32 lub 64-bitowym rodzajem runtime aplikacji PROMOTIC) a wpisać to polecenie:
Set-ExecutionPolicy Unrestricted
oraz wybrać i potwierdzić wybór "
A".
Przykład1:
Uruchomi polecenie ping a następnie netstat
JavaScriptVBScriptWybierz oraz skopiuj do schowka
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
Wysłanie wiadomości z PowerShell do aplikacji PROMOTIC:
Ten przykład umożliwia przy pomocy
PowerShell i polecenia
Invoke-WebRequest z metodą
"POST" do wysłania wiadomości do obiektu
PmaWebDir. Można to uchwycić w zdarzeniu
onPageAction i przy pomocy parametrów
pEvent.FilePath,
pEvent.Method,
pEvent.Params,
pEvent.Data do dalszego przetwarzania.
Sama metoda
Invoke-WebRequest jest poprzedzona uwierzytelnieniem przy pomocy nazwy i hasła, które chronią Web serwer aplikacji PROMOTIC.
Skrypt ten można zapisać do pliku z rozszerzeniem
ps1, a następnie uruchomić 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'
Wysłanie żądania o dane z PowerShell do aplikacji PROMOTIC:
Ten przykład umożliwia przy pomocy
PowerShell i
Invoke-WebRequest z metodą "GET" wysłać żądanie danych do obiektu
PmaWebDir.
Sama metoda
Invoke-WebRequest jest poprzedzona uwierzytelnieniem przy pomocy nazwy i hasła, które chronią Web serwer aplikacji PROMOTIC.
Skrypt ten można zapisać do pliku z rozszerzeniem
ps1, a następnie uruchomić 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
# Skrypt do przetwarzania odebranych danych
Ten może zostać przechwycony w zdarzeniu
onPageModify i parametry mogą być użyte do oceny i zwrócenia żądanych danych do klienta. Na przykład:
JavaScriptWybierz oraz skopiuj do schowka
if (pEvent.FilePath == "test.htm")
{
pEvent.PageString = "Test OK";
}
Ustawienia domyślnej drukarki w Windows:
JavaScriptVBScriptWybierz oraz skopiuj do schowka
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
Wymuszenie natychmiastowego zakończenia działania wszystkich aplikacji Excel na komputerze:
JavaScriptVBScriptWybierz oraz skopiuj do schowka
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"