我有一個相對簡單的腳本。
- 出口秘密
- 查找特定的 SID 并存盤它們
- 對于每個 SID,回傳組名
但是,當我嘗試根據 SID 值過濾 Get-LocalGroup 的結果時,我沒有得到任何結果。如果不是在腳本的 Where 部分中使用變數,而是使用實際值,那么它就可以正常作業。我究竟做錯了什么?
secedit /export /areas USER_RIGHTS /cfg c:\temp\logs.txt
$userrights = Select-String -Path "c:\temp\logs.txt" -Pattern 'SeRemoteInteractiveLogonRight' | Out-String
$userrights = $userrights.Replace("C:\temp\logs.txt:35:SeRemoteInteractiveLogonRight = ", "").Replace("*", "").Split(",")
$userrights
foreach ($userright in $userrights)
{
Get-LocalGroup | Where {$_.SID -Match $userright}
}
uj5u.com熱心網友回復:
這對我來說似乎在 Windows PowerShell 和 PowerShell Core 中都能正常-Encoding unicode作業,是讓它在我的情況下作業的關鍵,不確定它是否也與你的問題有關:
Select-String .\test.txt -Pattern '(?<=SeRemoteInteractiveLogonRight[= *]{4}). ' -Encoding unicode |
ForEach-Object { $_.Matches.Value -split ',?\*' | Get-LocalGroup -SID { $_ } }
感謝mklement0確認這確實是一個編碼問題。正如他在他的有用評論中所說:
“......似乎 secedit.exe 創建了沒有 BOM 的 UTF-16LE(“Unicode”)檔案,這就是為什么讀取它們需要
-Encoding Unicode.”
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/523426.html
標籤:电源外壳选择字符串
