Articles of PowerShell

为什么Active Directory密码重置会忽略密码历史logging计数规则?

我有一个情况,即我正在使用的AD域具有足够明智的密码策略(例如,足够高的PasswordHistoryCount , MinPasswordLength设置等)。 我可以使用Set-ADAccountPassword cmdlet轻松地通过PowerShell更改给定用户的密码,如下所示: Set-ADAccountPassword -Identity "Forename.Surname" -NewPassword (ConvertTo-SecureString -AsPlainText "incorrectp0nypetrolnail" -Force) -OldPassword (ConvertTo-SecureString -AsPlainText "correcth0rsebatterystaple" -Force) 上面还ADPasswordComplexityException了在尝试重新使用密码时违反密码策略的情况下的ADPasswordComplexityException期望,即,消息: "The password does not meet the length, complexity, or history requirement of the domain." 但是,密码重置后,密码历史logging策略不会被强制执行。 在使用“Active Directory用户和计算机”UI时,或者像使用Set-ADAccountPassword cmdlet(假设用户以前使用过以下密码)时,会发生这种情况: Set-ADAccountPassword -Identity "Forename.Surname" -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "correcth0rsebatterystaple" -Force) 我会期望在这种情况下引发相同的ADPasswordComplexityExceptionexception。 那么 – 是否有任何方法来防止用户在重置密码时重复使用密码? 如果不是,允许这个的合理理由是什么?

rabbitmqctl set_policy从正则expression式中删除脱字符(^)锚

