簡體   English   中英

字符串中有空格,但我無法將其拆分為 powershell

[英]There are spaces in string, but I can't split it in powershell

我想比較用戶的組和 DFS 的組,以了解用戶是否有權訪問 DFS。 但我陷入了分裂的字符串。

這是我的代碼的一部分:

$folder = Read-Host 'Enter the folder path'
$User = Read-Host 'Enter the sAMAccountName of user'
$getSGs = (get-acl $folder).Access | Select-Object -uniq -ExpandProperty IdentityReference 
$getSGsSplit = $getSGs -split('.*\\')
$arr = $getSGsSplit -split ' '
Write-Host $arr

$getSGs的價值:

domain-ORG\xxx-Read domain-ORG\xxx-Modify domain-ORG\xxx-Admin domain-ORG\xxx-Center domain-ORG\xxxx-Admin BUILTIN\Administrators

$getSGsSplit 的值:

 xxx-Read  xxx-Modify  xxx-Admin  xxx-Center  xxxx-Admin  Administrators 

我想要的是用空格分割 $getSGsSplit:

xxx-Read
xxx-Modify
xxx-Admin
xxx-Center  
xxxx-Admin
BUILTIN\Administrators 

但是我已經嘗試了很多模式,它們都不起作用。

$getSGsSplit -split ' .-`t`n`r'
$getSGsSplit -replace ' ','\n'
$getSGsSplit.split(' ').trim()
$getSGsSplit.split('\s').trim()
$getSGsSplit -split ' '

而且無論我使用哪種模式, write-host $arr[2]的控制台仍然是空格。 並且write-host $arr[2].getType()控制台總是 System.String

PS C:\Users\zzz\Desktop> C:\Users\zzz\Desktop\12.ps1
Enter the folder path: \\domain.org\xxx\xx\xxx
Enter the sAMAccountName of user: zzz


PS C:\Users\zzz\Desktop> 

誰能建議如何解決這個問題?

僅考慮您已經擁有的字符串:

下面應該給你你正在尋找的東西:

$a= "domain-ORG\xxx-Read domain-ORG\xxx-Modify domain-ORG\xxx-Admin domain-ORG\xxx-Center domain-ORG\xxxx-Admin BUILTIN\Administrators"

($a -split '\s').replace('domain-ORG\','')

為什么不簡單地遍歷Get-Acl返回的值並替換每個項目的域部分?

就像是

((Get-Acl $folder).Access | 
    Select-Object IdentityReference -Unique).IdentityReference | 
    ForEach-Object { $_ -replace '^domain-ORG\\' }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM