こんにちは、サイオステクノロジー技術部 武井です。私は、マイクロソフトが実施しているテクニカルカンファレンス「Ignite」に参加するためにフロリダのオーランドということろに来ております。Igniteが実施している期間中に、「ほぼ」リアルタイムレポートをお届けしたいと思います。今回は「PowerShell 7」について記載します。
PowerShell 7はPowerShellの新しいバージョンです。いくつか新しい発表がありましたが、その中から2つ気になったものをピックアップいたします。
1つ目はSecrets Managementです。
この機能を使うと、Office365に接続するのに毎回以下のようにめんどくさいことしたのが、
$secure = ConvertTo-SecureString "password" -AsPlainText -Force $LiveCred = New-Object System.Management.Automation.PSCredential "admin@example.onmicrosoft.com",$password Connect-MsolService -Credential $LiveCred
Get-SecretとするだけでOKのようです。具体的に細かい手法については述べられていなかったのですが、PowerShellによるパスワード管理が簡単になることが間違いないようです。
2つ目は、Foreach-Objectの並列処理です。
これはForeach-Objectでループで処理をするときに、そのループを並列で実行するというものです。実際のコードは以下のとおりです(ちょっと見にくいのですが、、、)。
上記のコードを詳細に解説したいと思います。
Measure-Command {1..10 | Foreach-Object {Start-Sleep2} -Throttlelimit 10}
これは、2秒待機する(Start-Sleetp 2)の処理を同時並列実行数最大10で実施したものの処理時間を測る(Measure-Command)というものです。実行時間はデモでは約2秒程度でした。結果から並列実行出来ていることは明らかです。
これ、すごい役に立つと思います。例えばOffice365のユーザーをCSVで大量に追加するというPowerShellの場合、今まではForeachでシリアルに実施するのが一般的でしたが、この新機能を使えば並列実行できるので、Office365への大量ユーザー追加がすぐ終わりそうです。
ただ、Office365やExchangeもそうですが、同時に実行できるPowerShellには上限があります。その上限を超えないようにThrottlelimitを適切に調整することが大事です。
現場からは以上でした。