[解決済み] Get-ADUserとフィルタを含むForEach-Objectループ
2022-02-19 02:59:52
質問
私の会社では、O365のライセンスを処理するスクリプトがあり、現在、次のようなすべてのユーザーに同じ国を割り当てています。
$Location = "US"
$E2Users = Get-ADGroupMember lg.o365.Office | Select SamAccountName
$E2Users | ForEach-Object{
$UPN = $E2Users[$Counter].SamAccountName + "@company.com"
Set-MsolUser -UserPrincipalName $UPN -UsageLocation $Location
##lots of other code
各ユーザーの国を取得し、文字列ではなくそれを使用する必要があります。 正しい国を取得するために、out-putを使用して結果を確認するための小さなテストを設定しましたが、動作させるためにそれを理解することができないようです。 他のフォーラムで$username = $_を見かけ、それを使用しようとしました。
$E2Users = Get-ADGroupMember lg.o365.Office | Select SamAccountName
$E2Users | ForEach-Object{
$username = $_
$Location = Get-ADUSer -filter {samaccountname -like "*$username*"} -properties * | Select country
write-output $Location
}
あるいは、フィルタが必要なのか?下記を使用すると、国の出力が得られますが、各ユーザーに正しくマッチングされていることを確認するにはどうしたらよいでしょうか。 いくつかの結果の行は、国またはcを使用して空白があり、ユーザーアカウントをチェックすると、これらの属性は値を持っています。
$E2Users = Get-ADGroupMember lg.o365.Office.PlanK1 | Select SamAccountName
$E2Users | ForEach-Object{
$Location = Get-ADUSer -filter * -properties * | Select country
write-output $Location
}
最終的には、次のようなものになります。
$E2Users = Get-ADGroupMember lg.o365.Office | Select SamAccountName
$E2Users | ForEach-Object{
$UPN = $E2Users[$Counter].SamAccountName + "@company.com"
$Location = Get-ADUSer -filter {not sure what to use} -properties * | Select country
Set-MsolUser -UserPrincipalName $UPN -UsageLocation $Location
##lots of other code
何が足りないのか、理解できていないのか。 何かありましたら、よろしくお願いします。
どのように解決するのですか?
ここで問題となるのは、各メンバーが
$E2Users
という単一のプロパティを持つオブジェクトです。
samaccountname
そして、そのオブジェクトをループ内で$username変数に代入していますが、これはフィルタとして使用することができません。 この問題を解決する方法はいくつかありますが、最も簡単なのは、プロパティを拡張することでしょう。
$E2Users = Get-ADGroupMember lg.o365.Office | Select -expandproperty SamAccountName
また、フィルタを-likeから-eqに変更し、"**"を不要なものとして削除します。
関連
-
[解決済み】Invoke-Command エラー "Parameter set cannot be resolved using specified named parameters".
-
[解決済み] Powershellスクリプトから7-Zipを実行する
-
[解決済み] Connect-VIServer は、渡された資格情報では動作しないが、統合された認証では動作する。
-
[解決済み] Invoke-Sqlcmd エラー : リモート DB サーバを呼び出すために powershell を実行すると、ユーザ xxxx のログインに失敗しました。
-
[解決済み] Get-ADUser -Identity
-
[解決済み] PowerShell NTFSの高度なパーミッションの設定
-
[解決済み] PowerShellで"%"(パーセント)は何をするのですか?
-
[解決済み] Get-ChildItem -force で My Documents フォルダとその他の接続ポイントに "Access Denied" を報告する。
-
[解決済み] PowerShellにおけるセット(データ構造)
-
[解決済み] Powershell:スクリプトにエラーが表示されないようにするにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Invoke-Command エラー "Parameter set cannot be resolved using specified named parameters".
-
[解決済み] スクリプト内の特定の場所にジャンプする
-
[解決済み] PowerShellと-contains演算子
-
[解決済み] PowerShellで遠隔地からファイルをコピーする
-
[解決済み] PowerShell 'Or' ステートメント
-
[解決済み] Powershell send-mailmessage - 複数の受信者にメールを送信する
-
[解決済み] PowerShell モジュールを全ユーザーに持続的にインストールする
-
[解決済み] PowerShell:PowerShellで配列オブジェクトを文字列に変換するにはどうすればよいですか?
-
[解決済み] powershellでToStringを使用して日付をフォーマットする
-
[解決済み] PowerShellを使用してFTPでファイルをアップロードする