【发布时间】:2014-05-10 08:03:09
【问题描述】:
我正在尝试自动执行一些 Office 365 用户创建工作,但遇到了用于显示将要更改的值的简单格式语法。这段代码搜索 Azure 目录中 Usage Location 字段为空值的任何用户,并将它们存储到一个文件中(以后会多次使用,我也想将它保存在一个文件中以用于存档目的) )... 我想向运行脚本的用户显示的只是一个简单的表,其中包含名字、姓氏和 UPN...(不是 sam,需要 UPN 才能看到子域值)。但只有在 UPN 包含“@STU.DOMAIN.COM”时才会处理结果......这就是我现在所拥有的:
Get-MsolUser -MaxResults 4000 | Where {$_.usagelocation -eq $null}| Export-Csv C:\Test.csv
Import-CSV C:\Test.csv | ForEach-Object {
$fname= $_.FirstName
$lname= $_.LastName
$UPN= $_.UserPrincipalName
if ($UPN.Contains("@STU.DOMAIN.COM")) {
New-Object -Typename PSObject -Property @{
"User Principal Name" = $UPN
"Last Name" = $lname
"First Name" = $fname
}
}
}
我不知道为什么,但是当我在 ISE 窗口中运行一小部分代码时它可以工作,但是当我连接到 MSOL 和脚本的其余部分时,它在正常的 powershell 窗口中不起作用正在玩……?我想我正在寻找具有实际经验的人来向我展示格式化此任务的正确方法......请有一些智慧可以分享吗?
谢谢!
更新: 嗨,Frode - 这似乎并没有将它们分成几组。 “用户主体名称”变量是他们的整个用户名@UPN,因此它不会按域和子域对其进行分组。输出如下所示:
User Principal Name: User1@DOMAIN.COM
First Name Last Name User Principal Name
---------- --------- -------------------
User1 Last1 User1@DOMAIN.COM
User Principal Name: User2@STU.DOMAIN.COM
First Name Last Name User Principal Name
---------- --------- -------------------
User2 Last2 User2@STU.DOMAIN.COM
如何仅获取要排序的变量的 @STU.DOMAIN.COM 或 @DOMAIN.COM?
更新 2:
我设法找到一种方法来去除 UPN 的后缀并显示它,但它仍然很古怪。它随机列出了不同 UPN 的用户群...这是我从 Frode 修改的代码:
$users |
Select-Object @{n="First Name";e={$_.FirstName}}, @{n="Last Name";e={$_.LastName}}, @{n="Domain/UPN";e={$_.UserPrincipalName.split("@")[1]}} |
Format-Table -AutoSize -GroupBy "Domain/UPN" | Out-String | Write-Host
但是输出有点奇怪……看起来像这样:
Domain/UPN: STU.DOMAIN.COM
First Name Last Name Domain/UPN
---------- --------- ----------
Dede Lastname STU.DOMAIN.COM
Domain/UPN: DOMAIN.COM
First Name Last Name Domain/UPN
---------- --------- ----------
Thomas Lastname DOMAIN.COM
Wells Lastname DOMAIN.COM
Amy Lastname DOMAIN.COM
Tiffany Lastname DOMAIN.COM
Sara Lastname DOMAIN.COM
Amy Lastname DOMAIN.COM
Domain/UPN: STU.DOMAIN.COM
First Name Last Name Domain/UPN
---------- --------- ----------
Jair Lastname STU.DOMAIN.COM
Domain/UPN: DOMAIN.COM
First Name Last Name Domain/UPN
---------- --------- ----------
Cathy Lastname DOMAIN.COM
Paul Lastname DOMAIN.COM
Ridgewood Lastname DOMAIN.COM
Patty Lastname DOMAIN.COM
Linda Lastname DOMAIN.COM
Chris Lastname DOMAIN.COM
Cami Lastname DOMAIN.COM
Kent Lastname DOMAIN.COM
Michael Lastname DOMAIN.COM
Stephanie Lastname DOMAIN.COM
Amie Lastname DOMAIN.COM
Patrick Lastname DOMAIN.COM
LaVonne Lastname DOMAIN.COM
De Lastname DOMAIN.COM
Joann Lastname DOMAIN.COM
Chuck Lastname DOMAIN.COM
Kathy Lastname DOMAIN.COM
Sue Lastname DOMAIN.COM
Tech Lastname DOMAIN.COM
Theresa Lastname DOMAIN.COM
Kristin Lastname DOMAIN.COM
Toni Lastname DOMAIN.COM
Sabrina Lastname DOMAIN.COM
有没有一种方法可以解析它们并按域/UPN 后缀将它们组合在一起?
再次提前感谢!
【问题讨论】:
标签: powershell csv azure format office365