PowerShell
PowerShellで配列を生成した時に格納先の変数を複数設定できるんですね。例えば、こんな感じで$weekから$daysの配列を作ると、 $daysbは全ての曜日が格納された配列になります。 $week = "Sun,Mon,Tue,Wed,Thu,Fri,Sat" $days = $week -split "," 曜日の要…
操作しているOSに入っているPowerShellとは別バージョンのPowerShellを実行したい場合の手順です。サーバで動くPowerShellをクライアントPCで開発することは良くあると思います。その際にサーバー側とクライアント側のPowerShellのバージョンが同じならば良…
題名の通りなのですが、どのような場面で利用するかというのと一緒に書きます。Invoke-CommandでリモートセッションにScriptBlock型の変数をArgumentListとして渡そうとすると、途中でObjectに変換されてしまいます。 事象 まず、通常通りScriptBlockの変数…
PowerShellのインデントが崩れてしまうことがあります。自動インデントをできるツールを探していたのですが、基になるスクリプト見つけたので、結局それを元に自分で関数作りました。(本当は標準のISEとかで実装されていると嬉しいのですが。。。)作ってみ…
PowerShellでDelegate使いたいと思って動かしていたのですが、結局ScriptBlockが一番近いのかなと思いメモです。 #ScriptBlockを変数に割り当てます PS>$d = {param($p) return $p * 2} PS>$d.gettype() IsPublic IsSerial Name BaseType -------- -------- …
まず、.Net的にStringのIsNullOrEmptyを使う方法があります。 PS > $foo = "bar" PS > [String]::IsNullOrEmpty($foo) False PowerShellでは変数をboolにキャストするだけでも同じことができます。 $stringNull = $null $stringEmpty = "" $stringNotEmpty =…
PowerShellでIdentity関連情報を取得する方法です。 ユーザ情報を取得する まず、ユーザ情報のオブジェクトを取得します。 [System.Security.Principal.WindowsIdentity]::GetCurrent() WindowsIdentityオブジェクトが返ってきます。 WindowsIdentity クラス…
時々裏でPowerShellが実行されている場合、64bitだと思ったら32bitで動いていたということがあるので。判別には以下のコマンドを使います。 [System.Environment]::Is64BitProcess 64bitの場合 powershell.exeの場所 C:\Windows\System32\WindowsPowerShell\…
インストール済みのWindows Severの役割と機能はGet-WindowsFeatureで簡単に一覧できます。いくつかバリエーションを書いてみます。 以下のコマンドではInstalled(インストール済み)の役割と機能を一覧しています。 PS> Get-WindowsFeature | ?{$_.InstallS…
Azure関連のブログなどを読んでいると、結構頻繁にAzure管理用のPowerShellモジュールである、Azure PowerShell Toolsの新バージョンがリリースされましたという情報が見つかります。 Azure PowerShell Toolsの最新版をダウンロードするには、Azureの公式サ…
PowerShellのロガーについて、Out-Fileとかを使った自作ロガー作っていたりしたのですが、他に方法無いか探してみました。そこでPowerShellからNlog使えるという以下の記事を見つけて、log4netも試してみました。 PowerShellとNLog | 84zume Works 必要なフ…
PowerShellではディレクトリだけでなく、証明書ストアの中をファイルディレクトリのように移動できます。 #現在のユーザの証明書ストアに移動 PS C:\> cd Cert:\CurrentUser #プロンプトの先頭がCertになります PS Cert:\CurrentUser> #個人(My)に移動します…
PowerShellで自コンピュータのFQDNを取得する方法を色々と。 単純に環境変数を組み合わせる これが一番シンプルですが全部大文字になってしまいます。 "$env:COMPUTERNAME.$env:USERDNSDOMAIN" WMIを利用する $info = Get-WmiObject Win32_ComputerSystem "{…
こちらの記事でDSCでAzure上の仮想マシンの自動構築のやり方を書きました。しかし、DSCさえあれば100%何でもできると言う訳ではありません。DSCで何かできるのかはDSCのリソースというもので表現されています。デフォルトではこちらの12種類のリソースがDSC…
PowerShellでAzureを操作する時に、複数のサブスクリプションを管理している場合、 最初にどのサブスクリプションを操作するか指定する必要があります。その際に使うのがSelect-AzureSubscriptionコマンドです。まず、自分のアカウントに紐づいているサブス…
PowerShellのDSC(Desired State Configuration)はWindows Management Framework 4.0から導入されたMicrosoftのテクノロジで、ChefやPuppetのようなものですが、知らない人はこちらのページがわかりやすかったです。 PowerShell DSCで導入された新しい構文キ…
自分の場合は、PowerShellを大きなデータ処理などに使ったことが無いため、実は意識したことは少ないのですが、少しの書き方の違いでPowerShellのパフォーマンスは大きく変わるようです。内容はこちらの動画を参考にして書いています。 Windows PowerShell B…
PowerShellではキーボードのキー入力を以下の書き方で取得できるようです。 [Console]::ReadKey($true) これをPowerShellコンソールから実行してみると動きがわかりやすいです。 #Ctrl+C+Enterで抜けます while($true){[Console]::ReadKey($true)} 取得でき…
仮想マシンの作成には色々なパターンがあると思いますが、一つの例としてサンプルスクリプトを載せておきます。 サンプルで作る仮想マシン 今回作るマシンには以下のような設定を含んでいます。 PowerShellのリモート実行用のエンドポイントを解放 タイムゾ…
前にもこちらの記事でAzureのBLOBのコピースクリプトを載せましたが、 PowerShellでAzureストレージアカウント間のBLOBをコピーする - YOMON8.NET.Netのクラスを多用していて読みにくかったので、PowerShellのコマンドレットを利用する形で書き換えてみまし…
BLOBに置いたデータをPowerShellを使ってローカルにダウンロードしてくるスクリプトです。 Import-Module Azure #パラメータ設定 $StorageAccountName = "ストレージアカウント名" $AccountKey = "ストレージアカウントキー" $containerName = "コンテナ名" …
新しいサブスクリプションに引越したため、古いサブスクリプション側に残っていた仮想マシンやディスクなどを一括削除する必要がありました。 最初はAzure Portalから一つづつ削除していたのですが、このやり方だと凄い時間がかかります。そこでPowerShellで…
PowerShellでWindowsのプロセス数を取得する方法です。 Get-Processで取れば良いのですが、該当プロセスが0件の時にエラーになってしまうので、以下のように書いてみました。 #svchostプロセス数を取得 (Get-Process -ErrorAction 0 "svchost").Count #ファ…
PowerShellを使ってのWindows 形式の改行コード (CRLF) とUNIX形式の改行コード (LF) の相互変換の方法です。 Windows形式→UNIX形式 [string]::Join("`n",(Get-Content .\winText.txt)) | Set-Content .\unixText.txt UNIX形式→Windows形式 [string]::Join("…
テキストファイルから正規表現使って文字列抽出したい場合、 PowerShellからこんなコマンドで一発で抽出できます。 [regex]::Matches((Get-Content 対象のファイル),"正規表現文字列","任意オプション") | foreach{$_.Value} 例えばXMLからCDATAの値を抽出し…
XML形式の設定ファイルなんかも増えてきていますが、"="区切りの設定ファイルは今も良く見ると思います。 USERID = user01 PASSWORD = passw0rd HOSTNAME = myhost.local PowerShellでこのような設定ファイルを読み込みたい場合はImport-Csvのコマンドレッ…
PowerShellはリモートコンピュータ上でコマンドを実行できる機能があります。 PowerShell 2.0の新機能(2) ――リモート処理編 (1/4):CodeZine Azure上に仮想マシンを構築して、そこに自動化処理を組み込む場合などは、この機能を使えると便利です。 コマ…
Azureの日本リージョンでのサービスが開始したので、東アジアに置いてあったvhdファイルイメージを、東日本のストレージアカウントに移動しましたので、その対応方法書いてみます。異なるリージョンにあるVHDファイルを基に仮想マシンを追加しようとしたら以…
BLOBのスナップショットですが、AWSのManagement ConsoleのようにAzureのポータルからスナップショットの取得などの操作ができるのかと思ってたのですができないみたいです。(調べたりないのかも)そこで、MSDNを探したところ、C#のコードでやるように書かれ…
AzureのCDP(Cloud Design Pattern)がこちらでWORD形式で提供されていました。後でタブレット端末で見たかったのでPDF変換しようと思ったのですが、35ファイルもあったので、PDFに一括変換するためのスクリプト作りました。