読者です 読者をやめる 読者になる 読者になる

qshinoの日記

Powershell関係と徒然なこと

ftp client by powershell

ftp client Powershellのftp client PSFTP Set-FTPConnectionで設定登録 Get-FTPConnectionで接続 Get-FTPItem で読み込み Add-FTPItem で書き込み Get-FTPChildItemでls New-FTPItemでmkdir セッションを閉じる方法は? Code Import-Module PSFTP Set-FTPCo…

Powershell イベント処理

PowerShellイベント処理/WPF PowerShellでのWPFイベントハンドラの登録は、コントロールの持つadd_xxxを使う。 $button.add_Click({Write-Host "poi"}) 引数 $this イベントソース $_. EventArgs 但し、最初のイベントソースは、EventArgs のSourceプロパテ…

PSSharper xaml editor

PSSharper Powershell の構文チェック。 1. PS read-only予約語への代入 2. 未定義変数の参照 3. 未参照変数 xaml editor previewができる模様。 参考 http://www.powertheshell.com/pssharper/

sha1 ハッシュ

$enc = [system.Text.Encoding]::UTF8 $string1 = "This is a string to hash" $data1 = $enc.GetBytes($string1) # Create a New SHA1 Crypto Provider $sha = New-Object System.Security.Cryptography.SHA1CryptoServiceProvider # Now hash and display …

des暗号 by powershell

des暗号化 by powershell Powershell のSecureStringはそのマシンのそのユーザーでしか復号できないので可搬性がない。 そこで、可搬性のある暗号化 # 変数定義 $inPath = "F:\Desktop\myTest.txt" $encPath = "F:\Desktop\Enc.txt" $decPath = "F:\Desktop\…

ウインドウ機能インストール by Powershell

Install-WindowsFeature import-module servermanager Get-WindowsFeature で確認し、 Install-WindowsFeature -Name xx -IncludeManagementTools -Restart -LogPath でインストール Add-WondowsFeatureは、Install-xx のAlias 参考 Technet https://technet…

フォルダパーミッション

フォルダパーミッション設定 by powershell 基本操作は、acl取得、変更、acl設定。 実施例) 継承無効化 $folder = 'c:\tmp\myfolder' $acl = Get-Acl $folder $acl.SetAccessRuleProtection($true,$true) $acl | Set-Acl $folder 継承付きでフルコントロール…

IIS-FTP userisolation by Powershell

PowerShellによるIIS FTPサイト構築 前提 ユーザー分離はvdir非共有 $iso=3 Read/Write可 Win2012R2以降 情報取得 ls IIS:\ ls IIS:Sites\ ls IIS:\Sites\xx $site = Get-Item IIS:\Sites\xx $site $ftp = Get-WebConfiguration -pspath IIS:\Sites\xx $ftp …

Powershell デバッグ

Powershell Debug デバック機能一覧 write-host write-debug write-verbose write-progress Set-PSDebug Break point $host.EnterNestedPrompt() Write-Warning/Error write-host コンソール出力。 write-verbose $VerbosePreferenceにより挙動を変更可能。…

Powershell XML

XML 参考 https://msdn.microsoft.com/ja-jp/library/system.xml.xmlnodelist(v=vs.110).aspx https://msdn.microsoft.com/ja-jp/library/system.xml.xmlelement(v=vs.110).aspx#メソッド http://odashinsuke.hatenablog.com/entry/20090708/1247060185

Powershell WMI

WMI 参考 http://rtaki.sakura.ne.jp/infra/?p=1632

DNS

DNSについて 未だCache ServerとForwarding Serverの違いが分かっていない。 何方もAuthority がない? 参考 https://www.digitalocean.com/community/tutorials/an-introduction-to-dns-terminology-components-and-concepts DNS構築 https://www.designet.…

IIS FTPサイト構築 by Powershell

