Skip to content
14.7.2017 / kaldy123

Nastavení ACL na souboru nebo adresáři v Powershell-u

Přiznávám bez mučení. Čerpal jsem z příspěvku:
https://chrisfederico.wordpress.com/2008/02/01/setting-acl-on-a-file-or-directory-in-powershell/
ale:

  1. Chci mít pojistku, že mi článek nezmizí (rády to dělají)
  2. Zkrátil jsem jej patřičně – jde mi o kuchařku
  3. Tady to celkem snadno najdu

Bez velkých řečí, zde je kód:

$acl = Get-Acl c:\temp
$permission = "domain\user","FullControl","Allow"
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule $permission
$acl.SetAccessRule($accessRule)
$acl | Set-Acl c:\temp

To je hezký, FullControl, ale co jiné permissions?
Prosím, zde jsou, jaxem je vypreparoval z chybových hlášek:

ListDirectory
ReadData
WriteData
CreateFiles
CreateDirectories
AppendData
ReadExtendedAttributes
WriteExtendedAttributes´
Traverse
ExecuteFile
DeleteSubdirectoriesAndFiles
ReadAttributes
WriteAttributes
Write
Delete
ReadPermissions
Read
ReadAndExecute´
Modify
ChangePermissions
TakeOwnership
Synchronize
FullControl

Složitý?
Prostě, jak řekla dáma (Grace Murray Hopper):
Je to dobrý nápad – prostě jděte a udělejte to. Je snažší prosit o odpuštění, než žádat o dovolení.

 

Advertisements
13.7.2017 / kaldy123

Nanoserver v roli File serveru.

Vytvoření nanoserveru je detailněji popsáno v článku Nanoserver v roli DNS. Rozdíl shledávám v použití jiného package:

New-NanoServerImage -MediaPath f:\ -BasePath .\base -TargetPath .\nanoVHD\nanoQuorum.vhd -ComputerName nanoQuorum -Package Microsoft-NanoServer-Storage-Package -DeploymentType Guest -Edition Standard

Nastavení IP adresy a připojení do domény – opět se pouze odvolám na článek o nanoserveru v roli DNS.  Zbývá nastavení DNS (viz Nastavení DNS v network konfiguraci nanoserveru) a nastavení rolí:

Enter-PSSession -ComputerName nanoQuorum -Credential domena\domainadmin
[nanoQuorum]: PS C:\Users\domainadmin\Documents> Get-WindowsOptionalFeature -Online

FeatureName : FileAndStorage-Services
State       : Enabled

FeatureName : Storage-Services
State       : Enabled

FeatureName : File-Services
State       : Disabled

FeatureName : CoreFileServer
State       : Disabled

FeatureName : Dedup-Core
State       : Disabled

FeatureName : Storage-Replica
State       : Disabled

FeatureName : Storage-Replica-AdminPack
State       : Disabled

FeatureName : MultipathIo
State       : Disabled

FeatureName : SmbWitness
State       : Disabled

FeatureName : WindowsStorageManagementService
State       : Disabled

[nanoQuorum]: PS C:\Users\domainadmin\Documents> Enable-WindowsOptionalFeature -FeatureName 'corefileserver' -Online -All

Path          :
Online        : True
RestartNeeded : False

[nanoQuorum]: PS C:\Users\domainadmin\Documents> Enable-WindowsOptionalFeature -FeatureName 'smbwitness' -Online -All

Path          :
Online        : True
RestartNeeded : False

[nanoQuorum]: PS C:\Users\domainadmin\Documents> Enable-WindowsOptionalFeature -FeatureName 'File-Services' -Online -All

Path          :
Online        : True
RestartNeeded : False

Nyní lze celkem v pohodě pracovat s File serverem standardním způsobem (samozřejmě pře PS remoting)

[nanoQuorum]: PS C:\Users\domainadmin\Documents> New-Item -Path c:\ -Name smbshare -Type Directory

    Directory: C:\

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       12.07.2017     23:54                smbshare

