質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Q&A

解決済

2回答

1411閲覧

【初心者】検索対象データ一内に該当項目が存在しない場合、一致しない対象のグループ名を表示させたい

yuzzziii

総合スコア1

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

0グッド

0クリップ

投稿2023/04/11 02:16

編集2023/04/11 02:26

実現したいこと

ExcelのVLOOKUPのように、①のCSVファイルにおいてグループ名が出力されたデータ内の項目に一致しない場合、「一致しないと」表示したい

①該当項目 B列のグループ名
$file = Import-Csv"C:\Work\Test_Modified_FSSPO_Get_SPOSiteGroup_GMember.csv"
A列:対象サイトのURL
B列:確認したいグループ名が記載されたデータ

イメージ説明

②検索対象データ
Microsoft SharepointSiteのグループ一括出力
$title = Get-PnPSiteGroup | Select-Object Title
Get-PnPSiteGroup・・・対象のサイトに内のグループ名を出力するコマンドレット

イメージ説明

多数あるSharepointSiteのグループ名とファイル内にあるグループ名が異なった場合、一致しない対象のグループ名を確認したい。現時点では、対象のグループ名は一致していないのはなので、$fileの1行目だけなので1行目だけに「グループ名が一致しません」と表示されると想定しているが考えている通りに表示されません。

発生している問題・エラーメッセージ

現状では、全ての項目が一致しないと表示される。

PS C:\Work\sharepoint\FSSPO> ./title_check.ps1
グループ名が一致しません
グループ名が一致しません
グループ名が一致しません
グループ名が一致しません
グループ名が一致しません

### 該当のソースコード PS C:\Work\sharepoint\FSSPO> $title = Get-PnPSiteGroup | Select-Object Title PS C:\Work\sharepoint\FSSPO> $title Title ----- 0324Test_Project FsSPOeuser externalTest Members externalTest Owners externalTest Visitors PS C:\Work\sharepoint\FSSPO> $file = Import-Csv "C:\Work\sharepoint\FSSPO\Test_Modified_FSSPO_Get_SPOSiteGroup_GMember.csv" PS C:\Work\sharepoint\FSSPO> $file url Groups --- ------ https://externaltest0320.sharepoint.com/sites/externalTest 0324Test_Project FsSPOeuser externalTest Members ... https://externaltest0320.sharepoint.com/sites/externalTest externalTest Members https://externaltest0320.sharepoint.com/sites/externalTest externalTest Owners https://externaltest0320.sharepoint.com/sites/externalTest externalTest Visitors https://externaltest0320.sharepoint.com/sites/Add-SPO Add-SPO_member0404 $file |foreach{ for($i = 0; $i -lt $title.Length; $i++){ if($_.Groups -ne $title.title){ Write-Host "グループ名が一致しません" return } } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

■「グループ名が一致しません」と表示するサンプルプログラム(1対1の比較)

PowerShell

1$title = Get-PnPSiteGroup | Select-Object Title 2$file = Import-Csv "C:\Work\sharepoint\FSSPO\Test_Modified_FSSPO_Get_SPOSiteGroup_GMember.csv" 3$i = -1 4foreach ($a in $file){ 5 $i++ 6 if ( $file[$i].Groups -eq $title[$i].Title ){ Write-host "グループ名が一致してます $($file[$i].Groups) == $($title[$i].Title)" } 7 if ( $file[$i].Groups -ne $title[$i].Title ){ Write-host "グループ名が一致しません $($file[$i].Groups) != $($title[$i].Title)" } 8} 9 10<# 11■実行結果は以下になると思います。 12 13グループ名が一致しません 0324Test_Project FsSPOeuser externalTest Members != 0324Test_Project FsSPOeuser 14グループ名が一致してます externalTest Members == externalTest Members 15グループ名が一致してます externalTest Owners == externalTest Owners 16グループ名が一致してます externalTest Visitors == externalTest Visitors 17グループ名が一致しません Add-SPO_member0404 != 18#> 19

※私の環境ではテストが出来ないので、
動作するか分かりません。ご了承ください。

投稿2023/04/11 04:06

編集2023/04/11 05:41
ccc-

総合スコア342

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuzzziii

2023/04/11 05:33 編集

ご回答ありがとうございました。 自身の環境下においても同様の結果がでました。
yuzzziii

2023/04/11 05:35 編集

この修正前の内容だと、1対1の比較でなく1対「全体内容を一つの比較対象」となっているために一致しないという表示になっていたということなのでしょうか。
ccc-

2023/04/11 05:38

お返事ありがとうございます。 yuzzziii様のスクリプトで、for文の後ろに $i が使用されていないのが理由と思います。 個別の比較では $title[$i].Title のように使用します。 よく分からなかったので本サンプルでは1対1の比較にて掲載しております。
ccc-

2023/04/11 06:08

「検索文字で全て検索」のサンプルもアップしました。ご確認ください。
guest

0

ベストアンサー

■「グループ名が一致しません」と表示するサンプルプログラム(検索文字で全て検索)

PowerShell

1$title = Get-PnPSiteGroup | Select-Object Title 2$file = Import-Csv "C:\Work\sharepoint\FSSPO\Test_Modified_FSSPO_Get_SPOSiteGroup_GMember.csv" 3$i=-1 4foreach ($a in $file){ 5 $i++ 6 if ( $title.Title -eq $file[$i].Groups ){ 7 Write-host "グループ名が一致してます $($file[$i].Groups) == $($title.Title)" 8 }else{ 9 Write-host "グループ名が一致しません $($file[$i].Groups) != $($title.Title)" 10 } 11} 12 13<# 14■実行結果は以下になると思います。 15 16グループ名が一致しません 0324Test_Project FsSPOeuser externalTest Members != 0324Test_Project FsSPOeuser externalTest Members externalTest Owners externalTest Visitors 17グループ名が一致してます externalTest Members == 0324Test_Project FsSPOeuser externalTest Members externalTest Owners externalTest Visitors 18グループ名が一致してます externalTest Owners == 0324Test_Project FsSPOeuser externalTest Members externalTest Owners externalTest Visitors 19グループ名が一致してます externalTest Visitors == 0324Test_Project FsSPOeuser externalTest Members externalTest Owners externalTest Visitors 20グループ名が一致しません Add-SPO_member0404 != 0324Test_Project FsSPOeuser externalTest Members externalTest Owners externalTest Visitors 21#> 22

※検索文字で全て検索します。

投稿2023/04/11 06:06

ccc-

総合スコア342

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuzzziii

2023/04/11 07:49

ご丁寧にご説明いただきましてありがとうございます!本当に感謝ですm(__)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問