PowerShell导出CSV前拆分WebUrl并添加UserID列的方法
实现方法
你可以通过计算属性在Select-Object中新增UserID列,利用字符串拆分或正则表达式提取所需内容,同时转成大写格式:
修改后的完整脚本
$AllSites = Get-MGSite -All $odSites = $AllSites | Where-Object {$_.Weburl.contains("/personal/")} $odSites | Select-Object -Property DisplayName, WebUrl, @{ Name = 'UserID' Expression = { # 拆分URL提取指定部分并转大写 $splitUrl = $_.WebUrl -split "/personal/" $userIdPart = $splitUrl[1] -split "_" $userIdPart[0].ToUpper() } } | Export-Csv $Global:Export -NoTypeInformation
代码说明
- 计算属性通过
@{Name='列名'; Expression={处理逻辑}}定义,这里用来生成UserID列 - 第一步用
-split "/personal/"把URL拆分为两部分,取第二部分(索引为1的元素) - 第二步用
-split "_"拆分第二部分,取第一个元素(即URL中/personal/后、_前的内容) - 最后用
.ToUpper()将提取的内容转为大写,得到目标格式的UserID
备选方案(正则表达式)
如果URL格式固定,也可以用正则匹配实现更简洁的提取:
$odSites | Select-Object -Property DisplayName, WebUrl, @{ Name = 'UserID' Expression = { if ($_.WebUrl -match '/personal/(\w+)_') { $matches[1].ToUpper() } } } | Export-Csv $Global:Export -NoTypeInformation
正则/personal/(\w+)_会精准匹配/personal/后到第一个_之间的字母数字内容,通过$matches[1]提取目标部分并转大写。
内容的提问来源于stack exchange,提问作者aasenomad
相关产品推荐
相关产品推荐

