小编Pho*_*ria的帖子

Powershell Select-String -pattern -notMatch

我有线 -

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)

powershell select-string

14
推荐指数
1
解决办法
2万
查看次数

Powershell Foreach-Object Foreach循环从多个文件中读取字符串并写入一个

我无法在一个Foreach或Foreach-Object循环中使用多个命令

我的情况是 -

  1. 我有很多文本文件,大约100个.所以他们被阅读 Get-ChildItem $FilePath -Include *.txt
  2. 每个文件的结构都相同,只有关键信息不同.例

    用户:Somerandomname

    计算机:有些随机计算机

使用-Replace命令我删除"用户:"和"计算机:"这样$User = Somerandomname$computer = "Somerandomcomputer.在每个圈子中,$ user和$ Computer with -Append应写入一个文件.然后应该读取下一个文件.

foreach-object { $file = $_.fullname;
Run Code Online (Sandbox Code Playgroud)

应该使用,但我无法弄清楚它的正确语法.有人可以帮我吗?

powershell

4
推荐指数
1
解决办法
4万
查看次数

使用 Powershell 获取所有 AD 用户的递归组成员身份

我正在尝试制作一个 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。

我应该向它以递归方式编写组成员身份的第一个脚本添加什么?

membership powershell recursion active-directory-group

2
推荐指数
1
解决办法
5万
查看次数

Powershell:使用-notmatch语句排除多个文件夹

我正在创建一个小脚本,它将列出计算机上的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语句排除多个文件夹?

powershell get-childitem

2
推荐指数
1
解决办法
3234
查看次数