Articles of PowerShell

为具有创build用户访问权限的用户查询AD

我的公司已经要求所有来自AD的用户和组拥有创build用户的权限以及在哪个OU中拥有这些权限的列表。 有没有办法通过PowerShell获得完整列表? 或者其他方式? 谢谢。

在未joinWindows 7的AD中查找计算机

我有一个PowerShell脚本,我们使用了几个东西,当一台新的计算机已经安装了Windows 7的时候,我们也在Windows 10上使用它,而且一切正常。 它在第一次login时运行,然后由技术人员决定,如果计算机必须join域。 但是我们需要find一种方法在脚本中执行检查,以查看计算机名是否已经存在于特定的OU中,技术人员将join。 我们不想将Active Directory模块添加到所有新的Windows 7 PC上,因为这只需要一次。 我们如何才能在PowerShell脚本中实现这样的检查,必须能够在未join的Windows 7 PC上运行,并使用脚本初始运行时技术人员已经键入的凭据? 更新 : 在我们开始部署Windows 10(与Windows 7一起)之后,我们以前的可视基本脚本的行为有所不同。 所以我们决定在PowerShell中重写它以适应Windows 7和Windows 10.我们还设法find了在同一个会话中重命名和join域的方法(=只需要1次重启)。 为了pipe理这个,我们在Win32_ComputerSystem的JoinDomainOrWorkGroup中使用一个(也许不受支持的)参数,强制计算机对象join所选的OU,即使对象已经在那里。 如果用户收到一台新的计算机,并且必须给出相同的名称,则会发生这种情况。这就是为什么我需要能够检查该特定OU是否已经存在,并且在继续join之前向技术人员询问是否正确。 新的powershell脚本有很多非英语和技术人员使用脚本的问题(读取主机)。 所以我决定拿出脚本的片段,这涉及到这个问题。 # $computername, $ou and $credentials is set before this runs $domain = "our.domain.com" $computer = get-wmiobject Win32_ComputerSystem $ret = $computer.rename($computername,$credentials.getnetworkcredential()).password,$credentials.username) if ($ret.ReturnValue -eq 0) { $ret = $computer.JoinDomainOrWorkGroup($domain,($credentials.GetNetworkCredential()).Password, $credentials.UserName, $OU, 0x1 […]

Powershell更改ADvariables“PasswordLastSet”

是否有可能通过PowerShell(或任何方法?)编辑PasswordLastSet值? 如果这是不可能的,是否有无论如何,我可以设置这样一个用户密码(不帐户)在X天内过期。 我可以清楚地看到Get-ADUser的价值,但似乎无法使用Set-ADuser进行编辑。

获取错误,成功loginPowerShell脚本导入批量AD用户

