Puppeteer で シングルページアプリケーション(SPA)などページ遷移により要素がリセットされない場合など強制的に消しておきたいときに使いました。
await page.evaluate(() => { elementDelete = document.querySelector('#id'); elementDelete.parentNode.removeChild(elementDelete); });
Puppeteer で シングルページアプリケーション(SPA)などページ遷移により要素がリセットされない場合など強制的に消しておきたいときに使いました。
await page.evaluate(() => { elementDelete = document.querySelector('#id'); elementDelete.parentNode.removeChild(elementDelete); });
別ドメインのサーバから、Powershellを使って指定のActiveDirectory、OUのユーザー一覧を取得するスクリプトです。
# 資格情報取得 $Credential = Get-Credential # オブジェクト作成 $Searcher = New-Object -TypeName System.DirectoryServices.DirectorySearcher # 検索対象のADオブジェクトを定義 $Searcher.Filter = "(ObjectClass=user)" # 検索対象のドメインを指定 $DomainDN = "LDAP://<AD SERVER NAME>.hogehoge.local/OU=<OUNAME>,DC=hogehoge,DC=local" # 「DirectoryEntry」オブジェクトを作成し、ドメイン、資格情報を追加 $Domain = New-Object ` -TypeName System.DirectoryServices.DirectoryEntry ` -ArgumentList $DomainDN, $($Credential.UserName), $($Credential.GetNetworkCredential().password) # 検索情報を追加 $Searcher.SearchRoot = $Domain # 配列定義 $arg = @() # 必要なプロパティのみ取得(任意に指定してください) # ここでは「UserAccountControl」は16進数に変換している(末尾が 0x0002 はアカウントが無効) # https://support.microsoft.com/ja-jp/help/305144/how-to-use-useraccountcontrol-to-manipulate-user-account-properties foreach($list in $Searcher.FindAll()){ $arg += $list.properties["name"][0] + "," + $list.properties["displayname"][0] + "," + $list.properties["useraccountcontrol"][0].Tostring("x") } # CSVファイルに書き出し $arg > AdUserList.csv
Xiaomi Mi Mix 2s で Rakuten UN-LIMIT を使ってみた。
楽天回線エリアとパートナー回線エリアの境目あたりだったためか、通話が不安定だった。(データ通信はできていたので、auの「CDMA 1X WIN」に対応していないせいかな)
この機種で利用する場合、パートナー回線エリアでの利用も想定し、VoLTEを有効にしておく必要がありそう。
電話アプリから以下の番号を発信することで、[設定]-[SIMカードとモバイルネットワーク]のメニューに「VoLTE」のメニューが表示されるようになります。
*#*#86583#*#*
Microsoft RemoteAppのワークスペース名はコマンド以外で変更できないため、以下の方法で設定します。
Powershellを管理者権限で起動し、以下のコマンドを実行
Import-Module RemoteDesktop Set-RDWorkspace -Name "<ワークスペース名>" -ConnectionBroker <HOSTNAME>
https://docs.microsoft.com/en-us/windows-server/remote/remote-desktop-services/rds-work-resources
MySQL 5.6から、AWS Aurora MySQL へ移行後にクエリのパフォーマンスが低下したため原因を調査
色々メモリ関連のオプションなどを調整したが、解決できず以下の文言を発見
通常、デフォルト値が推奨されます。オプティマイザによるクエリプランが不適切な場合、または推定が誤っている場合は、これらのフラグを調整する必要があるかもしれません。たとえば、
https://aws.amazon.com/jp/blogs/news/best-practices-for-configuring-parameters-for-amazon-rds-for-mysql-part-1-parameters-related-to-performance/optimizer_switch
フラグのcondition_fanout_filter
およびderived_merge
を無効化することで、5.6 から 5.7 へのアップグレード後の、クエリにおけるパフォーマンス低下を緩和できます。フラグはパフォーマンスに大きな影響を与える可能性があるため、これらのフラグを有効化する前にワークロードを入念にテストしてください。
オプティマイザスイッチのパラーメーターを調整して解決
optimizer_switch condition_fanout_filter=off,derived_merge=off
AWS EC2 Windowsで壁紙にインスタンスの情報が表示されなくなった場合の対処について記載します。
1.管理者としてPowerShellを起動し、以下のコマンドを実行
Import-Module "C:\ProgramData\Amazon\EC2-Windows\Launch\Module\Ec2Launch.psd1" Get-ChildItem $env:LOCALAPPDATA -filter ec2Wallpaper*.jpg | Remove-Item Clear-Wallpaper Set-Wallpaper New-WallpaperSetup
2.以下のファイルを作成(コマンド実行時に削除されるので、ベースの壁紙を置いておく)
C:\Users\Administrator\AppData\LocalEc2Wallpaper.jpg
WindowsのイベントログをCSVでエクスポートする要件が出たので、PowerShellのGet-EventLogでエクスポートを考えていたのですが、Message部分に改行が含まれて、1イベントで1行になってくれないため、後々集計しづらくなってしまう。
それを避けるため、「PsTools」の「PsLogList.exe」を使って実現しました。
PsToolsをダウンロードし、解答すると以下のexeファイルが展開されるので、以下のように実行する。
PsLogList.exe system -s >> EventLog_System.csv
・オプション
-s:このスイッチを指定すると、PsLogList では、イベント ログのレコードを 1 行に 1 つずつ出力します (区切り記号にはコンマを使用します)。この形式は、文字列を検索する場合 (例、psloglist /i <文字列>、findstr /i <文字列>) や出力を Excel ブックにインポートする場合に便利です。
Windows 10 に64bit版のMySQL ODBCドライバのインストールをすると、以下のエラーが表示される
エラーメッセージ
Error 1918,Error Instaling ODBC driver MySQL ODBC 8.0 ANSI Driver, ODBC error 13: システムエラーコード126: 指定されたモジュールが見つかりません。…\myodbc8S.dll) のために、MySQL ODBC 8.0 ANSI Driver ODBC ドライバーのセットアッププログラムを読み…
https://dev.mysql.com/downloads/connector/odbc/
以下のサイトから最新版(現時点ではVS2019)の「Visual Studio 2019 の Microsoft Visual C++ 再頒布可能パッケージ」をダウンロードしインストールします。
https://visualstudio.microsoft.com/ja/downloads/
Windows 環境においてAnsibleのようにリモートから対象サーバのコマンドやスクリプトを実行するためにWindows Remote Management(以下WinRM) を利用して実行する方法を記載します。
※ここではWindowsファイアウォールなどのネットワーク設定は割愛します。
Powershell(管理者として実行)から以下のコマンドを実行しサービスを有効化します。
詳細なオプションはこちらを参照
Enable-PSRemoting -Force
Powershell(管理者として実行)から以下のコマンドを実行し接続先ホストを許可します。ここでは *(アスタリスク) を指定しています。(どこでも接続可能)
Set-Item WSMan:\localhost\Client\TrustedHosts * -Force
「Enter-PSSession」コマンドで接続できることを確認します。
資格情報を入力するダイアログが表示されますので、接続先のユーザー/パスワードを入力します。
$credential = Get-Credential
Enter-PSSession -ComputerName <HOSTNAME> -Credential $cred
スクリプトでバックグラウンドで実行する場合は、資格情報をファイルに暗号化した状態で保管しておくと良いかと。
Powershellでのパスワードをセキュア ストリングファイルとして保存する方法はこちらを参照
#パスワードファイルを読み込み $pass = Get-Content <FILENAME> | ConvertTo-SecureString #復号化 $credential = New-Object System.Management.Automation.PSCredential "<USERNAME>",$pass #リモートホストの資格情報とコマンドを指定 Invoke-Command <HOSTNAME> -credential $credential -ScriptBlock { C:\tools\run.ps1 }
Administratorであればデフォルトのまま接続可能ですが、AdministratorやAdministratorsの権限を付与したくない場合、以下のグループへ参加することにより必要最小限の権限で接続できます。
またネットワークで接続する場合はポートは以下のとおりです。
HTTP: 5985/tcp
HTTPS:5986/tcp
https://support.microsoft.com/ja-jp/help/2019527/how-to-configure-winrm-for-https
http://www.vwnet.jp/Windows/PowerShell/2018020501/ConnectRemotePS6.htm
https://yomon.hatenablog.com/entry/2015/03/30/133450
WSUS4.0から、PowerShellで操作できることが格段に増えたので、手動で運用しているようなものをバッチ回して自動的に処理させる。
1. Itanium系のパッチ拒否
2. 数日経過してから承認する(WSUSの基本機能だと適用期限しか設定できないため)
3. 先行適用グループと全体適用グループで承認間隔を分ける
4. クリーンナップ
先行適用グループと全体適用グループ用に承認スケジュールを分けると、「未承認」、「承認済み」で検索条件を分ける必要がある。
未承認と承認済みは、以下のパラメータとなる。
IsApproved = False
IsDeclined = False
IsApproved = True
IsDeclined = False
# # WSUS4.0サーバ用 自動承認スクリプト # # パラメータ設定 $day = get-date -format "yyyyMMdd" $log_dir = "C:\Tools\wsus_maintenance\log" # WSUSのポートをデフォルトから80へ変更している場合(WSUSサーバ上で実行) $wsus = Get-WsusServer -name localhost -PortNumber 80 # 日付設定 $5daysago = Get-Date (Get-Date).AddDays(-5) -format "yyyy/MM/dd 0:00:00" $6daysago = Get-Date (Get-Date).AddDays(-6) -format "yyyy/MM/dd 0:00:00" $7daysago = Get-Date (Get-Date).AddDays(-7) -format "yyyy/MM/dd 0:00:00" $8daysago = Get-Date (Get-Date).AddDays(-8) -format "yyyy/MM/dd 0:00:00" # Itaniumの拒否: Itaniumのクライアントがいない場合はこれらは不必要 $ia64 = $wsus.GetUpdates() | Where-Object {$_.title.indexof("Itanium") -gt 1 -and $_.title.indexof("x64") -eq -1 -and $_.ArrivalDate -gt [datetime]::Now.AddDays(-7)} foreach($patch in $ia64) { $wsus | Get-WsusUpdate -UpdateId $patch.id.updateid | Deny-WsusUpdate } # # 自動承認(先行適用グループ用) # 6日前にダウンロードされたものを承認 # $ahead = $wsus.GetUpdates() | Where-Object {$_.ArrivalDate -gt $6daysago -and $_.ArrivalDate -lt $5daysago -and $_.IsApproved -eq $False -and $_.IsDeclined -eq $False} foreach($patch in $ahead) { $wsus | Get-WsusUpdate -UpdateId $patch.id.updateid | Approve-WsusUpdate -TargetGroupName "先行適用G" -Action Install } # # 自動承認(その他すべて) # 8日前にダウンロードされたものを承認 # $allgroup = $wsus.GetUpdates() | Where-Object {$_.ArrivalDate -gt $8daysago -and $_.ArrivalDate -lt $7daysago -and $_.IsApproved -eq $True -and $_.IsDeclined -eq $False} foreach($patch in $allgroup) { $wsus | Get-WsusUpdate -UpdateId $patch.id.updateid | Approve-WsusUpdate -TargetGroupName "すべてのコンピューター" -Action Install } # クリーンアップ:置き換えられたパッチや拒否済みのものを削除する $wsus | Invoke-WsusServerCleanup -CleanupObsoleteUpdates -CleanupUnneededContentFiles -CompressUpdates -DeclineExpiredUpdates > C:\Tools\wsus_maintenance\log\$day.log # ログローテーション forfiles /P $log_dir /M * /C "cmd /c if @isdir==FALSE del /s @path" /D -30
http://kkamegawa.hatenablog.jp/embed/20121209/p1kkamegawa.hatenablog.jp