Данная статья была создана в дополнение к видео уроку PowerShell за 20 минут. В ней еще раз перечислены те принципы и подходы к PowerShell, которые позволят начать использовать PowerShell в своей работе. Введение в PowerShell — это описание основных команд PowerShell, описание процесса поиска команд и использование справки. Кратко изложены принципы конвейера команд, фильтрации результата и форматирования вывода. Показано использования PowerShell ISE для освоения PowerShell.
Команды, алиасы, структура команды
Запустить PowerShell можно достаточно легко в поиске Стартового Окна Windows набрать PowerShell. Обратите внимание, что PowerShell зачастую используется для решения административных задач, поэтому возможно вам понадобиться запустить его от имени администратора. Для этого в результатах поиска щелкаем правой кнопкой мыши и выбираем «запуск от имени администратора».
Конечно если это серверная операционная система, то PowerShell доступен сразу из панели задач. После запуска откроется основная консоль PowerShell в которую можно вводить команды.
Каждая команда PowerShell ее еще иногда называют командлет или CmdLet состоит из двух частей глагол (Get, Set, Add, Invoke, Remove и т.д.) и существительного (Service, VM, AzureAccount, DHCPServerSetting). Каждая часть отделяется от другой одним дефисом. Других дефисов в командлете быть не может. При наборе команд можно использовать клавишу Tab, которая позволяет автоматически закончить ввод команды. Tab можно нажимать несколько раз при этом будет осуществляться перебор подходящих команд. Кстати комбинация Shift+Tab так же работает и перебирает команды в обратном порядке. Для исполнения необходимо нажать клавишу Enter.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
PS C:\Users\pnck> Get-ChildItem Каталог: C:\Users\pnck Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 20.11.2014 22:58 .gimp-2.8 d---- 14.01.2014 16:35 .thumbnails d---- 17.02.2014 9:53 Cisco Packet Tracer 6.0.1 d-r-- 26.10.2014 8:25 Contacts d-r-- 21.01.2015 12:23 Desktop d-r-- 30.12.2014 10:51 Documents d-r-- 20.01.2015 19:22 Downloads d-r-- 26.10.2014 8:25 Favorites d---- 30.12.2013 13:09 GNS3 d-r-- 26.10.2014 8:26 Links d-r-- 26.10.2014 8:25 Music d---- 09.07.2014 17:26 NNU d-r-- 20.01.2015 20:10 OneDrive d-r-- 26.10.2014 8:25 Pictures d-r-- 26.10.2014 8:26 Saved Games d-r-- 30.12.2014 8:10 Searches d---- 02.01.2015 12:05 Tracing d-r-- 26.10.2014 8:25 Videos d---- 20.01.2015 19:24 Новая папка -a--- 04.03.2014 15:02 28 .gitignore -a--- 21.12.2014 11:53 186 .packettracer -a--- 29.03.2014 23:19 3211264 DevelopmentStorageDb22.mdf -a--- 29.03.2014 23:19 851968 DevelopmentStorageDb22_log.ldf -a--- 12.01.2014 10:53 46 test.ps1 -a--- 12.01.2014 10:53 46 test.psq -a--- 28.01.2014 16:25 445601 WP_002009.jpg -a--- 28.01.2014 16:25 149975 WP_002010.jpg -a--- 28.01.2014 16:25 267783 WP_002011.jpg -a--- 28.01.2014 16:25 134365 WP_002012.jpg |
Данная команда Get-ChildItem без параметров выдает содержимое текущего каталога. У некоторых командлетов в PowerShell существуют алиасы, т.е. другой вариант написания того же командлета. Алиасы делают использование PowerShell более простым и легким. Так у командлета Get-ChildItem есть алиасы dir и ls. Кроме того существуют такие алиасы как copy, cp, rm, mkdir и т.д. просмотерть весь список алиасов можно выполнив командлет Get-Alias.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
PS C:\Users\pnck> dir Каталог: C:\Users\pnck Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 20.11.2014 22:58 .gimp-2.8 d---- 14.01.2014 16:35 .thumbnails d---- 17.02.2014 9:53 Cisco Packet Tracer 6.0.1 d-r-- 26.10.2014 8:25 Contacts d-r-- 21.01.2015 12:23 Desktop d-r-- 30.12.2014 10:51 Documents d-r-- 20.01.2015 19:22 Downloads d-r-- 26.10.2014 8:25 Favorites d---- 30.12.2013 13:09 GNS3 d-r-- 26.10.2014 8:26 Links d-r-- 26.10.2014 8:25 Music d---- 09.07.2014 17:26 NNU d-r-- 20.01.2015 20:10 OneDrive d-r-- 26.10.2014 8:25 Pictures d-r-- 26.10.2014 8:26 Saved Games d-r-- 30.12.2014 8:10 Searches d---- 02.01.2015 12:05 Tracing d-r-- 26.10.2014 8:25 Videos d---- 20.01.2015 19:24 Новая папка -a--- 04.03.2014 15:02 28 .gitignore -a--- 21.12.2014 11:53 186 .packettracer -a--- 29.03.2014 23:19 3211264 DevelopmentStorageDb22.mdf -a--- 29.03.2014 23:19 851968 DevelopmentStorageDb22_log.ldf -a--- 12.01.2014 10:53 46 test.ps1 -a--- 12.01.2014 10:53 46 test.psq -a--- 28.01.2014 16:25 445601 WP_002009.jpg -a--- 28.01.2014 16:25 149975 WP_002010.jpg -a--- 28.01.2014 16:25 267783 WP_002011.jpg -a--- 28.01.2014 16:25 134365 WP_002012.jpg PS C:\Users\pnck> ls Каталог: C:\Users\pnck Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 20.11.2014 22:58 .gimp-2.8 d---- 14.01.2014 16:35 .thumbnails d---- 17.02.2014 9:53 Cisco Packet Tracer 6.0.1 d-r-- 26.10.2014 8:25 Contacts d-r-- 21.01.2015 12:23 Desktop d-r-- 30.12.2014 10:51 Documents d-r-- 20.01.2015 19:22 Downloads d-r-- 26.10.2014 8:25 Favorites d---- 30.12.2013 13:09 GNS3 d-r-- 26.10.2014 8:26 Links d-r-- 26.10.2014 8:25 Music d---- 09.07.2014 17:26 NNU d-r-- 20.01.2015 20:10 OneDrive d-r-- 26.10.2014 8:25 Pictures d-r-- 26.10.2014 8:26 Saved Games d-r-- 30.12.2014 8:10 Searches d---- 02.01.2015 12:05 Tracing d-r-- 26.10.2014 8:25 Videos d---- 20.01.2015 19:24 Новая папка -a--- 04.03.2014 15:02 28 .gitignore -a--- 21.12.2014 11:53 186 .packettracer -a--- 29.03.2014 23:19 3211264 DevelopmentStorageDb22.mdf -a--- 29.03.2014 23:19 851968 DevelopmentStorageDb22_log.ldf -a--- 12.01.2014 10:53 46 test.ps1 -a--- 12.01.2014 10:53 46 test.psq -a--- 28.01.2014 16:25 445601 WP_002009.jpg -a--- 28.01.2014 16:25 149975 WP_002010.jpg -a--- 28.01.2014 16:25 267783 WP_002011.jpg -a--- 28.01.2014 16:25 134365 WP_002012.jpg |
Поиск команд, параметры команд
Для успешного освоения PowerShell необходимо уметь быстро искать нужные команды PowerShell. Для поиска командлетов можно использовать команду Get-Command. У данного командлета есть параметр Name после которого необходимо указать название командлета информацию по которому необходимо получить.
Все параметры в PowerShell начинаются со знака дефис за которым следует название этого параметра и через пробел или знак двоеточие идет значение этого параметра. Обратите внимание при наборе параметров так же можно использовать Tab, а для некоторых командлетов можно так же использовать Tab при наборе значений параметров.
Для параметра Name командлета Get-Command можно использовать подстановочные символы такие как * и ?. Это очень облегчает задачу поиска команд. Мы можем просто использовать какое-то ключевое слово. В данном статье мы будем разбирать настройку DNS сервера.
Команда ниже дает список все командлетов связанных с DNS.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 |
PS C:\Users\pnck> Get-Command -Name *DNS* CommandType Name ModuleName ----------- ---- ---------- Alias dnsn -> Disconnect-PSSession Alias Export-DnsServerTrustAnchor DnsServer Function Add-DnsClientNrptRule DnsClient Function Add-DnsServerConditionalForwarderZone DnsServer Function Add-DnsServerDirectoryPartition DnsServer Function Add-DnsServerForwarder DnsServer Function Add-DnsServerPrimaryZone DnsServer Function Add-DnsServerResourceRecord DnsServer Function Add-DnsServerResourceRecordA DnsServer Function Add-DnsServerResourceRecordAAAA DnsServer Function Add-DnsServerResourceRecordCName DnsServer Function Add-DnsServerResourceRecordDnsKey DnsServer Function Add-DnsServerResourceRecordDS DnsServer Function Add-DnsServerResourceRecordMX DnsServer Function Add-DnsServerResourceRecordPtr DnsServer Function Add-DnsServerRootHint DnsServer Function Add-DnsServerSecondaryZone DnsServer Function Add-DnsServerSigningKey DnsServer Function Add-DnsServerStubZone DnsServer Function Add-DnsServerTrustAnchor DnsServer Function Add-DnsServerZoneDelegation DnsServer Function Add-VpnConnectionTriggerDnsConfiguration VpnClient Function Clear-DnsClientCache DnsClient Function Clear-DnsServerCache DnsServer Function Clear-DnsServerStatistics DnsServer Function ConvertTo-DnsServerPrimaryZone DnsServer Function ConvertTo-DnsServerSecondaryZone DnsServer Function Disable-DnsServerSigningKeyRollover DnsServer Function Disable-NetDnsTransitionConfiguration NetworkTransition Function Enable-DnsServerSigningKeyRollover DnsServer Function Enable-NetDnsTransitionConfiguration NetworkTransition Function Export-DnsServerDnsSecPublicKey DnsServer Function Export-DnsServerZone DnsServer Function Get-DhcpServerDnsCredential DhcpServer Function Get-DhcpServerv4DnsSetting DhcpServer Function Get-DhcpServerv6DnsSetting DhcpServer Function Get-DnsClient DnsClient Function Get-DnsClientCache DnsClient Function Get-DnsClientGlobalSetting DnsClient Function Get-DnsClientNrptGlobal DnsClient Function Get-DnsClientNrptPolicy DnsClient Function Get-DnsClientNrptRule DnsClient Function Get-DnsClientServerAddress DnsClient Function Get-DnsServer DnsServer Function Get-DnsServerCache DnsServer Function Get-DnsServerDiagnostics DnsServer Function Get-DnsServerDirectoryPartition DnsServer Function Get-DnsServerDnsSecZoneSetting DnsServer Function Get-DnsServerDsSetting DnsServer Function Get-DnsServerEDns DnsServer Function Get-DnsServerForwarder DnsServer Function Get-DnsServerGlobalNameZone DnsServer Function Get-DnsServerGlobalQueryBlockList DnsServer Function Get-DnsServerRecursion DnsServer Function Get-DnsServerResourceRecord DnsServer Function Get-DnsServerRootHint DnsServer Function Get-DnsServerScavenging DnsServer Function Get-DnsServerSetting DnsServer Function Get-DnsServerSigningKey DnsServer Function Get-DnsServerStatistics DnsServer Function Get-DnsServerTrustAnchor DnsServer Function Get-DnsServerTrustPoint DnsServer Function Get-DnsServerZone DnsServer Function Get-DnsServerZoneAging DnsServer Function Get-DnsServerZoneDelegation DnsServer Function Get-NetDnsTransitionConfiguration NetworkTransition Function Get-NetDnsTransitionMonitoring NetworkTransition Function Get-UalDns UserAccessLogging Function Import-DnsServerResourceRecordDS DnsServer Function Import-DnsServerRootHint DnsServer Function Import-DnsServerTrustAnchor DnsServer Function Invoke-DnsServerSigningKeyRollover DnsServer Function Invoke-DnsServerZoneSign DnsServer Function Invoke-DnsServerZoneUnsign DnsServer Function Register-DnsClient DnsClient Function Register-DnsServerDirectoryPartition DnsServer Function Remove-DhcpServerDnsCredential DhcpServer Function Remove-DnsClientNrptRule DnsClient Function Remove-DnsServerDirectoryPartition DnsServer Function Remove-DnsServerForwarder DnsServer Function Remove-DnsServerResourceRecord DnsServer Function Remove-DnsServerRootHint DnsServer Function Remove-DnsServerSigningKey DnsServer Function Remove-DnsServerTrustAnchor DnsServer Function Remove-DnsServerZone DnsServer Function Remove-DnsServerZoneDelegation DnsServer Function Remove-VpnConnectionTriggerDnsConfiguration VpnClient Function Reset-DnsServerZoneKeyMasterRole DnsServer Function Reset-NetDnsTransitionConfiguration NetworkTransition Function Restore-DnsServerPrimaryZone DnsServer Function Restore-DnsServerSecondaryZone DnsServer Function Resume-DnsServerZone DnsServer Function Set-DhcpServerDnsCredential DhcpServer Function Set-DhcpServerv4DnsSetting DhcpServer Function Set-DhcpServerv6DnsSetting DhcpServer Function Set-DnsClient DnsClient Function Set-DnsClientGlobalSetting DnsClient Function Set-DnsClientNrptGlobal DnsClient Function Set-DnsClientNrptRule DnsClient Function Set-DnsClientServerAddress DnsClient Function Set-DnsServer DnsServer Function Set-DnsServerCache DnsServer Function Set-DnsServerConditionalForwarderZone DnsServer Function Set-DnsServerDiagnostics DnsServer Function Set-DnsServerDnsSecZoneSetting DnsServer Function Set-DnsServerDsSetting DnsServer Function Set-DnsServerEDns DnsServer Function Set-DnsServerForwarder DnsServer Function Set-DnsServerGlobalNameZone DnsServer Function Set-DnsServerGlobalQueryBlockList DnsServer Function Set-DnsServerPrimaryZone DnsServer Function Set-DnsServerRecursion DnsServer Function Set-DnsServerResourceRecord DnsServer Function Set-DnsServerResourceRecordAging DnsServer Function Set-DnsServerRootHint DnsServer Function Set-DnsServerScavenging DnsServer Function Set-DnsServerSecondaryZone DnsServer Function Set-DnsServerSetting DnsServer Function Set-DnsServerSigningKey DnsServer Function Set-DnsServerStubZone DnsServer Function Set-DnsServerZoneAging DnsServer Function Set-DnsServerZoneDelegation DnsServer Function Set-NetDnsTransitionConfiguration NetworkTransition Function Set-VpnConnectionTriggerDnsConfiguration VpnClient Function Show-DnsServerCache DnsServer Function Show-DnsServerKeyStorageProvider DnsServer Function Start-DnsServerScavenging DnsServer Function Start-DnsServerZoneTransfer DnsServer Function Step-DnsServerSigningKeyRollover DnsServer Function Suspend-DnsServerZone DnsServer Function Sync-DnsServerZone DnsServer Function Test-DnsServer DnsServer Function Test-DnsServerDnsSecZoneSetting DnsServer Function Unregister-DnsServerDirectoryPartition DnsServer Function Update-DnsServerTrustPoint DnsServer Cmdlet Get-AzureDns Azure Cmdlet New-AzureDns Azure Cmdlet Resolve-DnsName DnsClient Application dns.exe Application dnscacheugc.exe Application dnscmd.exe Application dnsmgmt.msc |
Некоторые параметр некоторых командлетов можно не указывать, а просто указать значение. PowerShell сам по типу значения подберет необходимый параметр. Команда ниже будет иметь такой же результат, как и команда выше.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 |
PS C:\Users\pnck> Get-Command *DNS* CommandType Name ModuleName ----------- ---- ---------- Alias dnsn -> Disconnect-PSSession Alias Export-DnsServerTrustAnchor DnsServer Function Add-DnsClientNrptRule DnsClient Function Add-DnsServerConditionalForwarderZone DnsServer Function Add-DnsServerDirectoryPartition DnsServer Function Add-DnsServerForwarder DnsServer Function Add-DnsServerPrimaryZone DnsServer Function Add-DnsServerResourceRecord DnsServer Function Add-DnsServerResourceRecordA DnsServer Function Add-DnsServerResourceRecordAAAA DnsServer Function Add-DnsServerResourceRecordCName DnsServer Function Add-DnsServerResourceRecordDnsKey DnsServer Function Add-DnsServerResourceRecordDS DnsServer Function Add-DnsServerResourceRecordMX DnsServer Function Add-DnsServerResourceRecordPtr DnsServer Function Add-DnsServerRootHint DnsServer Function Add-DnsServerSecondaryZone DnsServer Function Add-DnsServerSigningKey DnsServer Function Add-DnsServerStubZone DnsServer Function Add-DnsServerTrustAnchor DnsServer Function Add-DnsServerZoneDelegation DnsServer Function Add-VpnConnectionTriggerDnsConfiguration VpnClient Function Clear-DnsClientCache DnsClient Function Clear-DnsServerCache DnsServer Function Clear-DnsServerStatistics DnsServer Function ConvertTo-DnsServerPrimaryZone DnsServer Function ConvertTo-DnsServerSecondaryZone DnsServer Function Disable-DnsServerSigningKeyRollover DnsServer Function Disable-NetDnsTransitionConfiguration NetworkTransition Function Enable-DnsServerSigningKeyRollover DnsServer Function Enable-NetDnsTransitionConfiguration NetworkTransition Function Export-DnsServerDnsSecPublicKey DnsServer Function Export-DnsServerZone DnsServer Function Get-DhcpServerDnsCredential DhcpServer Function Get-DhcpServerv4DnsSetting DhcpServer Function Get-DhcpServerv6DnsSetting DhcpServer Function Get-DnsClient DnsClient Function Get-DnsClientCache DnsClient Function Get-DnsClientGlobalSetting DnsClient Function Get-DnsClientNrptGlobal DnsClient Function Get-DnsClientNrptPolicy DnsClient Function Get-DnsClientNrptRule DnsClient Function Get-DnsClientServerAddress DnsClient Function Get-DnsServer DnsServer Function Get-DnsServerCache DnsServer Function Get-DnsServerDiagnostics DnsServer Function Get-DnsServerDirectoryPartition DnsServer Function Get-DnsServerDnsSecZoneSetting DnsServer Function Get-DnsServerDsSetting DnsServer Function Get-DnsServerEDns DnsServer Function Get-DnsServerForwarder DnsServer Function Get-DnsServerGlobalNameZone DnsServer Function Get-DnsServerGlobalQueryBlockList DnsServer Function Get-DnsServerRecursion DnsServer Function Get-DnsServerResourceRecord DnsServer Function Get-DnsServerRootHint DnsServer Function Get-DnsServerScavenging DnsServer Function Get-DnsServerSetting DnsServer Function Get-DnsServerSigningKey DnsServer Function Get-DnsServerStatistics DnsServer Function Get-DnsServerTrustAnchor DnsServer Function Get-DnsServerTrustPoint DnsServer Function Get-DnsServerZone DnsServer Function Get-DnsServerZoneAging DnsServer Function Get-DnsServerZoneDelegation DnsServer Function Get-NetDnsTransitionConfiguration NetworkTransition Function Get-NetDnsTransitionMonitoring NetworkTransition Function Get-UalDns UserAccessLogging Function Import-DnsServerResourceRecordDS DnsServer Function Import-DnsServerRootHint DnsServer Function Import-DnsServerTrustAnchor DnsServer Function Invoke-DnsServerSigningKeyRollover DnsServer Function Invoke-DnsServerZoneSign DnsServer Function Invoke-DnsServerZoneUnsign DnsServer Function Register-DnsClient DnsClient Function Register-DnsServerDirectoryPartition DnsServer Function Remove-DhcpServerDnsCredential DhcpServer Function Remove-DnsClientNrptRule DnsClient Function Remove-DnsServerDirectoryPartition DnsServer Function Remove-DnsServerForwarder DnsServer Function Remove-DnsServerResourceRecord DnsServer Function Remove-DnsServerRootHint DnsServer Function Remove-DnsServerSigningKey DnsServer Function Remove-DnsServerTrustAnchor DnsServer Function Remove-DnsServerZone DnsServer Function Remove-DnsServerZoneDelegation DnsServer Function Remove-VpnConnectionTriggerDnsConfiguration VpnClient Function Reset-DnsServerZoneKeyMasterRole DnsServer Function Reset-NetDnsTransitionConfiguration NetworkTransition Function Restore-DnsServerPrimaryZone DnsServer Function Restore-DnsServerSecondaryZone DnsServer Function Resume-DnsServerZone DnsServer Function Set-DhcpServerDnsCredential DhcpServer Function Set-DhcpServerv4DnsSetting DhcpServer Function Set-DhcpServerv6DnsSetting DhcpServer Function Set-DnsClient DnsClient Function Set-DnsClientGlobalSetting DnsClient Function Set-DnsClientNrptGlobal DnsClient Function Set-DnsClientNrptRule DnsClient Function Set-DnsClientServerAddress DnsClient Function Set-DnsServer DnsServer Function Set-DnsServerCache DnsServer Function Set-DnsServerConditionalForwarderZone DnsServer Function Set-DnsServerDiagnostics DnsServer Function Set-DnsServerDnsSecZoneSetting DnsServer Function Set-DnsServerDsSetting DnsServer Function Set-DnsServerEDns DnsServer Function Set-DnsServerForwarder DnsServer Function Set-DnsServerGlobalNameZone DnsServer Function Set-DnsServerGlobalQueryBlockList DnsServer Function Set-DnsServerPrimaryZone DnsServer Function Set-DnsServerRecursion DnsServer Function Set-DnsServerResourceRecord DnsServer Function Set-DnsServerResourceRecordAging DnsServer Function Set-DnsServerRootHint DnsServer Function Set-DnsServerScavenging DnsServer Function Set-DnsServerSecondaryZone DnsServer Function Set-DnsServerSetting DnsServer Function Set-DnsServerSigningKey DnsServer Function Set-DnsServerStubZone DnsServer Function Set-DnsServerZoneAging DnsServer Function Set-DnsServerZoneDelegation DnsServer Function Set-NetDnsTransitionConfiguration NetworkTransition Function Set-VpnConnectionTriggerDnsConfiguration VpnClient Function Show-DnsServerCache DnsServer Function Show-DnsServerKeyStorageProvider DnsServer Function Start-DnsServerScavenging DnsServer Function Start-DnsServerZoneTransfer DnsServer Function Step-DnsServerSigningKeyRollover DnsServer Function Suspend-DnsServerZone DnsServer Function Sync-DnsServerZone DnsServer Function Test-DnsServer DnsServer Function Test-DnsServerDnsSecZoneSetting DnsServer Function Unregister-DnsServerDirectoryPartition DnsServer Function Update-DnsServerTrustPoint DnsServer Cmdlet Get-AzureDns Azure Cmdlet New-AzureDns Azure Cmdlet Resolve-DnsName DnsClient Application dns.exe Application dnscacheugc.exe Application dnscmd.exe Application dnsmgmt.msc |
PowerShell модульный язык. И каждый командлет относится к определенному модулю. Вы можете устанавливать дополнительные модули, тем самым расширяя функционал. При установке большинства ролей Windows Server автоматически устанавливаются соответсвующие модули PowerShell. Нас интересуют команды относящиеся к модулю DnsServer
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
PS C:\Users\pnck> Get-Command -Module DnsServer CommandType Name ModuleName ----------- ---- ---------- Alias Export-DnsServerTrustAnchor DnsServer Function Add-DnsServerConditionalForwarderZone DnsServer Function Add-DnsServerDirectoryPartition DnsServer Function Add-DnsServerForwarder DnsServer Function Add-DnsServerPrimaryZone DnsServer Function Add-DnsServerResourceRecord DnsServer Function Add-DnsServerResourceRecordA DnsServer Function Add-DnsServerResourceRecordAAAA DnsServer Function Add-DnsServerResourceRecordCName DnsServer Function Add-DnsServerResourceRecordDnsKey DnsServer Function Add-DnsServerResourceRecordDS DnsServer Function Add-DnsServerResourceRecordMX DnsServer Function Add-DnsServerResourceRecordPtr DnsServer Function Add-DnsServerRootHint DnsServer Function Add-DnsServerSecondaryZone DnsServer Function Add-DnsServerSigningKey DnsServer Function Add-DnsServerStubZone DnsServer Function Add-DnsServerTrustAnchor DnsServer Function Add-DnsServerZoneDelegation DnsServer Function Clear-DnsServerCache DnsServer Function Clear-DnsServerStatistics DnsServer Function ConvertTo-DnsServerPrimaryZone DnsServer Function ConvertTo-DnsServerSecondaryZone DnsServer Function Disable-DnsServerSigningKeyRollover DnsServer Function Enable-DnsServerSigningKeyRollover DnsServer Function Export-DnsServerDnsSecPublicKey DnsServer Function Export-DnsServerZone DnsServer Function Get-DnsServer DnsServer Function Get-DnsServerCache DnsServer Function Get-DnsServerDiagnostics DnsServer Function Get-DnsServerDirectoryPartition DnsServer Function Get-DnsServerDnsSecZoneSetting DnsServer Function Get-DnsServerDsSetting DnsServer Function Get-DnsServerEDns DnsServer Function Get-DnsServerForwarder DnsServer Function Get-DnsServerGlobalNameZone DnsServer Function Get-DnsServerGlobalQueryBlockList DnsServer Function Get-DnsServerRecursion DnsServer Function Get-DnsServerResourceRecord DnsServer Function Get-DnsServerRootHint DnsServer Function Get-DnsServerScavenging DnsServer Function Get-DnsServerSetting DnsServer Function Get-DnsServerSigningKey DnsServer Function Get-DnsServerStatistics DnsServer Function Get-DnsServerTrustAnchor DnsServer Function Get-DnsServerTrustPoint DnsServer Function Get-DnsServerZone DnsServer Function Get-DnsServerZoneAging DnsServer Function Get-DnsServerZoneDelegation DnsServer Function Import-DnsServerResourceRecordDS DnsServer Function Import-DnsServerRootHint DnsServer Function Import-DnsServerTrustAnchor DnsServer Function Invoke-DnsServerSigningKeyRollover DnsServer Function Invoke-DnsServerZoneSign DnsServer Function Invoke-DnsServerZoneUnsign DnsServer Function Register-DnsServerDirectoryPartition DnsServer Function Remove-DnsServerDirectoryPartition DnsServer Function Remove-DnsServerForwarder DnsServer Function Remove-DnsServerResourceRecord DnsServer Function Remove-DnsServerRootHint DnsServer Function Remove-DnsServerSigningKey DnsServer Function Remove-DnsServerTrustAnchor DnsServer Function Remove-DnsServerZone DnsServer Function Remove-DnsServerZoneDelegation DnsServer Function Reset-DnsServerZoneKeyMasterRole DnsServer Function Restore-DnsServerPrimaryZone DnsServer Function Restore-DnsServerSecondaryZone DnsServer Function Resume-DnsServerZone DnsServer Function Set-DnsServer DnsServer Function Set-DnsServerCache DnsServer Function Set-DnsServerConditionalForwarderZone DnsServer Function Set-DnsServerDiagnostics DnsServer Function Set-DnsServerDnsSecZoneSetting DnsServer Function Set-DnsServerDsSetting DnsServer Function Set-DnsServerEDns DnsServer Function Set-DnsServerForwarder DnsServer Function Set-DnsServerGlobalNameZone DnsServer Function Set-DnsServerGlobalQueryBlockList DnsServer Function Set-DnsServerPrimaryZone DnsServer Function Set-DnsServerRecursion DnsServer Function Set-DnsServerResourceRecord DnsServer Function Set-DnsServerResourceRecordAging DnsServer Function Set-DnsServerRootHint DnsServer Function Set-DnsServerScavenging DnsServer Function Set-DnsServerSecondaryZone DnsServer Function Set-DnsServerSetting DnsServer Function Set-DnsServerSigningKey DnsServer Function Set-DnsServerStubZone DnsServer Function Set-DnsServerZoneAging DnsServer Function Set-DnsServerZoneDelegation DnsServer Function Show-DnsServerCache DnsServer Function Show-DnsServerKeyStorageProvider DnsServer Function Start-DnsServerScavenging DnsServer Function Start-DnsServerZoneTransfer DnsServer Function Step-DnsServerSigningKeyRollover DnsServer Function Suspend-DnsServerZone DnsServer Function Sync-DnsServerZone DnsServer Function Test-DnsServer DnsServer Function Test-DnsServerDnsSecZoneSetting DnsServer Function Unregister-DnsServerDirectoryPartition DnsServer Function Update-DnsServerTrustPoint DnsServer |
Команд достаточно много, для уточнения критериев возможно использовать сразу несколько параметров командлета. Давайте создадим новую зону. Для этого просмотрим все команды, которые работают с Зонами в DnsServer
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
PS C:\Users\pnck> Get-Command *Zone* -Module DnsServer CommandType Name ModuleName ----------- ---- ---------- Function Add-DnsServerConditionalForwarderZone DnsServer Function Add-DnsServerPrimaryZone DnsServer Function Add-DnsServerSecondaryZone DnsServer Function Add-DnsServerStubZone DnsServer Function Add-DnsServerZoneDelegation DnsServer Function ConvertTo-DnsServerPrimaryZone DnsServer Function ConvertTo-DnsServerSecondaryZone DnsServer Function Export-DnsServerZone DnsServer Function Get-DnsServerDnsSecZoneSetting DnsServer Function Get-DnsServerGlobalNameZone DnsServer Function Get-DnsServerZone DnsServer Function Get-DnsServerZoneAging DnsServer Function Get-DnsServerZoneDelegation DnsServer Function Invoke-DnsServerZoneSign DnsServer Function Invoke-DnsServerZoneUnsign DnsServer Function Remove-DnsServerZone DnsServer Function Remove-DnsServerZoneDelegation DnsServer Function Reset-DnsServerZoneKeyMasterRole DnsServer Function Restore-DnsServerPrimaryZone DnsServer Function Restore-DnsServerSecondaryZone DnsServer Function Resume-DnsServerZone DnsServer Function Set-DnsServerConditionalForwarderZone DnsServer Function Set-DnsServerDnsSecZoneSetting DnsServer Function Set-DnsServerGlobalNameZone DnsServer Function Set-DnsServerPrimaryZone DnsServer Function Set-DnsServerSecondaryZone DnsServer Function Set-DnsServerStubZone DnsServer Function Set-DnsServerZoneAging DnsServer Function Set-DnsServerZoneDelegation DnsServer Function Start-DnsServerZoneTransfer DnsServer Function Suspend-DnsServerZone DnsServer Function Sync-DnsServerZone DnsServer Function Test-DnsServerDnsSecZoneSetting DnsServer |
Логично предположить, что команда позволит создать новую основную зону называется Add-DnsServerPrimaryZone.
Справка
Но для того чтобы использовать ту или иную команду, необходимо знать, как ей пользоваться. В общем-то если вы даже не уверены в том, что выбранная команда вам подходит, вы всегда можете воспользоваться справкой. Для получения справки необходимо воспользоваться командой Get-Help, после которой указать имя интересующего вас командлета.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
PS C:\Windows\system32> Get-Help Add-DnsServerPrimaryZone ИМЯ Add-DnsServerPrimaryZone ОПИСАНИЕ Adds a primary zone to a DNS server. СИНТАКСИС Add-DnsServerPrimaryZone [-Name] <String> [-ReplicationScope] <String> [[-DirectoryPartitionNam e] <String>] [-AsJob] [-CimSession <CimSession[]>] [-ComputerName <String>] [-DynamicUpdate <St ring>] [-LoadExisting] [-PassThru] [-ResponsiblePerson <String>] [-ThrottleLimit <Int32>] [-Con firm] [-WhatIf] [<CommonParameters>] Add-DnsServerPrimaryZone [-AsJob] [-CimSession <CimSession[]>] [-ComputerName <String>] [-Dynam icUpdate <String>] [-LoadExisting] [-PassThru] [-ResponsiblePerson <String>] [-ThrottleLimit <I nt32>] -NetworkId <String> -ZoneFile <String> [-Confirm] [-WhatIf] [<CommonParameters>] Add-DnsServerPrimaryZone [-ReplicationScope] <String> [[-DirectoryPartitionName] <String>] [-As Job] [-CimSession <CimSession[]>] [-ComputerName <String>] [-DynamicUpdate <String>] [-LoadExis ting] [-PassThru] [-ResponsiblePerson <String>] [-ThrottleLimit <Int32>] -NetworkId <String> [- Confirm] [-WhatIf] [<CommonParameters>] Add-DnsServerPrimaryZone [-Name] <String> [-AsJob] [-CimSession <CimSession[]>] [-ComputerName <String>] [-DynamicUpdate <String>] [-LoadExisting] [-PassThru] [-ResponsiblePerson <String>] [ -ThrottleLimit <Int32>] -ZoneFile <String> [-Confirm] [-WhatIf] [<CommonParameters>] ОПИСАНИЕ The Add-DnsServerPrimaryZone cmdlet adds a specified primary zone on a Domain Name System (DNS) server. You can add an Active Directory-integrated forward lookup zone, an Active Directory-integrated reverse lookup zone, a file-backed forward lookup zone, or a file-backed reverse lookup zone. ССЫЛКИ ПО ТЕМЕ Online Version: http://go.microsoft.com/fwlink/?LinkId=288144 ConvertTo-DnsServerPrimaryZone Restore-DnsServerPrimaryZone Set-DnsServerPrimaryZone ЗАМЕЧАНИЯ Для просмотра примеров введите: "get-help Add-DnsServerPrimaryZone -examples". Для получения дополнительных сведений введите: "get-help Add-DnsServerPrimaryZone -detailed". Для получения технических сведений введите: "get-help Add-DnsServerPrimaryZone -full". Для получения справки в Интернете введите: "get-help Add-DnsServerPrimaryZone -online" |
Однако это лишь очень карткая справка. В ней вы найдете опсание команды и синтаксис. Для более подробной справки вы можете указать параметр ShowWindow командлета Get-Help
1 |
Get-Help Add-DnsServerPrimaryZone –ShowWindow |
После этого откроется отдельное окно со справкой по данному коммадлету.
Но обычно достаточно просто примеров для того чтобы понять как воспользоваться тем или иным командлетом. Параметр Examples командлета Get-Help отображает только примеры использования выбранного командлета.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
PS C:\Windows\system32> Get-Help Add-DnsServerPrimaryZone -Examples ИМЯ Add-DnsServerPrimaryZone ОПИСАНИЕ Adds a primary zone to a DNS server. Example 1: Create a primary zone PS C:\> Add-DnsServerPrimaryZone -Name "west01.contoso.com" -ReplicationScope "Forest" -PassThr u This command creates an Active Directory-integrated forward lookup zone called west01.contoso.c om with Forest-wide replication scope. Example 2: Create a file-backed primary zone PS C:\>Add-DnsServerPrimaryZone -Name "west02.contoso.com" -ZoneFile "west02.contoso.com.dns" This command creates a file-backed primary forward lookup zone called west02.contoso.com with t he specified DNS file. Example 3: Create a reverse lookup zone PS C:\>Add-DnsServerPrimaryZone -NetworkID "10.1.0.0/24" -ReplicationScope "Forest" ZoneName ZoneType IsAutoCreated IsDsIntegrated IsReverseLo okupZone IsSigned -------- -------- ------------- -------------- ----------- -------- -------- 1.10.in-addr.arpa Primary False True True False This command creates the Active Directory-integrated class C reverse lookup zone 0.1.10.in-addr .arpa with Forest-wide replication scope. Example 4: Create a file-backed reverse lookup zone PS C:\>Add-DnsServerPrimaryZone -NetworkID 10.3.0.0/24 -ZoneFile "0.3.10.in-addr.arpa.dns" This command creates the file-backed reverse lookup zone 0.3.10.in-addr.arpa. |
Как видно для данного командлета имеется четыре примера.
Использование команд
Безусловно в статье введение в PowerShell необходимо продемонстрировать каким именно образом использовать команды. Я бы очень рекомендовал вам ознакомиться с видео уроком PowerShell где это отображено более наглядно.
Мы определились с синтаксисом команды из справки или просто нашли команду в каком-то руководстве.
В нашем случае отлично подходит второй пример из спрвки. Т.к. на мой компьютер не является контроллером домена мы будем создавать основную зону DNS в файле.
1 |
PS C:\Windows\system32> Add-DnsServerPrimaryZone -Name "Get-PowerShell.ru" -ZoneFile "getpowershell.ru.dns" |
Не забывайте при этом использовать клавишу Tab при наборе командлета и его параметров. В данном примере я создаю зону Get-PowerShell.ru в файле getpowershell.ru.dns
Результат большинства командлетов по конфигурированию не выводится на экран. Поэтому при успешном выполнении вы получите приглашение командной строки для ввода следующей команды. Ну а если будет ошибка будет подробно описано в каком месте вы совершили ошибку.
Теперь нам нужно убедиться, что данная зона создана.
В большинстве случаев если вы определились с комадлетом для создания (изменения, просмотра) то существительное этого комадлета можно использоваться для просмотра, изменения, создания нужно просто поменять соответствующую глагольную часть на Get, Set, New соответственно.
Т.е. если, например, для просмотра профилей сетевых подключений вы использовали:
1 |
Get-NetConnectionProfile |
То для изменения вам достаточно поменять Get на Set, оставив существительное без изменения.
1 |
Set-NetConnectionProfile |
Но увы зоны DNS сервера этому правилу не сосуществуют. Поэтому для поиска команды которая выводит список зон, я снова мог воспользоваться команделтом Get-Command. Однако, я воспользовался перебором, используя клавишу Tab. Я набрал Get-DnsServer и щелкал клавишей Tab. Через несколько нажатий вывелась подходящая команда.
1 |
Get-DnsServerZone |
Далее я набрал дефис и начал нажимать клавишу Tab через некоторое количество нажатий у меня появился подходящий параметр ZoneName, после которого я указал название вновь созданной зоны.
1 2 3 4 5 6 |
PS C:\Windows\system32> Get-DnsServerZone -ZoneName "Get-PowerShell.ru" ZoneName ZoneType IsAutoCreated IsDsIntegrated IsReverseLookup Zone -------- -------- ------------- -------------- --------------- Get-PowerShell.ru Primary False False False |
Введение в PowerShell Pipeline или конвейер
Самое замечательное что PowerShell в качетсве результата командетов возвращает объекты. С которыми вы можете далее делать все возможные операции, например, изменение, удаление, фильтрацию. Для этого можно воспользоваться конвеером.
Конвейер или Pipeline это некая последовательность командлетов записанная в одной строке и выполняемая особым образом. Каждый командлет отделяется от другого вертикальной чертой. Команды в конвейере выполняются последовательно слева направо. После выполнения первой команды ее вывод направляется на ввод следующей.
1 |
Get-DnsServerZone -ZoneName 'get-powershell.ru' | Set-DnsServerPrimaryZone -DynamicUpdate none |
В данном примере информация о зоне Get-PowerShell.ru была передана на вход команды Set-DnsServerPrimaryZone и у нее было изменено свойство динамического обновления.
Один из наиболее часто встречающихся сценариев работы с конвейером, это когда вы первым командлетом получаете объект или список объектов, а второй командлет в конвейере позволяет модифицировать этот объект. В этом случае обычно существительные командлетов совпадает. Пример выше относится к этому случаю.
Еще один сценарий использования конвейеров, это когда первый командлет возвращает список объектов, а второй или его сортирует, или выводит особым образом, или фильтрует. В этом случае второй командлет может обрабатывать любые объекты PowerShell. Об этом варианте чуть ниже.
PowerShell ISE
PowerShell ISE – это среда разработки скриптов PowerShell. В ней реализован богатый функционал по созданию и отладке скриптов.
Фактически скрипт – это текстовый файл с разрешением ps1, в котором в каждой строчке записана команда PowerShell. Когда я писал статью Введение в PowerShell у меня не было цели научить писать скрипты, однако в моем блоге есть несколько статей про написание скриптов.
PowerShell ISE позволяет лишь ускорить, упростить процесс написания и отладки скрипта. ISE не обязателен к использованию.
Запустить PowerShell ISE можно из меню пуск или щелкнув правой кнопкой мыши по иконке PowerShell в панели задач.
В PowerShell ISE справа присутствует панель «Команды», которая позволяет не только быстро находить командлеты, но еще и в оконном режиме задавать их параметры.
Давайте попробуем найти команду, создающую записи для DNS зоны. Для этого в поле имя введем Recor.
Отобразиться список подходящих по критерию команд. Давайте добавим запись DNS, выбрав команду Add-DnsServerResourceRecord.
Далее нам нужно выбрать, запись типа A, ввести IP адрес, имя и зону.
Если нажать на кнопку «Вставить», то данные из окна преобразуются в команду PowerShell и команда вставляется рядом с курсором. У меня получилась данная команда:
1 |
Add-DnsServerResourceRecord -A -IPv4Address 127.0.0.2 -Name www -ZoneName get-powershell.ru |
Давайте посмотрим те записи, которые есть в DNS сервере. Для этого в области консоли в PowerShell ISE начинаем набирать Get-DnsServer и ждем.
Должно открыться контекстное меню со списком подходящих командлетов, если этого не произошло жмем Ctrl+Пробел.
Далее выбираем Get-DnsServerResourceRecord и нажимаем Enter. PowerShell запросит значение для обязательного, но не указанного параметра
Отображение результатов
После указания данного параметра выведется список ресурсных записей в указанной зоне.
1 2 3 4 5 6 7 8 9 10 |
PS C:\Windows\system32> Get-DnsServerResourceRecord Командлет Get-DnsServerResourceRecord в конвейере команд в позиции 1 Укажите значения для следующих параметров: ZoneName: get-powershell.ru HostName RecordType Timestamp TimeToLive RecordData -------- ---------- --------- ---------- ---------- @ NS 0 01:00:00 toshiba. @ SOA 0 01:00:00 [2][toshiba.][hostmaster.] www A 0 01:00:00 127.0.0.2 |
Иногда необходимо отображать не все записи, а только необходимые. Тут возможны два варианта. Использовать возможности фильтрации командлета возвращающего результат. Яркий пример такого способа это Get-ADUser и его параметр Filter. Второй способ предполагает использования конвейера. О нем и пойдет речь.
Out-GridView командлет, который отображает объекты в виде отдельного окна. Позволяя фильтровать и сортировать их в удобном оконном интерфейсе. Правда больше вы ничего с этими объектами сделать не сможете. Давайте применим данный командлет к нашему списку DNS записей.
1 |
PS C:\Windows\system32> Get-DnsServerResourceRecord -ZoneName get-powershell.ru | Out-GridView |
После чего мы видим отдельное окно.
Иногда приходится менять представление отображаемых объектов с табличного на список, со списка на табличный. Для этого можно использовать два командлета и их алиасы Format-List (fl) и Format-Table (ft). Я думаю примеров будет достаточно для понимания.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
PS C:\Windows\system32> Get-DnsServerResourceRecord -ZoneName 'get-powershell.ru' | Format-List DistinguishedName : @ HostName : @ RecordType : NS RecordClass : IN TimeToLive : 01:00:00 Timestamp : 0 RecordData : toshiba. DistinguishedName : @ HostName : @ RecordType : SOA RecordClass : IN TimeToLive : 01:00:00 Timestamp : 0 RecordData : [2][toshiba.][hostmaster.][1.00:00:00][01:00:00][00:15:00][00:10:00] DistinguishedName : www HostName : www RecordType : A RecordClass : IN TimeToLive : 01:00:00 Timestamp : 0 RecordData : 127.0.0.2 PS C:\Windows\system32> Get-DnsServerResourceRecord -ZoneName 'get-powershell.ru' | fl DistinguishedName : @ HostName : @ RecordType : NS RecordClass : IN TimeToLive : 01:00:00 Timestamp : 0 RecordData : toshiba. DistinguishedName : @ HostName : @ RecordType : SOA RecordClass : IN TimeToLive : 01:00:00 Timestamp : 0 RecordData : [2][toshiba.][hostmaster.][1.00:00:00][01:00:00][00:15:00][00:10:00] DistinguishedName : www HostName : www RecordType : A RecordClass : IN TimeToLive : 01:00:00 Timestamp : 0 RecordData : 127.0.0.2 PS C:\Windows\system32> Get-DnsServerResourceRecord -ZoneName 'get-powershell.ru' | Format-Table HostName RecordType Timestamp TimeToLive RecordData -------- ---------- --------- ---------- ---------- @ NS 0 01:00:00 toshiba. @ SOA 0 01:00:00 [2][toshiba.][hostmaster.] www A 0 01:00:00 127.0.0.2 PS C:\Windows\system32> Get-DnsServerResourceRecord -ZoneName 'get-powershell.ru' | ft HostName RecordType Timestamp TimeToLive RecordData -------- ---------- --------- ---------- ---------- @ NS 0 01:00:00 toshiba. @ SOA 0 01:00:00 [2][toshiba.][hostmaster.] www A 0 01:00:00 127.0.0.2 |
Для фильтрации можно использовать командлет Where-Object или его алиасы Where и “?”. В самом простом синтаксисе использования Where-Object необходимо указать свойство объекта, операцию сравнения и сравниваемое значение.
1 2 3 4 5 |
PS C:\Windows\system32> Get-DnsServerResourceRecord -ZoneName 'get-powershell.ru' | Where-Object RecordType -eq 'A' HostName RecordType Timestamp TimeToLive RecordData -------- ---------- --------- ---------- ---------- www A 0 01:00:00 127.0.0.2 |
Операции сравнения могут быть –eq (равно), -lt (меньше чем), -gt (больше чем), -like (сравнение со строкой) и другие.
Но иногда данного синтаксиса недостаточно и нужно использовать блок сравнения. Блок сравнения во многом похож на упрощенный вариант Where-Object, однако позволяет использовать несколько сравнений и более сложные регулярные выражения.
1 2 3 4 |
PS C:\Windows\system32> Get-DnsServerResourceRecord -ZoneName 'get-powershell.ru' | Where-Object {$_.RecordType -eq 'A'} HostName RecordType Timestamp TimeToLive RecordData -------- ---------- --------- ---------- ---------- www A 0 01:00:00 127.0.0.2 |
Здесь $_ — это текущий элемент массива поступившего на вход команды Where-Object. А $_.RecordType – свойство RecordType текущего элемента.
Безусловно в рамках статьи введение в PowerShell невозможно в полной мере описать данный синтаксис, хотя вы можете углубиться и изучить мою статью использование в PowerShell Where, Where-Object, ?.
И конечно с отфильтрованными данными вы можете производить различные действия. Изменять, редактировать, экспортировать и использовать для других задач. В данном примере запись удаляется.
1 |
PS C:\Windows\system32> Get-DnsServerResourceRecord -ZoneName 'get-powershell.ru' | Where-Object {$_.RecordType -eq 'A'} | Remove-DnsServerResourceRecord -ZoneName get-powershell.ru –Force |
Други, почему при использовании Get-DnsServerResourceRecord в Timestamp отображается 0, а не дата? Если использовать GUI для просмотра DNS записей, то явно видны дата и время…
Добрый день. Вообще TimeStamp отображается только для динамических записей. У меня в примере таких нет. Но я проверил на боевом сервере — там все отображается как в GUI так и в PowerShell.
Добрый день. Позволю вклиниться в стародавний диалог в коментах. На самом деле у статических записей, у которых в GUI стоит static в поле TimeStamp, Powershell по итогу выдаёт в поле TimeStamp 0. Долго думал как сделать выборку чтобы в неё вошли записи старше определённой даты, но туда попадали статические записи, удаление которых было не нужно. В итоге такое выражение работает : ?{$_.TimeStamp -lt ‘01.01.2020 00:00:00’ -and $_.TimeStamp -gt 0}