我在AD中有一个名为SQL的OU。 我已经委派一个名为sqladmin的用户的完全控制权。 如果我以sqladmin身份login到成员服务器,则可以使用Active Directory用户和计算机创build两个不同的计算机对象AG和群集。 我可以使用ADUC来设置AG计算机对象上的安全性,以使群集计算机对象具有完全控制权。 但是,如果我尝试通过从AG获取当前ACL并添加ACE来使用PowerShell执行此操作,则当我尝试在AG计算机对象上设置ACL时,出现Access Denied错误。 这是我的代码 $AG = Get-ADComputer AG $cluster = Get-ADComputer cluster $AGDistinguishedName = $AG.DistinguishedName # input AD computer distinguishedname $AGacl = Get-Acl "AD:\$AGDistinguishedName" $SID = [System.Security.Principal.SecurityIdentifier] $cluster.SID $identity = [System.Security.Principal.IdentityReference] $SID $adRights = [System.DirectoryServices.ActiveDirectoryRights] "GenericAll" $type = [System.Security.AccessControl.AccessControlType] "Allow" $inheritanceType = [System.DirectoryServices.ActiveDirectorySecurityInheritance] "None" $ace = New-Object System.DirectoryServices.ActiveDirectoryAccessRule $identity,$adRights,$type,$inheritanceType $AGacl.AddAccessRule($ace) Set-Acl […]
尝试运行以下代码段时出现错误。 $Users = Import-Csv -Path $Path foreach ($User in $Users) { $Domain = "Domain.lan" $DefaultPassword = 'Password123' $Parms = @{'Name'= "$($User.Lastname), $($User.Firstname) $($User.middleinitial)"; 'DisplayName' = "$($User.Firstname) $($User.Middleinitial) $($User.LastName)"; 'samAccountName' = "$($User.Firstname[0])$($User.middleinitial)$($User.Lastname)".ToLower(); 'UserPrincipalName' = "$($User.Firstname[0])$($User.middleinitial)$($User.Lastname)@domain.lan".ToLower(); 'GivenName' = $User.Firstname; 'Surname' = $User.LastName; 'Initials' = $User.middleinitial; 'EmailAddress' = $User.EmailAddress; 'AccountPassword' = (ConvertTo-SecureString $DefaultPassword -AsPlainText -Force); 'Enabled' = $true; […]
如何在AD中设置多值属性 例如,我需要在根域对象上设置msDS-AllowedDNSSuffixes。 如果我通过ADSIEdit来做,它一次增加一个值。 我试过了: Set-ADObject -Identity 'b313bf35-f3ab-4074-8255-f38dc1217c06' -Replace @{'msDS-AllowedDNSSuffixes'='aaa.contoso.com; bbb.contoso.com'} Set-ADObject -Identity 'b313bf35-f3ab-4074-8255-f38dc1217c06' -Replace @{'msDS-AllowedDNSSuffixes'='aaa.contoso.com\nbbb.contoso.com'} Set-ADObject -Identity 'b313bf35-f3ab-4074-8255-f38dc1217c06' -Replace @{'msDS-AllowedDNSSuffixes'='aaa.contoso.com;bbb.contoso.com'} 它作为一行添加,如ADSIEdit所示。 我也试过: $suffixes = @" aaa.contoso.com bbb.contoso.com "@ foreach ($i in $suffixes) { Set-ADObject -Identity 'b313bf35-f3ab-4074-8255-f38dc1217c06' -Add @{'msDS-AllowedDNSSuffixes'= $i} } 一样的东西。 如何设置这种types的属性的值? 什么分隔符使用?
作为pipe理环境的一部分,我想通过命令行安装Visual Studio 2017。 不过,我遇到安装2015年没有遇到设置2015年的问题。继文档后,我有一个简单的Powershell脚本: Start-Process C:\\windows\\temp\\vs2017\\vs_professional_2017 –ArgumentList "/Quiet /NoRestart /Log C:\\Windows\\Temp\\InstallVs2017\\install.log" -Wait 哪个VS2015工作得很好。 它确实开始安装,但几秒钟后显示接受隐私声明和许可条款的对话框。 我似乎无法find一个–accepteula标志或类似的东西过去它(在一个侧面说明,我会认为给予quiet应该抑制UI,它会压制这一点)。 在文档中对这个问题有一个评论,但是他们无法find一个通过它的方法。 你如何自动接受它? 我觉得我错过了一些明显的东西,但我还没有弄明白。
我们刚刚在我们的办公室运行的一台文件服务器上安装了一些可移动存储设备(只支持less于10个工作站),我们的一个备份解决scheme是一个可移动的硬盘驱动器,每晚在同一时间留下另一个移动存储连接.. 每天晚上,服务器运行一个powershell来查找这两个驱动器中的任何一个是否已连接,并从内部raid安装程序运行一个robocopy镜像到可移动驱动器上。 这很好(这不是一个大的公司操作),但是当我们初始化可移动存储为ntfs时,我们被告知驱动总是需要通过'安全移除硬件'被移除,这使得它比我们更less的stream水线通缉.. 由于服务器每天晚上都在运行备份(当没有人存在时),我们认为最简单的解决scheme是运行robocopy,然后自动卸载/安全地移除硬件。 首先,考虑到员工交换驱动器时没有数据应该移到驱动器上或从驱动器移动到驱动器上,驱动器“不安全”移除的危险是什么? 其次,是否有可能通过命令行安全地移除硬件,如果是的话,我们如何告诉它移除具有特定驱动器号的硬件? 第三,如果我们无法确定给定驱动器号的硬件来执行“安全移除硬件”命令,我们可以请求驱动器卸载吗? 还是像拔电源插头一样坏? 我很欣赏这可能不是最好的备份解决scheme,而且就系统pipe理员或其他任何事情而言 – 我不是(我们没有)..所以任何帮助将是太棒了。 干杯,斯蒂芬。
我正在build立一个terminal服务器2008,将由不同的客户组织使用,每个组织都有多个个人用户帐户。 我希望每个客户机构都有一个映射到\ server \ clients \ 他们的OU名称也是他们的客户端名称,所以我希望能够find他们当前的OU,然后将其用于映射命令。 OU是分层的,所以它是我需要的最底层的OU名称。 例 OU: 专用客户\ AjaxCorp 应该得到一个驱动器映射到 \\服务器1 \共享\ AjaxCorp 有关如何获得OU的build议? 我相信这一定很容易,我只是没有想出来… 我确实find了有关如何使用VB脚本执行此操作的信息,但由于这是一个全新的环境,我认为使用PowerShell会更好。
我想用仅使用Microsoft工具的PowerShell在Active Directory中testing是否存在计算机帐户。 使用Quest AD cmdlet,我可以这样做: if (!(get-qadcomputer $name)){ Stuff } 就我get-adcomputer ,这不适用于get-adobject或get-adcomputer 。 有什么简单的,我失踪? 我已经看到了一些看似简单的解决scheme,可以捕获所有抛出的exception,但在某些情况下似乎可能会导致一些误报。
如何使用PowerShell更新与“商务电话”和位置的Exchange GAL? 我没有看到他们在“获取邮箱”
我正在开发一个脚本来报告6个月没有login到域的用户。 我在14天内使用lastLogonTimestamp对我来说是足够精确的,我不想查询每个DC。 问题是,当我运行该脚本时, lastLogonTimestamp会回来,为近600个用户。 但是,这里有点奇怪,然后我可以在同一个提示符下为这些用户之一执行Get-ADUser (这是脚本中用来检索这些信息的东西),它给了我一个值。 什么可能导致这个? 更新:只是提供一些澄清。 是DFL是2003年。另外,澄清。 我只是指的是lastLogonTimestamp属性,而不是任何其他属性。 脚本首先创build一个包含每个用户的对象: $userlist = Get-ADUser -Filter * -properties lastLogonTimestamp 除了一些其他逻辑,我通过使用foreach ($user in $userlist)循环将每个用户写出到一个文本文件。 有效 $name = $user.Name $llts = $user.lastLogonTimestamp 当我查看文本文件时,lastLogonTimestamp对于将近600个用户是空白的。 其中的一些,我select一个testing主题,例如我最近login的人,比如说user-x。 User-x将在文本文件中使用lastLogonTimestamp空白。 如果,然而,我然后运行 Get-ADUser user-x -properties lastLogonTimestamp 在脚本为user-x完成之后在相同的命令行上,它返回lastLogonTimestamp的值。 更新2:这是没有意义的! 我更改了脚本,以便在循环中取出lastLogonTimestamp属性,而不是在创builduserlist对象时: foreach ($user in $userlist) { $SamAccountName = $user.SamAccountName $thisUser = Get-ADUser $SamAccountName -properties lastLogonTimeStamp … […]
我如何使用PowerShell [adsisearcher]查询我不属于的成员? 通常我会做这样的事情: $myAdsi = [adsisearcher]"" $myAdsi.SearchRoot = [adsi]"LDAP://dc=corp,dc=mycompany,dc=com" $myAdsi.Filter = "objectCategory=computer" $res = $myAdsi.FindAll() 如果我在我的域中的主机上运行此片段,我会得到预期的结果。 但是,如果我从一台有networking访问权的计算机(通过L2L VPN)运行这个服务,我得到的错误是: Exception calling "FindAll" with "0" argument(s): "The specified domain either does not exist or could not be contacted. " At line:11 char:33 + $adComputers = $searcher.FindAll <<<< () + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId […]