Powershell 仕事

Import-CSV を使用して、ブール値をCSVから取り込む

2017/04/02

Office365やActive Directoryの管理をしていると
Powershellを使用し、Import-CSVコマンドで、CSVから値を取り込ませたいことは多々あります。

例)
Import-CSV C:\hoge.csv | ForEach-Object {Set-mailbox -Identity $_.あいでんてぃてぃ -DisplayName $_.表示名}
hoge.csvの中身

あいでんてぃてぃ 表示名
1 tanaka@hogehoge.co.jp 田中
2 suzuki@hogehoge.co.jp 鈴木

この例では、CSVの各行に対し、Identity属性が「あいでんてぃてぃ」であるメールボックスの
DisplayName属性を「表示名」に変更しています。

このようにDisplayname等にテキストデータを設定するのは比較的簡単ですが
属性によってはBool値しか代入できないものがあります。

例)
Set-MsolUser –UserPrincipalName hogechan –PasswordNeverExpires $true

これはhogechanのパスワードを無期限化するコマンドですが
例えば一遍に複数人のパスワード無期限化をし、さらに人によって設定を分けたりしたい場合には
やはりCSVから取り込みたくなります。

例)
Import-CSV C:\hoge2.csv | ForEach-Object {Set-MsolUser –UserPrincipalName $_.UPN –PasswordNeverExpires $_.パスワード無期限}
hoge2.csvの中身

UPN パスワード無期限
1 tanaka@hogehoge.co.jp $true
2 suzuki@hogehoge.co.jp $false

この例は、失敗してしまいます。
変数として普通に代入するとテキストデータとして扱われるみたいです。
しばらくググったりなんだりしてようやく答えにいきつきました。

Import-CSV C:\hoge2.csv | ForEach-Object {
$PNE=[bool]$_.パスワード無期限
Set-MsolUser –UserPrincipalName $_.UPN –PasswordNeverExpires $PNE
}

こんな感じです。
[bool]と頭につけて、一回他の変数に代入すると
とブール値として代入することができるみたいです。

おしまい。

ブログ村

ブログ村PV

PVアクセスランキング にほんブログ村

-Powershell, 仕事