PowerShell AWS Toolインストールと S3接続

PowerShell S3Bucket取得

PowerShellAWS Toolsモジュールをインストールして S3に接続する方法です。

このPowerShellモジュールを使うと AWS CLIをインストールする必要がありません。

PowerShell 上で、 AWS.Toolsをインストールする

下↓のコマンドを使ってAWS.Toolsをインストールします。

Install-Module -Name AWS.Tools.Installer

実行すると下記↓のように「信頼できないリポジトリ」とでます。

You are installing the modules from an untrusted repository. If you trust this repository, change its
InstallationPolicy value by running the Set-PSRepository cmdlet. Are you sure you want to install the modules from
'PSGallery'?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"):

「Y」を入力します。

再インストールしたい場合は、 Install-Moduleに -Forceをつけます。

-Forceオプションは、インストールされたモジュールを一旦削除して再度インストールしてくれます。

NetCore, Tools.S3をインストール

Install-Module -name AWSPowerShell.NetCore
Install-AWSToolsModule AWS.Tools.S3 -CleanUp

Install-AWSToolsModuleを実行したら下↓が表示されます。

Are you sure you want to perform this action?
Performing the operation "Install-AWSToolsModule" on target "AWS Tools version 4.1.125.0".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): 

「Y」を入力後、 インストール完了です。

Installing module AWS.Tools.S3 version 4.1.125.0が入りました。

Credential (AccessKey, SecretKey)の設定

Set-AWSCredential -AccessKey xxxxxxxxx -SecretKey xxxxxxxx -StoreAs default

設定後、 Credentialを確認する場合下記コマンドを使う。

Get-AWSCredential -ListProfileDetail
Credentialを確認する
Credentialを確認

デフォルトのリージョンの設定

下記コマンドで、デフォルトのリージョンを設定します。

Initialize-AWSDefaults -Region ap-northeast-1 -StoredCredentials xxxx

PowerShell S3コマンド

下記コマンドで、Bucket名一覧が取得できます。

Get-S3Bucket -StoredCredentials default

Credentialをdefault設定しているので、 [-StoredCredentials default] ナシても大丈夫です。

下記↓のコマンドで、S3オブジェクトを確認できます。

 Get-S3Object -BucketName Bucket名

PowerShell Chromeブラウザのタイトル名を取得

PowerShell Get-Process Chrome Window Title監視

Windows PowerShellを使って、Google Chromeブラウザのタイトル名を取得する方法です。

下記は、1行で書くコード例です。

Get-Process -Name "chrome"|where {$_.MainWindowTitle -ne "" } |Format-Table -Property MainWindowTitle

Get-Processを使ってMainWindowTitleを取り出しています。

3分間whileループして、 Chromeブラウザのタイトル名に変化があれば表示する例です。

$endTime = (Get-Date).AddMinutes(3) #3分後に処理を終了する
$ima = Get-Date                     #今の時間
$titleStr = ""
while ($endTime -gt $ima){          #1分間だけループ
    $processList = Get-Process -Name "chrome" #chromeプロセスを取得
    if ($processList){
        foreach($p in $processList){
            if ($p.MainWindowTitle -ne "") {            #Windowタイトル名があるものだけ採用
                if ($titleStr -ne $p.MainWindowTitle){  #Windowタイトルに変化があった場合
                    Write-Host $p.MainWindowTitle       #タイトル名を表示する
                    $titleStr = $p.MainWindowTitle
                }            
            }    
        }   
    }
    Start-Sleep -Seconds 1
    $ima = Get-Date 
}

アクティブなウィンドウのタイトル名を取得

Win32APIGetForegroundWindow()を使えば アクティブウィンドウのハンドルが取得できます。

そのウィンドウハンドルを使って、Get-Processで取得したハンドルと比較しアクティブなウィンドウと判断するコード例です。

$code = @'
    [DllImport("user32.dll")]
     public static extern IntPtr GetForegroundWindow();
'@
Add-Type $code -Name user32 -Namespace Win32API         #user32.dllのGetForegroundWindow()を定義
$endTime = (Get-Date).AddMinutes(1)                     #1分後に処理を終了する
$ima = Get-Date                                         #今の時間
$titleStr = ""
while ($endTime -gt $ima){                              #1分間だけループ
    $hwnd = [Win32API.user32]::GetForegroundWindow()    #アクティブなウィンドウのウィンドウハンドルを取得
    $processList = Get-Process #-Name "chrome" 
    foreach($p in $processList){                        
        if ($hwnd -eq $p.MainWindowHandle){             #アクティブウィンドウと同じハンドルがあるかどうか
            if ($p.MainWindowTitle -ne "") {            #Windowタイトル名があるものだけ採用
                if ($titleStr -ne $p.MainWindowTitle){  #Windowタイトルに変化があった場合
                    Write-Host $p.MainWindowTitle       #タイトル名を表示する
                    $titleStr = $p.MainWindowTitle
                }            
            }    
        }
    }   
    Start-Sleep -Seconds 1
    $ima = Get-Date 
}

2022 MJELD TECHNOLOGIES. ALL RIGHTS RESERVED