Articles of PowerShell

在Powershell中截断部分LDAP DN? (或从LDAP DN获取OU。)

在PowerShell中获取包含LDAP对象的OU的最简单方法是什么? 我正在编写一个脚本来pipe理一些我已经用脚本“dynamic化”的组,并且可以通过以下方式获得完整的专有名称: $PseudoDynamicGroupDN = (Get-ADGroup -Filter {Name -like $PseudoDynamicGroup}).DistinguishedName 它返回类似于: CN=MyPseudoDynamicGroup,OU=Users,OU=BusinessUnit,OU=Site,OU=Company,DC=domain,DC=forest,DC=tld 我正在寻找放弃CN=MyPseudoDynamicGroup,所以我最终: OU=Users,OU=BusinessUnit,OU=Site,OU=Company,DC=domain,DC=forest,DC=tld 我如何尽可能轻松地做到这一点? 我尝试使用Split运算符 ,但是这返回一个数组,并且删除逗号,迫使我将它们添加回来。我怀疑有一个更好的方法。

二进制registry项的DSC语法

什么应该是一个简单的registryDSCconfiguration已经变成一个有点令人沮丧的猜测。 我正在尝试设置二进制registry项。 我发现不可能find正确的值数据格式来获得正确的密钥集。 我试图将这个registry文件转换成DSC: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\DefaultSecurity] "SrvsvcShareAdminConnect"=hex:01,00,04,80,64,00,00,00,70,00,00,00,00,00,00,00,\ 14,00,00,00,02,00,50,00,03,00,00,00,00,00,18,00,03,00,0f,00,01,02,00,00,00,\ 00,00,05,20,00,00,00,20,02,00,00,00,00,18,00,03,00,0f,00,01,02,00,00,00,00,\ 00,05,20,00,00,00,25,02,00,00,00,00,18,00,03,00,0f,00,01,02,00,00,00,00,00,\ 05,20,00,00,00,27,02,00,00,01,01,00,00,00,00,00,05,12,00,00,00,01,01,00,00,\ 00,00,00,05,12,00,00,00 我已经试过这两个registry和XRegistry资源,并击中相同的格式错误(我真的不介意我使用)。 我已经尝试提供的数据作为一个单一的string,string数组,string数组附加到0x显示它是hex等。我也试过这里的build议。 我得到的最接近下面的configuration,似乎工作: Registry disableAdminShare { Ensure = "Present" Key = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\DefaultSecurity" Force = $true ValueName = "SrvsvcShareAdminConnect" ValueData = @("010004806400000070000000000000001400000002005000030000000000180003000f00010200000000000520000000200200000000180003000f00010200000000000520000000250200000000180003000f0001020000000000052000000027020000010100000000000512000000010100000000000512000000") ValueType = "Binary" } 但是在应用日志的时候,看起来是把这个值转换成了十进制,导致一个无效的条目: 'HKLM:\SYSTEM\CurrentControlSet\Services\lanmanserver\DefaultSecurity\SrvsvcSha reAdminConnect' to '(1, 0, 4, 128, 100, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, […]

在Powershell中显示Hyper-V vSwitchconfiguration

有没有办法使用Powershell显示特定Hyper-V vSwitch的完整设置? 我试图在虚拟机上configuration从vSwitch到目标vNIC的端口镜像,所以我将vSwitch设置为镜像源,但是我希望能够检查设置是否已经被应用。 操作系统是Windows Server 2012 R2 谢谢

同步两个IIS 8.5服务器configuration,仅排除绑定

我们有两个IIS 8.5 Web服务器,Server 2012 R2 服务器1 Server2上 我试图find一个PowerShell命令,将只同步Server1上所做的更改到Server2 我尝试共享configuration,但是会同步绑定以及我不希望,因为它们是负载平衡。 另外我试图避免添加不必要的绑定到服务器,使其工作。 我发现了一些webdeploy的powershell命令,但它看起来也想同步文件,我们使用DFS来同步这些文件。 我希望能够做的是将Server1 applicationhost.config或web.config中的更改同步到Server2

调用-Sqlcmd -InputFile“\\ UNC \ Path”访问被拒绝?

我正在研究将在源主机SOURCEHOST01上安排的PowerShell脚本概念certificate,并调用远程SQL服务器SQLSERV01和SQLSERV02上的命令。 计划的操作顺序如下: 从源主机上存储的文本文件获取SQL Server主机名列表\\SOURCEHOST01\PATH\SQLSERVERHOSTNAME.LIST 对于每个SQL服务器,调用命令将每个SQL服务器上的SQL脚本\\SOURCEHOST01\PATH\simple_sp_who.sql复制到%TEMP% 。 在每个SQL服务器上使用指定的SQL脚本Invoke-Sqlcmd 。 这是我到目前为止的代码: Get-Content \\SOURCEHOST01\PATH\SQLSERVERHOSTNAME.LIST | Foreach-Object { Invoke-Command -ComputerName $_ -ScriptBlock { $FileSource = "\\SOURCEHOST01\PATH\" $FileDest = "$Env:TEMP\SQL\" $Database = "Master" $InputFile = "$FileDest\simple_sp_who.sql" Copy-Item $FileSource -Destination $FileDest -Recurse Invoke-Sqlcmd -ServerInstance $_ -Database $Database -InputFile $InputFile } } 结果错误: Access is denied + CategoryInfo : PermissionDenied: (\\SOURCEHOST01\PATH\:String) [Copy-Item], […]

无法进入 – AzureRMVM – Azure CloudShell(PowerShell)

我昨天在与美国东部地区问题交战后,使用默认市场映像(Windows Server 2016上的SQL Server 2016 SP1企业版),在IaaS Windows 2016上安装了SQL Server。 在Azure Cloud Shell中,我inputEnter-AzureRmVm -name <servernamehere> -region <regionNameHere > 然后它提示我为用户。 由于我没有join虚拟机到一个域,所以我使用<serverName>\user和我在创buildVM时设置的本地<serverName>\user 。 然后提示input密码,我从记事本复制粘贴它,以确保它是准确的。 它认为一秒钟,没有任何错误,然后返回到PS Azure提示符(与我在同一个提示) – 查询主机名时,它显示给予云提示,而不是虚拟机名称的临时名称。 现在我已经可以在过去使用这个( Enter-AzureRmVM ),所以我猜测这是一种types的错误发生,但是如果我做了明显错误的事情,我会欢迎任何评论。

Powershell脚本来清​​除Vista和Windows 7中开始菜单上最近使用的程序

我正在寻找一个PowerShell脚本,从Vista / Windows 7“开始”菜单中清除(删除)最近使用过的程序中的所有项目。 注:清洁项目并不意味着禁用MRU行为 – 我仍然希望它保持MRU的行为; 只需清理任何条目的直接列表。

如何通过Powershell删除文件审计规则?

这是一个脚本来打开一个审计规则: $path = 'C:\…\*' $ACL = new-object System.Security.AccessControl.FileSecurity $AccessRule = new-object System.Security.AccessControl.FileSystemAuditRule("everyone","ExecuteFile","success") $ACL.SetAuditRule($AccessRule) $dircont = gci $path -include "*.dot" foreach ($file in $dircont) { $ACL | Set-Acl $file } 但我希望能够做的是,对于任何给定的文件,删除任何和所有的审计规则。 所以假设你不知道用户有什么审计设置或者什么动作,你只是想摆脱这一切……就像我想我可以做这样的事情: $AccessRule = new-object System.Security.AccessControl.FileSystemAuditRule("everyone","ExecuteFile","none") 但是,只有当你知道哪些用户已经被configuration为在该文件上进行审计时才有用…希望这是有道理的。 谢谢你的帮助。

确定用户使用PowerShell访问共享文件夹

我需要使用PowerShell脚本(v 1.0)确定访问Windows XP(SP2)计算机上共享文件夹的用户/会话。 这是使用“计算机pipe理”显示的信息 系统工具| 共享文件夹| 会话。 任何人都可以给我指点如何去做这个? 我猜这将需要一个WMI查询,但我最初的在线search没有透露什么查询的细节。 谢谢,MagicAndi

通过未join域的计算机上的PowerShell远程pipe理DC

应该做什么? 可能吗?