- “このシステムではスクリプトの実行が無効になっているため・・” セキュリティーエラー発生
- フォルダ内ファイルの一括リネーム
- フォルダ内のファイル全てを対象に文字列置き換え
- Powershellでwhichコマンドを実現したい
- PowershellでZIPとUNZIP
- Powershellでgrepコマンドを実現したい
- Powershellでファイルの行数を簡単に調べたい(wcの代わりに)
“このシステムではスクリプトの実行が無効になっているため・・” セキュリティーエラー発生
いつも忘れたころにあたるこのエラー。実行ポリシーの問題でエラーになってしまう事だけは覚えているのだけど毎回ネットを検索してしまう。今回はここに書き留めます。
-- 実行ポリシーがダメなんだよね、、
PS C:\plsql> Get-ExecutionPolicy
Restricted
PS C:\plsql>
環境変数の操作
長くなったので以下分割しました。
一時的に開放(他人のPCで触るときなどはこちら)
実行オプション -ExecutionPolicy RemoteSigned を指定して実行
PowerShell -ExecutionPolicy RemoteSigned .\my_export.ps1 orau8 PACKAGE
恒久的に開放(自分のPC用) ※PowerShellを管理者として実行する必要あり
Set-ExecutionPolicy RemoteSigned とたたいて実行ポリシーを恒久的に変更。その後には普通に実行できます。
Set-ExecutionPolicy RemoteSigned
PS C:\plsql> Set-ExecutionPolicy RemoteSigned
実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "N"): y
PS C:\plsql> .\mnt_le_export.ps1 orau8 PACKAGE
やっぱりデフォルトの「Restricted」に戻したくなった場合
Set-ExecutionPolicy Restricted でもとに戻ります
Set-ExecutionPolicy Restricted
PS C:\plsql> Set-ExecutionPolicy Restricted
実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "N"): y
PS C:\plsql>
フォルダ内ファイルの一括リネーム
以下に移動しました。
フォルダ内のファイル全てを対象に文字列置き換え
以下に移動しました。
Powershellでwhichコマンドを実現したい
Linuxのwhichコマンドついたたきたくなるんです。コマンドレットとしてGet-Commandなのですがどうも馴染めないんです。dosコマンドではwhere.exeです。個人的には「.exe」を省略したいですが、仕方なくこれで代用しています、、
## Linuxでは
[oracle@vm013 ~]$ which sqlplus
~/app/product/12.1.0/dbhome_1/bin/sqlplus
[oracle@vm013 ~]$
## PowerShellでは
PS C:\> where.exe sqlplus
C:\tools\oracle_client\instantclient_19_11\sqlplus.exe
PS C:\>
PS C:\temp\sample01> get-command sqlplus
CommandType Name Version Source
----------- ---- ------- ------
Application sqlplus.exe 12.2.0.0 C:\tools\oracle_client\instantclient_19_11\sqlplus.exe
PowershellでZIPとUNZIP
以下に移動しました
Powershellでgrepコマンドを実現したい
以下に移動しました。
Powershellでファイルの行数を簡単に調べたい(wcの代わりに)
get-content "ファイルのパス" | Measure-Object -Line -Word -Character
行数だけでよいなら
(Get-Content "ファイルのパス" | Measure-Object -Line).Lines
Powershellでcatコマンドを実現したい
ls がGet-ChildItemのエイリアスで定義されているように、catはGet-Contentコマンドレットのエイリアスとして定義されているようです。
Get-Content .\sql01.sql
## 実行例
PS C:\temp\sqlfiles> get-content .\sql01.sql
SET VERIFY OFF
set lin 200
select '&1' as lno,to_char(sysdate,'YYYY/MM/DD HH24:MI:SS') as "SYSDATE" from dual;
PS C:\temp\sqlfiles>
Powershellでteeコマンドを実現したい
Linuxには、標準出力に出力した内容を出力しつつも、同時に同じ内容をファイル出力をしたような時に活躍する便利なteeコマンドがありますが、PowerShellでもないか探したところありました。
(補足)以下例題でWrite-Outputを使っていますが、Write-Hostはパイプへ渡す事ができないのでおのずとTee-objectでは利用できない事になります。
-- Encodingオプションを v7.2以降からサポートされはじめました
-- 以前v7.1.5の環境をもっていたのですがその時は使えていなかった事覚えています。
--
ls | Tee-Object -FilePath ./logs/lsout.log -Append -Encoding utf8
Write-Output "こんにちは" | Tee-object -FilePath ./logs/lsout.log -Append -Encoding utf8
PS D:\work\temp> ls | Tee-Object -FilePath ./logs/lsout.log -Append -Encoding utf8
Directory: D:\work\temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2022/12/04 2:47 logs
-a--- 2022/12/04 0:45 571 sample01.ps1
PS D:\work\temp> Write-Output "こんにちは" | Tee-object -FilePath ./logs/lsout.log -Append -Encoding utf8
こんにちは
PS D:\work\temp> cat logs/lsout.log
Directory: D:\work\temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2022/12/04 2:47 logs
-a--- 2022/12/04 0:45 571 sample01.ps1
こんにちは
PS D:\work\temp>
Powershell ISEを起動する (ショートカット)
ファイル名を指定して実行
powershell_ise
フォルダ内ファイル一覧をクリップボードへ
(Get-ChildItem -File).FullName | Set-Clipboard
フォルダ内ファイル一覧をクリップボードへ(ファイル名のみ)
(Get-ChildItem -File).Name | Set-Clipboard
環境変数を一時的に設定する
$env: + 変数名 = “設定値” で設定可能です。
$env:TNS_ADMIN = "D:\instantclient"
tail -f を実現したい
以下に移動しました。