2023年5月24日水曜日

◆2023/05/24 配列をCSVに出力

 Out-Fileで出力すれば良い話ではあるが、ダブルコーテーションを付ける場合はExport-CSVの方が楽かも

$ハードウエア一覧ヘッダー + "`r`n" + $ハードウエア一覧明細 | ConvertFrom-Csv | Export-Csv -Path .\ハードウェア一覧.csv -NoTypeInformation -Encoding Default

2022年8月19日金曜日

◆引数の数が可変の場合

変数で受け取った値を引数に使ってコマンドを呼び出す場合などに、省略された場合を考慮しないといけない。

  Send-MailMessage    -To $to                                       `

  -Cc $cc                                       `

  -From $from                  `

  -Subject $subject                                        `

  -SmtpServer $mailServer                                 `

  -Body $body                                 `

  -Attachments $attachment                    `

  -Encoding  ([System.Text.Encoding]::Default)     

こんなケースで$attachmentに値が入ってこないとエラーになる。

だからと言って引数の組み合わせの分だけコマンドを用意するのも・・・。

なんか簡単に解決できる方法がありそうにも思うが、見つからなかったのでとりあえず以下の様にしてみた。

  $param = @{

"To" = $to

"Cc" = $cc

"From" = $from

"Subject" = $subject

"SmtpServer" = $mailServer

"Body" = $body

"Attachments" = $attachment

"Encoding" = [System.Text.Encoding]::Default

  }

if($attachment -eq ""){$param.Remove("Attachments")}

Send-MailMessage @param

2022年4月15日金曜日

◆2022/04/15 消せないフォルダー(ファイル)対策

アクセス権が無くて管理者でも消せなくなるフォルダー(ファイル)がある場合。
(移動プロファイルのフォルダーとか普通になっても管理者がアクセスできなくなる)

所有権を取れれば問題ないのだがGUIからは所有権も取れない場合もある。

そんな時は以下のコマンドで、

takeown /f c:\users\username /r /d y 

2022年4月6日水曜日

◆2022/04/06 ADユーザーのCNを更新する

 $dn = (Get-ADUser -Identity "testUser").DistinguishedName
Rename-ADObject $dn -NewName "新氏名"

2022年2月14日月曜日

◆2022/02/14 連想配列と一緒にフォーマット演算子のプレースフォルダを使う

ADのサブネットをコマンド設定するときに「New-ADObject」を使うようなのだが、その中で以下の様なプロパティがある

-OtherAttributes @{location="Building A";siteObject="CN=HQ,CN=Sites,CN=Configuration,DC=FABRIKAM,DC=COM"}


サブネットがたくさんあるとループしながらフォーマット演算子で可変部分を入れ替えてとなるのだが、フォーマット演算子と連想配列を一緒に使うとエラーとなる。

{}の扱いがよろしくない。


連想配列側の括弧を2重にすると良いようだ。{{hoge}}のように。

2021年11月19日金曜日

◆Out-GridViewの表示途中に画面を閉じると

Out-GridViewにデータをパイプしている最中(時間が掛かっている時)にGridの画面を閉じてしまうと(時間が掛かるからやーめたってパターン)Powershellが落ちてしまうようです。

以下と見るとBUGのようなので余り対策は無さげですが、

https://community.idera.com/database-tools/powershell/powertips/b/tips/posts/dealing-with-out-gridview-bug

パイプするデータを予め変数に入れてから繋ぐか、メッセージを出してパイプが終わるまで待ってもらう感じですかね。

2021年8月25日水曜日

◆PowerShellスクリプトをExeに変換する

PowerGUIを使うとスクリプトを簡単にExeへと変換できるようだ。
(いつのバージョンから出来るようになったのか定かではないが、比較的最近だと思われる)

必ずしもPowerGUIの専売特許という訳では無さそうですが・・・。
Make-PS1ExeWrapper | Keith Hill's Blog

 

「ツール」メニューから「Compile Script...」を選んで
image

表示されたダイアログで保存先とオプションを指定するだけ。
image

同じ場所にConfigファイルも作られるようだが、とりあえず無くても動作はするみたい。

何かしら制限があるのか無いのか、使いこんだわけではないので判らないが、さしあたって実行ポリシーは回避できるようだ。

ちょっと便利かも。

Compileの下にServiceを作るメニューもある・・・。

----
最近ではPS2EXE-GUIあたりが良さそう(2021/08/25)