IIS-FTPサイト自動構築 Windows 2012R2 のPowerShell用IIS WebAdministration Moduleを使って自動構築を試みる。 これらをMSではPowerShell IISスナップインと呼んでいる。ここでは以後スナップインと呼ぶ。 スナップインは3つのカテゴリに分かれる。 プロバ…

Powershell FireWall設定

FireWall 参考 https://creativeweb.jp/tips/firewall-ftp/ http://ameblo.jp/memomemoag0u3/entry-11741667885.html https://technet.microsoft.com/ja-jp/library/dd939055.aspx

Powershell ダイナミックパラメータ

ダイナミックパラメータ Get-Command の動的な挙動 -ArgumentList による変化 参考 http://winscript.jp/powershell/?s=-argumentList

Powershell os version 取得

OS Version取得方法 [System.Environment]::OSVersion 或いは、 Get-WindowsEdition -Online -Verbose 正しく受け取れないケース http://msdn.microsoft.com/en-us/library/windows/desktop/dn302074.aspx

環境変数

環境変数 PowerShell で環境変数操作 読み取り $env:namae 設定/session $env:session = “123” 設定/User Environmentクラスを使う [Environment]:: SetEnvironmentVariable("variable", "value", [EnvironmentVariableTarget]::User) 参考/set http://bakem…

Powershell registry

PowerShellでレジストリ PowerShellでレジストリ操作する方法 読み取り 作成 変更 削除 読み取り Get-ItemProperty -Path HKLM:\Software\Microsoft\Windows\CurrentVersion -Name DevicePath 作成 New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows…

Powershell Unit test

ユニットテストツール Pesterの紹介 PeaterはPowerShell向けのUnit Test Tool 使い方 PS> New-Fixture -Name HelloWorld これで、HelloWorld.ps1と、HelloWorld.Tests.ps1が作成される。 実行は PS> invoke-pester Executing all tests in 'C:\usr\tmp' Desc…

ページ切替

Powershell + wpfのページ切替 NavigationWindow http://sourcechord.hatenablog.com/entry/20130831/1377942291 参考 uwp http://coelacanth.jp.net/uwp_006/ NavigationService http://graphics.hatenablog.com/entry/2015/02/08/154920

Powershell Module Manifest

Powershell Module Manifest 作成方法は3種類 1. versionのみ 2. New-ModuleManifest 3. テンプレートを写す Versionのみ '@{ModuleVersion="1.0"}' > myModuleName.psd1 New-ModuleManifest New-ModuleManifest myModuleName.psd1 -ModuleVersion "2.0" -Au…

Windows初期設定関連スクリプト

目次 タイムゾーン Windowsファイアーウォール Firewall プロキシ設定 windoqs update IE ESC無効化 IP固定化 DNS設定/DNSサーバーIPアドレス追加 ネットワークのifIndex, alias, IPアドレス取得 ファイアーウォール設定について PS> Get-NetFirewallProfile…

Set-ExecutionPolicy

みんなが最初に引っかかる所 Set-ExecutionPolicy Restricted - 実行できるスクリプトはありません。Windows PowerShell は対話型モードでのみ使用できます。 AllSigned - 信頼できる発行元が署名したスクリプトのみを実行できます。 RemoteSigned - ダウン…

Powershell zabbix

Powershell で書くzabbix zabbix_agentd.confに書くらしい。 Userparameter=vm.state,powershell.exe -NoProfile -ExecutionPolicy Bypass -file “C:\test.ps1” スクリプトの中身は — test.ps1 $Health = "poi" foreach($State in $Health){ if($state.Healt…

windows dnsサーバー

DNSサーバーをpowershellから設定したいので、まずは関連情報を収集。 DnsShellを利用 DnsShell Module install ServerManager Module Install Zone登録 ホスト=Aレコード登録 逆引きPTRレコード登録 DnsShell Module Install Import-Module DnsShell Get-Co…

書式指定演算子

Powershell 書式指定演算子 $string -F 値,値,… 文字列内の{<数字>}を値に置換する 例 “http://{0}/{1}/” -F “a”,“b” -> http://a/b/ 数字 “金額: {0:##.###}” -F 12.2, 13.56789 MSSN https://msdn.microsoft.com/ja-jp/library/dwhawy9k.aspx 標準日時書式…

Powershellユーザーアカウント

ワークグループ環境におけるユーザーアカウント制御 ADSIでゴニョゴニョすればできる。 ADSIって何? ADSIはActiveDirectory Service Interface 所謂Directory ServiceのAPI LDAP, IIS, WinNT, NDSが使える。 PS 3.0以上用 Get-CimInstance使用 http://tech.…

ユーザーアカウント

windowsユーザーアカウントの追加変更パスワード変更 追加 net user xx pass /add パスワード変更 net user xx pass ユーザー削除 net user xx /delete ランダムパスワード net user xx /random ランダムなパスワードを設定して表示する。 アカウント無効化 …

Powershell IPアドレス変更

基本手順 1. Net Interface取得 1. 削除 2. 設定 コマンド 1. IF情報取得 Get-NetIPInterface ifIndexとalias一覧取得 2. 削除 Remove-NetIPAddress -InterfaceIndex <index> -IPAddress "<Host-IP>" -DefaultGateway "<GW-IP>" Set-DnsClientServerAddress -InterfaceIndex <index> -Reset</index></gw-ip></host-ip></index>…

プログレスバー

Powershellのプログレスバー Write-progress により表示される。 $all = ls "¥" $cnt = 0 foreach ($a in $all){ Write-Progress -activity "長い処理" -Status "頑張ってます" -PercentComplete ($cnt++ * 100 /$all.length) -CurrentOperation ($a) } 下記…

フルパス化

Powershellで相対パスを絶対パス化 $full = [System.IO.Path]::GetFullPath( <path>) http://dobon.net/vb/dotnet/file/getabsolutepath.html</path>

PS:web認証

Powershell Web認証 Powershell的な方法 $req = [system.Net.WebRequest]::Create($url)# method 1 $req.UseDefaultCredentials = $true# method 2 $req.Credentials = new NetworkCredential($username, $pwd, $domain); try{ $res = $req.GetResponse()}ca…

関数戻り値

Powershell functionの戻り値はとっても面倒。 まずは下記を読んでみて下さい。 http://winscript.jp/powershell/253 特に、『実はPowerShell関数内で値が出力されると、returnキーワードがついてなくてもすべて呼び出し元に出力されるという仕様なのです。…

xml dot記法の戻り値

Powershell xml dot記法の戻り値 Dot記法とは、xx.poi の様な記述方法。 例) poi.xmlが <poi><qwe/></poi>で、 [xml]$doc = get-content poi.xml $poi = $doc.poi Powershellのdot記法の戻り値は 下記の通り。 1. 指定エレメントが空またはテキストのみの場合、[string] 2. テ…

filterとfunction

powershell のfilterとfunction Functionは良くある関数として、filterって何? 簡単に言うと、FunctionのProcessのみの簡易版関数。 Processって何? Powershellに於けるFunctionの構造を再度確認すると、下記の通り。但し、Begin/Process/Endの表記が無け…

null破棄

powershell null破棄 方法 1. [void] 2. > $null 3. $null = 4. | out-null 性能的には4. out-nullが2〜100倍遅い模様。 out-null 以外ならどれでも大丈夫? 下記参照 http://tech.guitarrapc.com/entry/2013/03/12/080349

未だリソース解放

リソース解放方法 new-object <class> のリソース解放。 class 構文で定義した場合、IDisposableを実装した上で、.dispose()を実行。 cmdletは実装している模様。 http://winscript.jp/powershell/309。 下記参照 http://winscript.jp/powershell/309</class>

Comオブジェクトの生成解放

生成方法例 $xls = New-Object -ComObject Excel.Application 解放方法例 [System.Rumtime.InteropServices.Marshal]::ReleaseComObject($xls) 下記参照 http://m0t0k1x2.tumblr.com/page/7

Powershell remove-typeなし

Powershellにはadd-typeはあるが、remove-typeがない。 そのため、一度ロードしたアセンブリの解放はできない。但し、appdomainは解放できる。 回避策は、appdomainを変えてロード。 例えば、 1. 子Powershellを起動 2. ISEでCTRL-Tでrunspaceを変更 3. Star…

ロード済みアセンブリ取得方法

Powershellでクオータが不足しいています、と表示され犯人探し中。 Powershellでは、一度ロードしたアセンブリの解放はコンソールが終了する時らしいので、重複ロードされている可能性があり、その調査用。 まずはアセンブリの重複ロードを疑う。そのため、…

型演算子 -is -isnot

powershell 型演算子 "123" -is [system.string] -> True @() -is [object[]] -> True @() -is [Array] -> ??? 下記参照 http://blog.livedoor.jp/akf0/archives/51323690.html

wpf grid

WPF Grid コントロールの使い方 Grid はWPFコンテナ 例) <Grid ShowGridLines="True"> <Grid.RowDefinitions> <RowDefinition /> <RowDefinition /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition /> </Grid.RowDefinitions> <Button Content="OK" Grid.Row="1" Grid.Column="2" /> </Grid> 各行列…

