Articles of PowerShell

使用PowerShell,在Active Directory中,我将如何将具有给定IP的所有DNS Alogging更改为新的IP?

我们一直在移动数据中心,而且我有很多旧logging不正确,但是在DNS中作为CNAMElogging,但是Alogging具有直接IP(例如192.168.100.n),并且他们全部移动到新的子网(10.19.100.n)。 我只需要编写一个powershell脚本来更改所有这些logging。 我发现这个网站: http://www.indented.co.uk/index.php/2008/12/30/administering-microsoft-dns-in-powershell/ 并从中做出这个简单的脚本: $dnsServer = "meldc2" $scope = New-Object Management.ManagementScope("\\$dnsServer\root\MicrosoftDNS") $path = New-Object Management.ManagementPath("MicrosoftDNS_Zone") $options = New-Object Management.ObjectGetOptions($Null,[System.TimeSpan]::MaxValue, $True) $ZoneClass= New-Object Management.ManagementClass($scope,$path,$options) $Zones = Get-WMIObject -Computer $dnsServer -Namespace "root\MicrosoftDNS" -Class "MicrosoftDNS_Zone" $Zones | Get-Member foreach($Z in $Zones) { $Z | Select-Object Name,DsIntegrated,ZoneType,Reverse,Data } 但是这只能让我得到一个根区列表。 我不明白如何遍历每个区域中的所有条目。 另外,我所看到的所有例子都涉及到添加新的区域,但是在修改现有的Alogging时没有任何例子。

Windows Server 2008 R2 PowerShell脚本手动运行,但不作为计划任务运行

我有一个使用PowerShell ISE手动运行的PowerShell脚本。 但是,使用pipe理员凭据作为计划任务运行时,任务不会以预期的结果运行。 剧本: $request=new-object System.Net.WebClient $request.DownloadFile("…url…", "C:\path\to\file.csv") pipe理员用户对脚本和正在写入的文件夹都具有完全控制权。 该URL存在并在合理的时间内(不到一秒)作出响应。 如果我手动运行任务的状态是0x41301(“当前正在运行”),直到我最终结束它。 我已经使用这两种方法设置了任务: 启动一个程序: C:\path\to\PS.PS1 使用其他选项启动程序: C:\windows\system32\WindowsPowerShell\v1.0\powershell.exe -noninteractive -command "C:\path\to\PS.PS1" 使用选项1,任务历史logging显示它已经打开notepad.exe的一个实例,但它永远不会终止它。 使用选项2完成任务,但不会下载/创build文件。 我已经使用Set-ExecutionPolicy Unrestricted因为这不是一个签名的脚本。 我该如何解决这个问题?

将Hyper-V内部交换机与PowerShell的主机networking适配器可靠关联

Get-VMSwitch Hyper-V cmdlet返回具有NetAdapterInterfaceDescription属性的VMSwitch对象,但仅为物理types的交换机填充此对象。 对于内部types的开关,此属性为空白。 主机上的虚拟适配器与VMSwitch之间唯一明显的关系是名称 – 例如,对于交换机“Foo”,默认的适配器名称是“vEthernet(Foo)”。 但是,networking适配器可以重命名。 我在Get-NetAdapter的输出上Get-NetAdapter了与交换机相关的其他值,但是我没有取得任何成功。 是否有其他cmdlet或API可以将内部Hyper-V虚拟交换机与主机networking适配器相匹配?

使用WMI删除页面文件

我可以像这样通过WMI修改页面文件设置 PS D:\> gwmi win32_pagefilesetting MaximumSize Name Caption ———– —- ——- 8192 c:\pagefile.sys c:\ 'pagefile.sys' 8192 d:\pagefile.sys d:\ 'pagefile.sys' PS D:\> $pf=gwmi win32_pagefilesetting PS D:\> $pf.gettype() IsPublic IsSerial Name BaseType ——– ——– —- ——– True True Object[] System.Array PS D:\> $pf[0].InitialSize=4096;$pf[0].MaximumSize=4096 PS D:\> $pf[0].Put() PS D:\> gwmi win32_pagefilesetting MaximumSize Name Caption ———– —- ——- 4096 […]

无法使用PowerShell重命名计算机

$script = { Rename-Computer -ComputerName "ADMINIS-ID1PS7V" -NewName "SERVER1" } $computerName = "ADMINIS-ID1PS7V" $username = "Administrator" $pw = "123!@#qaZ" # Create Credentials $securepw = ConvertTo-SecureString $pw -asplaintext -force $cred = new-object -typename System.Management.Automation.PSCredential -argument $username, $securepw # Create and use session $session = New-PSSession -credential $cred -ComputerName $computerName Invoke-Command -Session $session -ScriptBlock $script Remove-PSSession $session 我禁用了机器上的防火墙。 […]

通过Power Shell脚本更改AD用户属性

在我工作的领域,我们创build了一个属性“ regulationMatrix ”。 当我尝试像get-aduser USER -properties *一样的PowerShell命令时,只有当它具有像“ regulationMatrix:{PIC} ”设置的值时才显示特定属性,否则它不会出现在输出中。 该属性是最近添加的,现在我必须从一个OU中将这个属性添加到1000个用户。 有人可以帮我一个脚本或命令,例如修改特定OU的所有用户的属性。 谢谢。 $userlist = get-aduser -searchbase "OU=RandomOU,DC=contoso,DC=europa,DC=net" -filter * -properties regulationMatrix foreach ( $users in $userlist ) { $username = $users.samaccountname $reg = $users.regulationmatrix write-host $username write-host $reg set-aduser -identity $username -add @{'regulationMatrix'='PIC'} } 感谢丹尼尔,我想到要添加什么,这完美的工作。

PowerShell:将GPO导出到文本文件

我是新来的Windows服务器,我很好奇:有没有办法将组安全设置转储到文本文件,使用PowerShell或batch file? 谢谢!

如何在Windows Server 2012R2的git版本控制下放置DNS区域

我们目前使用Windows Server 2012 R2作为我们的DNS服务器。 我想把所有的区域文件在版本控制下。 我发现这个问题展示了如何通过PowerShell导出区域。 但是,似乎没有将其导出,以便以后可以重新导入。 我也读了关于DnsCmd命令,但不推荐使用。 所以:如何将Active Directory中存储的区域导出到文本文件中,以便我可以将它们放入git /版本控制中,( 重要 ),以便稍后可以在需要时重新导入旧版本?

如何从命令行枚举networking计算机?

我在Windows XP上,并希望从命令行枚举我的networking上存在的计算机。 我想枚举它们,以便我可以在另一个命令pslist中使用主机名。 我怀疑我可以使用PowerShell和“networking视图”命令来做到这一点,但不能解决具体问题。

有没有办法在PowerShell中从头开始创buildACL,而不是复制现有的ACL并修改它们?

我知道我可以使用get-acl复制现有的ACL,然后使用set-acl来修改它们,但是有没有办法创build一个新的空白acl,然后添加我所需要的? 例如: $foo = new-acl #push some access rules into $foo set-acl C:\myFolder $foo