如果我能够生成成功和错误日志,该脚本将为我提供最好的批量AD用户创build脚本。 这个脚本只需要在Csv上的名字和姓氏中断几分钟。 生成日志需要帮助,如成功创build的用户和帐户列表已经存在或无法创build。 $Users=Import-csv c:\users.csv ForEach($User in $Users) { $FullName = $User.FirstName + " " + $User.LastName $SAM = $User.FirstName.Substring(0,1) + $User.LastName #example John snow will be Jsnow #$Sam=$User.FirstName+$User.LastName example john snow will be Johnsnow #$Sam=$User.FirstName example john snow will be John #$Sam= $User.firstName + "." + $User.lastName example john snow will be John.snow $dnsroot […]

PowerShell:删除-DhcpServerv4Lease不会删除现有的租约

我想从服务器WSKELLER中删除所有DHCP租约和预留。 从文档我似乎明白,这将是完成的: Get-DhcpServerv4Scope -ComputerName WSKELLER | Remove-DhcpServerv4Lease -ComputerName WSKELLER 该cmdlet确实find所有的租约,但它为每个租约抛出以下错误: Remove-DhcpServerv4Lease : Failed to delete lease 10.10.12.32 from scope 10.10.0.0 on DHCP server WSKELLER. At C:\admin\removeDhcpDns.ps1:8 char:48 + … mputerName WSKELLER | Remove-DhcpServerv4Lease -ComputerName WSKELLER + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ResourceExists: (10.10.12.32:root/Microsoft/…cpServerv4Lease) [Remove-DhcpServerv4Lease], CimException + FullyQualifiedErrorId : DHCP 20019,Remove-DhcpServerv4Lease 显然我犯了一些错误。 但是哪一个?

计数匹配值的数组元素

我有一个脚本,它build立一个基于DOS命令输出的属性的PSCustomObject。 数组的构build正确,我可以通过将其转储到屏幕输出来检查它。 但是,当我尝试通过属性名称获取元素列表时,它会给出零输出。 示例如下: $computers = @("computer1","computer2","computer3") ForEach ($computer in $computers) { quser /server:$computer | Select-Object -Skip 1 | ForEach-Object { $CurrentLine = $_.Trim() -Replace '\s+',' ' -Split '\s' $HashProps = @{ UserName = $CurrentLine[0] ComputerName = $computer timestamp = $timestamp } $tempUserList = @(New-Object -TypeName PSCustomObject -Property $HashProps | Select-Object -Property UserName,Id,State,IdleTime,LogonTime,ComputerName | % […]

System.Security.AccessControl.PropagationFlags PowerShell等价的GUI使用?

注意:这不是 “System.Security.AccessControl.InheritanceFlags PowerShell枚举等效GUI使用?”问题的重复。 我处于一个奇怪的困境。 我理解在NTFS文件系统中ACE权限传播的概念; 当我在代码中使用它时,它是有意义的; 但是当它来到GUI我有点失落: System.Security.AccessControl.PropagationFlags枚举的文档具有以下成员 InheritOnly None NoPropagateInherit 他们在文件中的解释对我来说是有意义的,我对他们没有任何问题。 但我不明白这些与GUI中的相同内容是如何相关的。 你可以告诉我,复制每个function,因为它涉及的GUI对话框?

使用PowerShell中的7za和-xr选项

我正在使用PS脚本来压缩使用7za的文件夹。 如果我使用-xr选项来排除某些文件,则压缩失败,并显示一条警告,其中要压缩的项目等于0.如果从Power Shell运行(不是脚本),则会出现同样的问题。 如果我从命令行运行相同的命令一切正常。 另外,如果我不使用-xr标志压缩的作品。 PS d:\data> e:\backup\7za a -ye:\backup\data.7z * -xr!*.7z

如何获取Exchange 2007中转发给具有特定域的联系人的邮箱列表?

我需要将邮箱列表(特别是主SMTP地址)放在一起,这些邮箱将转发到具有SMTP地址中特定域的联系人。 例如,如果转发地址指向具有主SMTP地址“[email protected]”的联系人,则filter将接受标识为“John Doe”的邮箱。 我可以使用Exchange 2007shell程序获取具有使用以下命令设置的转发地址的邮箱。 $forwardingMailboxes = Get-Mailbox | where {$_.ForwardingAddress -ne $Null} 如何进一步过滤$ forwardingMailboxes,只接受转发给具有特定域的SMTP地址的联系人的邮箱?

使用Power shell编辑AD安全设置

我正试图添加一组用户到Windows 2012 R2中的故障转移群集我需要以pipe理员身份相互添加节点。 我把它们放到自己的OU中。 不过,我希望脚本这个每个PowerShell和一个CSV导入。 想法? 我的谷歌fu没有得到我的任何地方。 例。 Import-Csv "C:\Users\me\Desktop\users.csv" | Where-Object {$_.Name} |` ForEach-Object {` New-ADUser ` -Name $_."Name" ` -GivenName $_."GivenName" ` -Surname $_."Surname" ` -Description $_."Department" ` -SamAccountName $_."Logon_Username" ` -UserPrincipalName $_."UPN" ` -DisplayName $_."Display_Name" ` -AccountPassword (ConvertTo-SecureString -AsPlainText "P@ssw0rd1!" -Force) ` -Path "OU=Users,OU=Head Office,OU=International,DC=company,DC=com" ` -ChangePasswordAtLogon $true ` -Enabled $true | […]