[nanoQuorum]: PS C:\Users\domainadmin\Documents> New-SmbShare -Name SmbShare -Path c:\smbshare

Name     ScopeName Path        Description
----     --------- ----        -----------
SmbShare *         c:\smbshare

[nanoQuorum]: PS C:\Users\domainadmin\Documents>

… a je hotovo!

P.S. Server se jmenuje nanoQuorum – a doopravdy, byl použit jako witness server pro Exchange DAG se dvěma servery. Proč jsem použil právě nanoserver? Paměť jsem mu přidělil dynamickou – a užití se drží na minimu 512MB…. a vhd disk má 594MB ! Takže virtuální hostitelé jej skoro necítí a live migration nebo quick migration jsou záležitostí uspokojivě krátkou. Další předností jsou neuvěřitelně rychlé starty a shutdowny – což oceníte při ladění…

15.6.2017 / kaldy123

Nastavení DNS v network konfiguraci nanoserveru.

Příznaky:

  1. nano server nemá konektivitu na DC
  2. nano server nemá konektivitu do internetu
  3. v error recovery konzole není nastavení DNS

Nezbývá tedy, než nastavit DNS přes PS remoting. A protože není spojení na DC (jak by bylo, když nanoserver neví, kde jsou DNS servery!) tak přes local administrátora:

$ip="172.16.38.99"
$user="$ip\administrator"
Enter-PSSession -ComputerName $ip -Credential $user
Get-NetAdapter

Poznamenejte si index vhodného síťového adaptéru, u VM nanoserveru bývá často 2

Set-DnsClientServerAddress -InterfaceIndex 2 -Server "172.38.66.10"
ipconfig /all
exit

Efekt je okamžitý: můžete sputit PS remoting std. způsobem:

Enter-PSSession -ComputerName nanoserver -Credential "adatum\administrator"
13.6.2017 / kaldy123

DHCP server security

Při instalaci DHCP role se na serverech W2008 and later vytvářejí AD DL skupiny DHCP Users a DHCP Administrators.

Aktivovat DHCP server mohou pouze členové Domain Admins.

Aktivovat DHCP pro child doménu mohou pouze členové Enterprise Admins.

Více na: https://technet.microsoft.com/en-us/library/dd759157(v=ws.11).aspx

8.3.2017 / kaldy123

Nano Server v roli DNS.

    • Jak vytvořit VHD:
    • Na pracovním počítači vytvoř složku, např. C:\NANO.
    • Do složky C:\NANO zkopíruj z instalačky z adresáře F:\NanoServer\NanoServerImageGenerator – nejlépe všechny skripty
    • Spusť Power Shell jako admin a změň adresář
      cd \nano
    • Importuj modul:
      Import-Module .\NanoServerImageGenerator.psm1
    • Spusť generaci VHD (ne VHDX !!)
      New-NanoServerImage -MediaPath F:\ -BasePath .\Base -TargetPath C:\VM\W2016nanoDNS\W20116nanoDNS.vhd -ComputerName W2016nanoDNS -Package Microsoft-NanoServer-DNS-Package -DeploymentType Guest -Edition Standard

      na výzvu doplň adminovo password – no pár minut to trvá! V různých návodech na internetu naleznete možná jinou syntaxi příkazu – lituji, mně to chodilo právě takto – po konzultaci s get-help a chybovými hláškami.

    • K vygenerovanému VHD (nikoliv VHDX!!) sestroj virtuální stroj, spusť a připoj si konzoli. Nemáš shell – takže ta konzole toho má ještě méně než SCONFIG od Core. Tam lze nastavit m.j. networking – ten se sejde např. pro remote server administration…
    • S výhodou pak lze použít PowerShell remoting:
      Set-Item WSMan:\localhost\Client\TrustedHosts "192.168.1.56"
      $ip = "192.168.1.56" 
      $user = “$ip\Administrator”
    • Zde zadrž!
      Než vstoupíme do vzdálené powershell relace, připravme si „blob“ pro připojení našeho serveru do domény:

      djoin /provision /domain mojedomena.cz /machine  W2016nanoDNS /savefile 'c:\nano\odjblob'

      a zkopírujme tento blob na nanoserver:

      $session=New-PSSession -ComputerName $ip -Credential $user
      Copy-Item -ToSession $session -Path 'c:\nano\odjblob' -Destination c:\ -Recurse -Verbose
    • Můžeme vstoupit do vzdálené relace a připojit server do domény:
      Enter-PSSession -ComputerName $ip -Credential $user
      djoin /requestodj /loadfile c:\odjblob /windowspath c:\windows /localos
    • Poté, co se příkaz úspěšně vykoná, nezbývá než restart…
      shutdown /r /t 2

      Ani nezkoušejte kontrolovat v Hyper-V manageru, jak ten restart proběhl – zpravidla to nestihnete. Je to rychlé.

Takže: máme nanoserver, ale DNS server to ještě stále není! I když máme nainstalovanou package Microsoft-NanoServer-DNS-Package. Udělejme si rychlý pohled:

$ip = "192.168.1.56" 
$user = “$ip\Administrator”
Enter-PSSession -ComputerName nanoDNS -Credential $user
Get-WindowsOptionalFeature -Online
FeatureName : DNS-Server-Full-Role
State       : Disabled

FeatureName : FileAndStorage-Services
State       : Enabled

FeatureName : Storage-Services
State       : Enabled

FeatureName : File-Services
State       : Disabled

FeatureName : CoreFileServer
State       : Disabled

FeatureName : Dedup-Core
State       : Disabled

FeatureName : Storage-Replica
State       : Disabled

FeatureName : Storage-Replica-AdminPack
State       : Disabled

FeatureName : MultipathIo
State       : Disabled

FeatureName : SmbWitness
State       : Disabled

FeatureName : WindowsStorageManagementService
State       : Disabled

Tož hupky-dupky enejblujme roli DNS-Server-Full-Role:

Enable-WindowsOptionalFeature -FeatureName dns-server-full-role -online
Path          :
Online        : True
RestartNeeded : False

Nyní nezbývá, než si vytvořený DNS nanoserver připojit do snapiny DNS (na stroji, který snapinu instalovanou má) – a pracovat.

Selbstverstandlich!
Nanoserver NEMÁ roli AD (jaro 2016) – ergo kladívko DNS je souborová, ergo kladívko má secondary zones (primary zones máte AD integrated, nicht wahr). Takže si nakonfigurujte zone-transfers. A chodí to jako z praku, klidně přes DNS snap-in (nainstalujte si RSAT). Oproti DNS-kám na bázi Linux-ů máte výhodu, že bez problémů nakonfigurujete i přenos zóny _msdcs, takže bez problémová je i spolupráce stanic s AD.

7.1.2017 / kaldy123

Restartuje službu!

To get xy function, restart the service! To je obvyklý, leč otravný imperativ na konci mnoha administrativních zákroků. Ačkoliv studentům na přednáškách tvrdím, že ad-hoc správa pomocí powershell je masochismus, v tomto případě musím ustoupit. Jednoduchý řádek je rychlejší, než:

  1. spustit snap-in services.msc
  2. upravit formát snap-inu mezi 27 aktuálními okny na obrazovce
  3. pracně vyhledat, jaxe ten zatracený service jmenuje
  4. kliknout pravým tlačítkem na servis
  5. kliknout levým tlačítkem na restart

… a vyčkat, než ta modrá čára doběhne nakonec (a nevypíše, že qůli bla-bla se spustit nemůže).

Jednoduše jsem to nevydržel a napsal:

PS C:\Windows\system32> get-service|where {$_.Name -like '*exch*is'} |Restart-Service
WARNING: Waiting for service 'Microsoft Exchange Information Store (MSExchangeIS)' to stop...
WARNING: Waiting for service 'Microsoft Exchange Information Store (MSExchangeIS)' to stop...
WARNING: Waiting for service 'Microsoft Exchange Information Store (MSExchangeIS)' to start...
WARNING: Waiting for service 'Microsoft Exchange Information Store (MSExchangeIS)' to start...
WARNING: Waiting for service 'Microsoft Exchange Information Store (MSExchangeIS)' to start...
PS C:\Windows\system32>