我从PowerShell运行这个,所以我不知道这是否会发生在不同的环境(正则expression式本身只包括除了那些以“amq。”开头的东西)。 当我运行下面的命令,'^'从模式中删除: rabbitmqctl set_policy mirroring '^(?!(?:amq\.)).+$' '{"""ha-mode""":"""all"""}' 它输出以下内容: Setting policy "mirroring" for pattern "(?!(?:amq\\.)).+$" to "{\"ha-mode\":\"all\"}" with priority "0" … 我尝试过以不同的方式逃脱它,没有任何成功。 有趣的是,从networkingpipe理插件设置它工作正常。 UPDATE 这个问题似乎与^在batch file(我认为)中是一个保留的字符有关,并且就batch file而言并没有被引用(即,PS需要传入引用string中的模式,但它是按原样传递正则expression式)。 基于beatcracker的回答,以下任何一项工作: rabbitmqctl set_policy mirroring '"^(?!(?:amq\.)).+$"' '{\"ha-mode\":\"all\"}' rabbitmqctl –% set_policy mirroring "^(?!(?:amq\.)).+$" {\"ha-mode\":\"all\"} rabbitmqctl @('set_policy','mirroring','"^(?!(?:amq\.)).+$"','{\"ha-mode\":\"all\"}') Start-Process -FilePath 'rabbitmqctl' -ArgumentList 'set_policy mirroring "^(?!(?:amq\.)).+$" {\"ha-mode\":\"all\"}'

Powershell从dynamic通讯组列表中排除组成员

我正试图从dynamic通讯组列表中删除特定的用户。 我已经search并玩了我的PowerShell脚本一段时间没有运气。 我确定这是我忽略的一点,因为我对OPATH语法不太了解。 我已经在EAC(2013)中创build了这个组,以包括所有电子邮件用户的内部和云。 当我做一个: Get-DynamicDistributionGroup –Identity “Email Users” | fl 它作为RecipientFilter返回: {((((RecipientType -eq 'UserMailbox') -or (RecipientType -eq 'MailUser'))) -and (-not(Name -like 'SystemMailbox{*')) -and (-not(Name -like 'CAS_{*')) -and (-not(RecipientTypeDetailsValue -eq 'MailboxPlan')) -and (-not(RecipientTypeDetailsValue -eq 'DiscoveryMailbox')) -and (-not(RecipientTypeDetailsValue -eq 'PublicFolderMailbox')) -and (-not(RecipientTypeDetailsValue -eq 'ArbitrationMailbox')))} 我想排除组DDGExclude的所有成员。 我已经尝试将下面的命令添加到命令中,但没有运气。 -and (-not(MemberOfGroup -eq 'DDGExclude')) 我还想了解如何排除ExtensionCustomAttribute10为NOSYNC 。 我尝试了以下,没有运气。 -and (ExtensionCustomAttribute10 -ne […]

如何通过任务调度程序运行powershell脚本时隐藏命令窗口?

我有PowerShell脚本与GUIforms显示消息的条件。 该脚本每15分钟运行一次任务调度程序。 每一次运行都会显示出concole窗口,然后显示消息的GUI窗体,然后closures控制台。 这种行为激怒了我。 我想隐藏控制台并只显示GUI窗体。 我试着用参数“-WindowsStyle Hidden”运行runnig,但没有帮助。 如何隐藏这个控制台窗口?

为什么我的login脚本没有映射任何驱动器?

我在PowerShell中编写了一个login脚本。 脚本embedded在GPO中,并在用户login到域时运行。 我的问题是,我在脚本中部署的驱动器没有部署。 我确定login脚本运行,因为在脚本结束时,我发送一封邮件给自己,我总是收到它。 所以运行脚本不应该是问题。 每次脚本运行时,我还logging整个$Errorvariables,并且没有指示为什么会发生此错误。 我几乎可以肯定,错误不是在脚本本身 – 它必须是我认为的权限错误。 我认为在运行脚本时指定-NoProfile参数时可以解决这个问题,但是我不知道把它放在GPO的哪个位置。 我不想要batch file调用脚本,因为美的原因:-)。 编辑:指定-noprofile没有解决问题 编辑:由于有评论说没有足够的信息如何驱动器映射,我粘贴整个映射部分如下: # UserOU as a parameter, value set in GPO Param([string]$UserOU) # preparing some stuff… Import-Module .\SecureStringFunctions.psm1 [Byte[]]$key = (1..16) $pw = Get-Content .\LocalAdminCred.txt | ConvertTo-SecureString -key $key # Tried this to elevate the Script IF it's needed. Didn't solve my problem. […]

在检查smb1是否使用powershell启用时获取bool返回值

我可以使用Get-SmbServerConfiguration | Select EnableSMB2Protocol Get-SmbServerConfiguration | Select EnableSMB2Protocol 得到表风格的结果: 我怎样才能得到布尔结果,在这种情况下,将是False 我正在研究DSC,目前正在研究SMB脚本。

以普通用户的PowerShell启动进程

我正在创build一个PowerShell脚本来自动设置新的计算机部署。 我处于这种情况,我想从一个提升的pipe理PowerShell控制台实例作为一个普通的非pipe理员用户启动一个可执行文件。 原因是因为如果我从提升的提示/脚本启动,可执行文件会生成一个错误。 这里是命令的结构: Start-Process -FilePath (${Env:CommonProgramFiles(x86)} + "\sample.exe") -ArgumentList "/PRODUCT:sample", "/VERSION:2.0", "/MODE:1" 我做了一些search,发现我所需要的(非pipe理员到pipe理员)这里https://technet.microsoft.com/en-us/library/hh849848.aspx但是我只看到RunAs提升到pipe理员的相反。 build立: Windows 10教育 PS 5 parsing度 由于psexec没有提供禁止login的解决scheme,所以我最终启动了以下过程: $username = Read-Host "Please enter in a valid username " $password = Read-Host "Please enter in a the account password " -AsSecureString Start-Process -Credential (New-Object System.Management.Automation.PSCredential($username, $password)) -FilePath (${Env:CommonProgramFiles(x86)} + "\sample.exe") -ArgumentList "/PRODUCT:sample", "/VERSION:2.0", […]

获取域pipe理员的用户列表,并且在过去30天内没有login过?

我如何获得来自AD的域名pipe理员用户列表,并且在过去30天内没有login?

在不允许RDP的情况下向PS Remote授予用户权限

有没有一种方法可以授予用户在PowerShell中远程使用Invoke-Command的function,而不必将RDP访问权限授予服务器?

有没有办法来检查我的虚拟内存分页是否是“系统pipe理”

对于我们的其中一个应用程序,我们需要在Windows机器上configuration虚拟内存来pipe理系统。 这可以在系统属性 – >性能(设置…) – >性能选项高级选项卡 – >虚拟内存更改… – >检查硬盘是否切换到“系统pipe理大小”手动完成。 这很好,但是我必须为大量的机器执行此操作,并希望在检查其他configuration时收集此信息的批处理命令或PowerShell脚本。 我发现与本页面最接近的是 wmic computersystem get AutomaticManagedPagefile 但是,这只会检查顶部的checkbox是否configuration,而不是特定的硬盘驱动器。 有没有人有任何build议如何以更自动化的方式做到这一点?