qshinoの日記

Powershell関係と徒然なこと

powershell

ComObject廃棄

ComObject廃棄 変数廃棄 Remove-Variable aaa 例 $x = New-Object -com Excel.Application $x.Visible = $True Start-Sleep 5 $x.Quit() [System.Runtime.Interopservices.Marshal]::ReleaseComObject($x) Remove-Variable x 参考 https://technet.microsoft…

Job Event for powershell

Powershell jobの終了通知 Register-ObjectEvent で終了通知可能。 Register-ObjectEvent $job -EventName StateChanged -SourceIdentifier ハンドラ名 -Action { アクション } 取扱物件は ターゲットジョブ ハンドラ ハンドラジョブ ハンドラを登録するとハ…

HostName, IPアドレス by powershell

ホスト名、IPアドレス取得 ホスト名 [Net.Dns]::GetHostName() $Env:COMPUTERNAME hostname (Get-CimInstance -Class Win32_ComputerSystem).Name IPアドレス Get-NetIPAddress [Net.Dns]::GetHostAddresses(‘’).IPAddressToString [Net.Dns]::GetHostAddres…

Powershell 改行

Powershell で改行なら、 $nl = [Environment]::NewLine 最近はOpenSourceになって改行コードが異なる環境でも動く様なので、移植性を考えて。

書式出力 by powershell

書式付き出力 -f 演算子 書式文字列 -f 引数 例) “Hi, {0}! I give you {1:d2} Yen. rn” -f “Taro”, 20 書式文字一覧 c 通貨 d 10進数 精度は最小桁数 e 浮動小数点数 n.nen精度=小数部桁数 f 浮動小数点数 n.nnn 精度=小数点以下 g 浮動小数点数 ne±n 精度=…

日付、連番をファイル名に by powershell

日付をファイル名に $now = Get-Date -Format "yyyy-MMdd-HHmmss" Write-Output "poi" | Out-File "memo-$now.txt" 連番をファイル名に 日付を打つのが面倒なので、連番をファイル名にする。先のが2行に対して2行多い4行。 $index = "index.txt" (Get-Date -…

des暗号化その2 by powershell

DES暗号化その2 by powershell 使い方から $in="password" $key="keyword" $des=get-des($in,$key) $undes=get-undes($des,$key) $in $des $undes 暗号 function get-des($in, $key) { $des = New-Object System.Security.Cryptography.DESCryptoServiceProv…

powershell module

Module Manifest ファイル名が .psd1 作成方法は3種類 人手作成 New-ModuleManifest コマンド テンプレートを写す 人手作成 こんな感じ '@{ModuleVersion="1.0"}' > myModuleName.psd1 New-ModuleManifestコマンド こんな感じ New-ModuleManifest myModuleNa…

IISアクセス権限 by Powershell

Powershellによるアクセス権限設定 Add-WebConfiguration "/system.ftpServer/security/authorization" -value @{accessType="Allow";users="?";permissions=3} -PSPath IIS:\ -location FTPFolder permissions=3 が重要で、"Read,Write"ではダメらしい。 pe…

Firewall 再び

Powershell でファイアーウォール設定 取得 TBD 設定 FTP port 21 設定。 - Data portの許可に関しては別途。 if (-not(Get-NetFirewallRule | where Name -match "ftp")) { New-NetFirewallRule ` -Name "FTP-test" ` -DisplayName "FTP-test" ` -Descripti…

ftp by webclient by powershell

ftp up/download local.txtをftpサーバーに送信&受信 $user = 'me' $pw = 'pass' $url = 'ftp://host.jp/' $wc = New-Object System.Net.WebClient $wc.Credentials = New-Object System.Net.NetworkCredential($user,$pw) $wc.BaseAddress = $url $wc.Uploa…

Powershell カスタムオブジェクト

PowerShellカスタムオブジェクト パイプや戻り値で使われているカスタムオブジェクトをコードで意識的に作成する方法。 作成方法 Hashから変換 $obj1 = [PSCustomObject]@{ "Name" = "Tom"; "Age" = 29; } $obj1.Name 応用:hashから既存オブジェクト作成 Add…

-noexit powershell

実行後に終了しないオプション。 参照 http://www.atmarkit.co.jp/fwin2k/win2ktips/1024psshrtct/psshrtct.html

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>