Proč xakru tak složitě?
Protože. Jsem starý sklerotik a nepamatuji si, jaxe servisy přesně jmenují. Jen jsem věděl, že se jedná o službu exchange information store. Takže než jsem napsal druhý operátor pipelajny s commandletem pro restart, trochu jsem si pofiltroval.

Proč xakru je za prvním pipelajnovým operátorem rozmáchlé where namísto jednoznačného otazníku?
Protože. Jsem starý sklerotik a nemohl jsem si v qaltu vzpomenout na ten pravý ořechový alias…

7.1.2017 / kaldy123

Přesun mailboxu.

Přesun mailboxu.
Přesouval jsem mailboxy. V grafickém/browser prostředí jsem sice neobdržel chybové hlášení, ale mailbox se nepřesunul.
Přešel jsem na powershelové ovládání Exchange. Mailboxy jsem přesunul – a také jsem zjistil, proč se mailboxy nepřesouvají. Proč nelze přesunout mailboxy do jiné databáze.

V příspěvku nic nevysvětluji, jen uvádím kopii obrazovky ve formátu, který by měl být kopírovatelný.

Show quick reference guide: QuickRef
Tip of the day #85:

Need to verify that an organization relationship is correctly configured and functioning as expected for a user in an ex
ternal Exchange organization? Just type:

Test-OrganizationRelationship -UserIdentity  -Identity  -Confirm

VERBOSE: Connecting to EX2016.kaldy.eu.
VERBOSE: Connected to EX2016.kaldy.eu.
[PS] C:\Windows\system32>Get-MailboxDatabase

Name                           Server          Recovery        ReplicationType
----                           ------          --------        ---------------
Mailbox Database 0524617733    EX2016          False           None
Mailbox Database 0767228600    EX2016-B        False           None


[PS] C:\Windows\system32>get-mailbox -Database "Mailbox Database 0767228600"

Name                      Alias                ServerName       ProhibitSendQuota
----                      -----                ----------       -----------------
sura                      sura                 ex2016-b         Unlimited
Alex xxxxx                alex                 ex2016-b         Unlimited
xxxxx Eva                 eva                  ex2016-b         Unlimited
DiscoverySearchMailbox... DiscoverySearchMa... ex2016-b         50 GB (53,687,091,200 bytes)


[PS] C:\Windows\system32>get-mailbox -Database "Mailbox Database 0524617733"
[PS] C:\Windows\system32>get-mailbox -Database "Mailbox Database 0767228600" -Arbitration