Powershell module

Powershellのモジュール作成方法 目次 1. モジュールファイル名 2. 保管フォルダ 3. 関数公開コマンド 4. ヘルプ 5. Manifest 6. モジュール引用方法 1. モジュールファイル名 *.psm1 例) poi.psm1 2. モジュール保管フォルダ 下記グローバル変数内のフォル…

暗号化/復号化関数

$cert: 証明書/暗号:公開鍵、復号:秘密鍵 $plain: 平文 encrypt_(): Base64暗文 $encb64: Base64暗文 decrypt_(): 平文 Function encrypt_by_cert( $cert, $plain ){ Add-type –AssemblyName System.Security $bytes = [Text.Encoding]::UTF8.GetBytes($plai…

cmdletbinding

powershell の[cmdletbinding()] これを記述する事で、write-verboseやwrite-debugが使用できる。 --- パラーメータ記述 1. [parameter()] デコレーター 2. [switch]指定 1. [parameter()]デコレーター Mandatory = $true or $false Position = <number> 2. [switch]</number>…

powershell xls 2

Check out my PowerShell Excel Module on Github. You can also grab it from the PowerShell Gallery. $stores = Import-Excel C:\Temp\store.xlsx $stores[2].Name$stores[2].StoreNumber$stores[2].EmailAddress '''All stores''----------'$stores

powershell xls 1

ExcelファイルをCOMオブジェクトで読む。 $xls = "a.xls" #new $eo = New-Object -ComObject Excel.Application $book = @() # open$eo.Workbooks.Open($xls) | %{ # sheets $sheet = @() $_.Worksheets | %{ # rows $row = @() $_.UsedRange.Rows | %{ # co…

powershell path

powershellにおける実行ファイル検索パス $env:path パスを追加 $env:parh += ";c:¥usr¥bin¥" 恒久的に追加 [Environment]::SetEnvironmentVariable('PATH', $env:path, 'Machine') 最後のMachineは省略可。 なお、powershell script もパスから検索可能。ま…

powershell xml 結合

powershell でxmlを結合。 $root ルートノード名 $out 出力ファイル名 $xmls 入力xmlファイル名の配列 function merge_root ($root, $out, $xmls) { $m = "<" + $root + ">" foreach ($f in $xmls){ [xml]$x = get-content $f $top = $x.firstchild $m += $t…

powershell xml 要素取り出し

powershellでxml要素取り出し 基本は doc に対して -> firstchild -> childnodes -> foreach -> $_.name と$_.innertext 例) mono.xml の内容 <top> <iro>ao</iro> <omosa>10</omosa> </top> powershell $doc = [xml](get-content "mono.xml") $root = $doc.firstchild $children = $root.ChildNod…