我正在嘗試創建一個腳本來列出機器上具有本地管理員權限的所有用戶。輸出將保存到 txt 檔案中。與持有者 $User1、$User2 和 $User3 匹配的用戶將被排除在輸出中。
這是我的代碼:
$User1 = "Administrator"
$User2 = "Admin1"
$User3 = "Admin2"
$LocalAdmin = Get-Content C:\AdminUsers.txt | Select-String -Pattern "$User1" -NotMatch | Select-String -Pattern "$User2" -NotMatch | Select-String -Pattern "$User3" -NotMatch
echo $LocalAdmin
輸出顯示如下:
Members
-------------------------------------------------------------------------------
User1
User2
The command completed successfully.
如何僅列印用戶而不是如下所示的整個結果?
User1
User2
謝謝,
uj5u.com熱心網友回復:
我現在找到了正確的命令。這里是:
net localgroup Administrators >> C:\AdminUsers.txt
$User1 = "Administrator"
$User2 = "Admin1"
$User3 = "Admin2"
$Text1 = "Members"
$Text2 = "-------------------------------------------------------------------------------"
$Text3 = "The command completed successfully."
(gc C:\AdminUsers.txt ) | ? {$_.trim() -ne "" } | set-content C:\AdminUsers1.txt
$LocalAdmin = Get-Content C:\AdminUsers1.txt | Select-String -Pattern "$User1", "$User2", "$User3", "$Text1", "$Text2", "$Text3" -NotMatch
echo $LocalAdmin
del C:\AdminUsers.txt
del C:\AdminUsers1.txt
謝謝大家的幫助。
uj5u.com熱心網友回復:
我同意Lee-Dailey 的說法,它更易于使用Get-LocalGroupMember,但如果您真的想使用net localgroup Administrators并將結果存盤在文本檔案中,我會使用:
$users = ((Get-Content -Path 'C:\Administrators.txt' -Raw).Trim() -split '(?m)^- ')[1] -split '\r?\n' | Select-Object -SkipLast 1
但是,如果您從記憶體中完成所有操作,則無需先寫入檔案:
$users = ((net localgroup Administrators | Where-Object { $_ -match '\S' }) -join "`r`n" -split '(?m)^- ')[1] -split '\r?\n' | Select-Object -SkipLast 1
或者
$users = (((net localgroup Administrators) -join "`r`n").Trim() -split '(?m)^- ')[1] -split '\r?\n' | Select-Object -SkipLast 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/366186.html