Name                      Alias                ServerName       ProhibitSendQuota
----                      -----                ----------       -----------------
SystemMailbox{bb558c35... SystemMailbox{bb5... ex2016-b         Unlimited
SystemMailbox{e0dc1c29... SystemMailbox{e0d... ex2016-b         Unlimited
Migration.8f3e7716-201... Migration.8f3e771... ex2016-b         300 MB (314,572,800 bytes)
FederatedEmail.4c1f4d8... FederatedEmail.4c... ex2016-b         1 MB (1,048,576 bytes)
SystemMailbox{1f05a927... SystemMailbox{1f0... ex2016-b         Unlimited


[PS] C:\Windows\system32>
[PS] C:\Windows\system32>get-mailbox -Database "Mailbox Database 0767228600"|New-MoveRequest -TargetDatabase "Mailbox Database 0524617733"-BatchName Presun_1

DisplayName               StatusDetail              TotalMailboxSize          TotalArchiveSize         PercentComplete
-----------               ------------              ----------------          ----------------         ---------------
sura                      WaitingForJobPickup       336.8 KB (344,884 bytes)                           0
Alex xxxxx                WaitingForJobPickup       337.7 MB (354,152,349 ...                          0
xxxxx Eva                 WaitingForJobPickup       367.1 KB (375,930 bytes)                           0
Discovery Search Mailbox  WaitingForJobPickup       52.68 KB (53,942 bytes)                            0


[PS] C:\Windows\system32>get-mailbox

Name                      Alias                ServerName       ProhibitSendQuota
----                      -----                ----------       -----------------
sura                      sura                 ex2016           Unlimited
xxxxx Eva                 eva                  ex2016           Unlimited
DiscoverySearchMailbox... DiscoverySearchMa... ex2016           50 GB (53,687,091,200 bytes)
Alex xxxxx                alex                 ex2016-b         Unlimited

[PS] C:\Windows\system32>get-mailbox

Name                      Alias                ServerName       ProhibitSendQuota
----                      -----                ----------       -----------------
sura                      sura                 ex2016           Unlimited
Alex xxxxx                alex                 ex2016           Unlimited
xxxxx Eva                 eva                  ex2016           Unlimited
DiscoverySearchMailbox... DiscoverySearchMa... ex2016           50 GB (53,687,091,200 bytes)

[PS] C:\Windows\system32>get-mailbox -Database "Mailbox Database 0767228600" -Arbitration |New-MoveRequest -TargetDatabase "Mailbox Database 0524617733"-BatchName Presun_1

DisplayName               StatusDetail              TotalMailboxSize          TotalArchiveSize         PercentComplete
-----------               ------------              ----------------          ----------------         ---------------
Microsoft Exchange        WaitingForJobPickup       430.2 KB (440,483 bytes)                           0
Microsoft Exchange        WaitingForJobPickup       265.6 KB (271,984 bytes)                           0
Microsoft Exchange Mig... WaitingForJobPickup       347.3 KB (355,620 bytes)                           0
Microsoft Exchange Fed... WaitingForJobPickup       51.01 KB (52,230 bytes)                            0
Microsoft Exchange App... WaitingForJobPickup       56.29 KB (57,646 bytes)                            0

[PS] C:\Windows\system32>Get-Mailbox -Arbitration

Name                      Alias                ServerName       ProhibitSendQuota
----                      -----                ----------       -----------------
SystemMailbox{bb558c35... SystemMailbox{bb5... ex2016           Unlimited
SystemMailbox{e0dc1c29... SystemMailbox{e0d... ex2016           Unlimited
Migration.8f3e7716-201... Migration.8f3e771... ex2016           300 MB (314,572,800 bytes)
FederatedEmail.4c1f4d8... FederatedEmail.4c... ex2016           1 MB (1,048,576 bytes)
SystemMailbox{1f05a927... SystemMailbox{1f0... ex2016           Unlimited


[PS] C:\Windows\system32>Get-MoveRequest

DisplayName                                    Status                    TargetDatabase
-----------                                    ------                    --------------
Microsoft Exchange                             Completed                 Mailbox Database 0524617733
sura                                           Completed                 Mailbox Database 0524617733
Alex xxxxx                                     Completed                 Mailbox Database 0524617733
xxxxx Eva                                      Completed                 Mailbox Database 0524617733
Microsoft Exchange                             Completed                 Mailbox Database 0524617733
Microsoft Exchange Migration                   Completed                 Mailbox Database 0524617733
Microsoft Exchange Federation Mailbox          Completed                 Mailbox Database 0524617733
Microsoft Exchange Approval Assistant          Completed                 Mailbox Database 0524617733
Discovery Search Mailbox                       Completed                 Mailbox Database 0524617733


[PS] C:\Windows\system32>Get-MoveRequest|Remove-MoveRequest

Confirm
Are you sure you want to perform this action?
Removing completed move request "Microsoft Exchange".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [?] Help (default is "Y"): a
[PS] C:\Windows\system32>

Na závěr si přece jenom neodpustím poznámku: Proč se mi tedy mailboxy nekopírovaly v grafickém prostředí? Odpověď je právě v posledním příkazu. Abyste mailbox úspěšně přesunuli, nemůže na něj existovat žádný move-request. A právě toto nejsnadněji ověříte jednoduchým commandletem
Get-MoveRequest

Howgh.