我有线 -
echo $LocalAdmins
Administrator
Domain-Administrator
daemon
SomeUser
Run Code Online (Sandbox Code Playgroud)
第1-3行应该是相同的,尽管可能存在域管理员不存在的情况,因此简单地计算行将无济于事,因为用户可能隐藏在第3行.
第4行字符串更改,可能有4行以上,也没有第4行.
我不确定线路是否改变了位置.
我需要获取字符串-notMatch"Administrator","Domain-Administrator","daemon".即,我需要此列表中的用户名.
有没有办法使用多个-notMatch -and或()?目前我坚持只使用一个-notMatch的代码.我不能使用-Match,因为列表中可能有2个以上的用户.
$LocalAdmins | Select-String -pattern "Administrator" -notMatch
Run Code Online (Sandbox Code Playgroud) 我无法在一个Foreach或Foreach-Object循环中使用多个命令
我的情况是 -
Get-ChildItem $FilePath -Include *.txt每个文件的结构都相同,只有关键信息不同.例
用户:Somerandomname
计算机:有些随机计算机
使用-Replace命令我删除"用户:"和"计算机:"这样$User = Somerandomname和$computer = "Somerandomcomputer.在每个圈子中,$ user和$ Computer with -Append应写入一个文件.然后应该读取下一个文件.
foreach-object { $file = $_.fullname;
Run Code Online (Sandbox Code Playgroud)
应该使用,但我无法弄清楚它的正确语法.有人可以帮我吗?
我正在尝试制作一个 PS 脚本,它会列出所有 Active Directory 用户组成员身份(递归)。
我已经有工作脚本:
import-module activedirectory
$users = get-aduser -Filter {Name -Like "*"} -Searchbase "ou=Users, dc=Domain" | Where-Object { $_.Enabled -eq 'True' }
$targetFile = "D:\users.csv"
rm $targetFile
Add-Content $targetFile "User;Group"
foreach ($user in $users)
{
$groups = Get-ADPrincipalGroupMembership $user
foreach ($group in $groups)
{
$username = $user.samaccountname
$groupname = $group.name
$line = "$username;$groupname"
Add-Content $targetFile $line
}
}
Run Code Online (Sandbox Code Playgroud)
但是脚本不会递归列出组,即,如果输出文件中列出的组是另一个组的一部分。
例子:
组 1:用户
组 2:组 3:用户
脚本仅显示 Group1 和 3,但不显示 2。
我应该向它以递归方式编写组成员身份的第一个脚本添加什么?
我正在创建一个小脚本,它将列出计算机上的EXE文件.
$computername = get-content env:computername
get-childitem C: -recurse | ? {$_.fullname -notmatch 'C:\\Windows'} | where {$_.extension -eq ".exe"} | format-table fullname | Out-File "\\server\incomming\$computername.txt"
Run Code Online (Sandbox Code Playgroud)
问题是-notmatch不接受更多语句.我可以复制粘贴? {$_.fullname -notmatch 'C:\\Windows'}并用于其他文件夹,如Program Files(x86),Program Files等.但是我不想太夸张一个剧本.
有没有办法可以用-notmatch语句排除多个文件夹?