目次
PowerShellを実行します。
- 構文
- UString = POWERSHELL( コマンド, 同期フラグ, 画面表示 )
- 引数
- コマンド (String)必須
- POWERSHELLのコマンド
- 同期フラグ (Boolean = False)省略可
- FALSE
- 終了を待つ (デフォルト)
- TRUE
- 待たずに戻る
- 画面表示 (Boolean = False)省略可
- FALSE
- POWERSHELL画面を表示しない (デフォルト)
- TRUE
- 表示する
- 2
- 最小化状態で起動する
- 戻り値
- 標準出力を返す(同期フラグがTrue、もしくは画面表示がTrue,2の場合は返しません)
使い方
コマンドを実行し返された結果を出力
PowerShellで(Get-Date).DateTimeのコマンドを実行し、返された結果を出力します。以下のコマンドは今日の日付を出力します。
PRINT POWERSHELL("(Get-Date).DateTime")
同期フラグ
POWERSHELL関数はオーバーヘッドでPowerShellの起動が遅いので、戻り値がないものや処理の終了を待機する必要のないときは、同期フラグにTrueを指定します。
また画面表示にTrueを指定しておくとPowerShellの処理中はウィンドウが表示されるので、このウィンドウの有無で処理が完了したかの確認に使うことができます。
以下はcmdに指定されたコマンドを実行するプログラムです。同期フラグにTrueを指定しているので完了前に処理は進みますがGETID関数でPowerShellウィンドウの有無を調べ、処理画面が表示されている間は待機するプログラムです。
POWERSHELL(cmd, TRUE, TRUE)
REPEAT
SLEEP(0.001)
UNTIL GETID("Windows PowerShell", "ConsoleWindowClass") = -1
同期フラグにTrueを指定すると処理の終了を待たずに次に進むため、オーバーヘッドでの待ち時間を他の処理に回すことができます。このプログラムの場合、POWERSHELL関数の直後に他の処理を記述します。
ただし同期フラグ・画面表示をデフォルト以外に指定すると戻り値の取得ができないため、戻り値が必要な処理ではこの方法は使えません。
実行結果をテキストファイルに出力
POWERSHELL関数での結果をテキストファイルに出力するにはOut-Fileコマンドを使い、以下のように記述します。commandに実行したいコマンドを指定します。
POWERSHELL("command | Out-File path")
以下は実行中のプロセス一覧をD:\Desktop\プロセス一覧.txtに出力する例です。
PRINT POWERSHELL("Get-Process | Out-File D:\Desktop\プロセス一覧.txt")
POWERSHELL関数の実行結果をテキストファイルに出力し、メモ帳で開く場合は以下のように記述します。
DIM path = "D:\Desktop\プロセス一覧.txt"
POWERSHELL("Get-Process | Out-File " + path)
EXEC("notepad " + path)
複数のコマンドを1行で書く
command1に続けてcommand2を実行したいときは、コマンドを;(セミコロン)で繋げます。
POWERSHELL("command1; command2")
command1の処理結果をcommand2に渡すには|(パイプライン)を使います。
POWERSHELL("command1 | command2")
プログラム実行例
ファイルの作成日時・更新日時・アクセス日時を書き換える
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM path = "D:\Documents\sample.txt"
DIM folderspec = FSO.GetParentFolderName(path)
DIM filename = FSO.GetFileName(path)
DIM CreationTime = "2022/07/01 00:00:00" // 作成日時
DIM LastWriteTime = "2022/07/01 00:00:00" // 更新日時
DIM LastAccessTime = "2022/07/01 00:00:00" // アクセス日時
PRINT POWERSHELL("pushd <#DBL>" + folderspec + "<#DBL>;" + _
"Set-ItemProperty " + filename + " -name CreationTime -value <#DBL>" + CreationTime + "<#DBL>;" + _
"Set-ItemProperty " + filename + " -name LastWriteTime -value <#DBL>" + LastWriteTime + "<#DBL>;" + _
"Set-ItemProperty " + filename + " -name LastAccessTime -value <#DBL>" + LastAccessTime + "<#DBL>;" + _
)
PCをシャットダウンする(PowerShell)
PowerShellのStop-ComputerコマンドでPCのシャットダウンを行います。
POWERSHELL("Stop-Computer -Force")
PCを再起動する(PowerShell)
PowerShellのRestart-Computer コマンドでPCの再起動を行います。
POWERSHELL("Restart-Computer -Force")
システムの起動時間を取得
システムの起動時間をyyyy年m月d日 h:n:sの形式で取得します。
PRINT TRIM(POWERSHELL("[Management.ManagementDateTimeConverter]::ToDateTime((Get-WmiObject Win32_OperatingSystem).LastBootUpTime)"))
2019年12月21日 15:53:56
IEオブジェクト(COMオブジェクト)のメンバー一覧を取得する
PRINT POWERSHELL("$ie = New-Object -ComObject InternetExplorer.Application;Get-Member -InputObject $ie")
TypeName: System.__ComObject#{d30c1661-cdaf-11d0-8a3e-00c04fc9e26e}
Name MemberType Definition
---- ---------- ----------
ClientToWindow Method void ClientToWindow (int, int)
ExecWB Method void ExecWB (OLECMDID, OLECMDEXECOPT, Variant, Variant)
GetProperty Method Variant GetProperty (string)
GoBack Method void GoBack ()
GoForward Method void GoForward ()
GoHome Method void GoHome ()
GoSearch Method void GoSearch ()
Navigate Method void Navigate (string, Variant, Variant, Variant, Variant)
Navigate2 Method void Navigate2 (Variant, Variant, Variant, Variant, Variant)
PutProperty Method void PutProperty (string, Variant)
QueryStatusWB Method OLECMDF QueryStatusWB (OLECMDID)
Quit Method void Quit ()
Refresh Method void Refresh ()
Refresh2 Method void Refresh2 (Variant)
ShowBrowserBar Method void ShowBrowserBar (Variant, Variant, Variant)
Stop Method void Stop ()
AddressBar Property bool AddressBar () {get} {set}
Application Property IDispatch Application () {get}
Busy Property bool Busy () {get}
Container Property IDispatch Container () {get}
Document Property IDispatch Document () {get}
FullName Property string FullName () {get}
FullScreen Property bool FullScreen () {get} {set}
Height Property int Height () {get} {set}
HWND Property int HWND () {get}
Left Property int Left () {get} {set}
LocationName Property string LocationName () {get}
LocationURL Property string LocationURL () {get}
MenuBar Property bool MenuBar () {get} {set}
Name Property string Name () {get}
Offline Property bool Offline () {get} {set}
Parent Property IDispatch Parent () {get}
Path Property string Path () {get}
ReadyState Property tagREADYSTATE ReadyState () {get}
RegisterAsBrowser Property bool RegisterAsBrowser () {get} {set}
RegisterAsDropTarget Property bool RegisterAsDropTarget () {get} {set}
Resizable Property bool Resizable () {get} {set}
Silent Property bool Silent () {get} {set}
StatusBar Property bool StatusBar () {get} {set}
StatusText Property string StatusText () {get} {set}
TheaterMode Property bool TheaterMode () {get} {set}
ToolBar Property int ToolBar () {get} {set}
Top Property int Top () {get} {set}
TopLevelContainer Property bool TopLevelContainer () {get}
Type Property string Type () {get}
Visible Property bool Visible () {get} {set}
Width Property int Width () {get} {set}
Shellオブジェクト(COMオブジェクト)のメンバー一覧を取得する
PRINT POWERSHELL("$shell = New-Object -ComObject Shell.Application;Get-Member -InputObject $shell")
TypeName: System.__ComObject#{286e6f1b-7113-4355-9562-96b7e9d64c54}
Name MemberType Definition
---- ---------- ----------
AddToRecent Method void AddToRecent (Variant, string)
BrowseForFolder Method Folder BrowseForFolder (int, string, int, Variant)
CanStartStopService Method Variant CanStartStopService (string)
CascadeWindows Method void CascadeWindows ()
ControlPanelItem Method void ControlPanelItem (string)
EjectPC Method void EjectPC ()
Explore Method void Explore (Variant)
ExplorerPolicy Method Variant ExplorerPolicy (string)
FileRun Method void FileRun ()
FindComputer Method void FindComputer ()
FindFiles Method void FindFiles ()
FindPrinter Method void FindPrinter (string, string, string)
GetSetting Method bool GetSetting (int)
GetSystemInformation Method Variant GetSystemInformation (string)
Help Method void Help ()
IsRestricted Method int IsRestricted (string, string)
IsServiceRunning Method Variant IsServiceRunning (string)
MinimizeAll Method void MinimizeAll ()
NameSpace Method Folder NameSpace (Variant)
Open Method void Open (Variant)
RefreshMenu Method void RefreshMenu ()
SearchCommand Method void SearchCommand ()
ServiceStart Method Variant ServiceStart (string, Variant)
ServiceStop Method Variant ServiceStop (string, Variant)
SetTime Method void SetTime ()
ShellExecute Method void ShellExecute (string, Variant, Variant, Variant, Variant)
ShowBrowserBar Method Variant ShowBrowserBar (string, Variant)
ShutdownWindows Method void ShutdownWindows ()
Suspend Method void Suspend ()
TileHorizontally Method void TileHorizontally ()
TileVertically Method void TileVertically ()
ToggleDesktop Method void ToggleDesktop ()
TrayProperties Method void TrayProperties ()
UndoMinimizeALL Method void UndoMinimizeALL ()
Windows Method IDispatch Windows ()
WindowsSecurity Method void WindowsSecurity ()
WindowSwitcher Method void WindowSwitcher ()
Application Property IDispatch Application () {get}
Parent Property IDispatch Parent () {get}
参考文献
関連記事
- DOSCMD関数 (スクリプト関数)
- DOSCMD関数は、コマンドライン(コマンドプロンプト)を実行する関数です。第一引数に指定したコマンドを実行します。標準出力を戻値として返しますが、同期フラグもしくは画面出力がTrueの場合は戻値はありません。
- POFF関数 (スクリプト関数)
- POFFは、電源を制御する関数です。第一引数に指定したコマンドを実行します。コマンドには、電源断・ログオフ・リブート・サスペンド(休止状態)・サスペンド2(スタンバイ)・モニターOFF(省電力モード)・モニターOFF(電源断)・モニターON・スクリーンセーバ起動・UWSCの再起動があります。
- FolderItem.InvokeVerb メソッド (Shell)
- ファイルやフォルダを右クリックしたときに表示されるメニューのコマンドを実行します。