Azure Resource Manager is the "new" deployment model for all kinds of resources within Azure. The great thing about it is, that it works with template and parameter files, so we can easily prepare an environment and deploy it over and over again, with either the same or different parameters.
That's what the customer wanted to see and why I got do a demo on Azure in the first place. Cisco provides images in the Azure Marketplace (https://azure.microsoft.com/en-us/marketplace/) so that customers can run a fully featured IOS XE router in the cloud.
So as mentioned above, i wanted to demo the setup of a quick lab along with the CSR, having only the router and no endpoints to connect to, doesn't make to much sense. I used the Azure Resource Manager to create a new resource group and a new virtual network with two subnets. One of which would be CSR's "public" facing subnet (with a Public IP associated) the other one was my "backend" network for cloud workloads (without Public IPs). A Nano Server was quick to deploy and provided the "backend" for my lab.
I did use Visual Studio to modify and adapt the ARM template to my needs, but really any "json"-capable text editor/ISE can be used.
The template consists of two files, the template itself and a file for parameters. In my case, I did use the parameter file just for the passwords of the CSR and the Nano Server, the other parameters are assigned directly in the template file. There is room for improvement in this case, as the template would be more flexible if it had less "hardcoded" information.
The template specifies how the virtual network, subnets and eventually the CSR and Nano Servers should be deployed.
Once ready, the template can be be deployed to any Azure Subscription using a number of methods: One can deploy directly from Visual Studio or PowerShell or even from the cross-platform CLI on a Mac.
First, we have to create a Resource Group to which the template will be deployed:
$RGName = 'rg-tomt-lab'
$RGLocation = 'westeurope'
New-AzureRmResourceGroup -Name $RGName -Location $RGLocation
Then we prepare a variable which specifies the resource group, the template file and the parameters file.
$Params = @{
'ResourceGroupName' = $RGName;
'TemplateFile' = 'C:\azure\azure_arm_csr_nano_template.json';
'TemplateParameterFile' = 'C:\azure\azure_arm_csr_nano_parameters.json';
}
Using the Test-* cmdlet we can simulate deployment and verify that all checks out:
Test-AzureRmResourceGroupDeployment @Params -Verbose
And if everything looks good, we can go ahead and finally create the deployment:
New-AzureRmResourceGroupDeployment @Params -Verbose
Almost the same thing can be be done using the cross-platform CLI, which is what I use on my Mac.
Create a Resource Group:
azure group create -n rg-csr-lab -l "West Europe"
Deploy the template
azure group deployment create -f azure_arm_csr_nano_template.json -e azure_arm_csr_nano_parameters.json -g rg-csr-lab -n CSR01
Find the template, parameters file and more detailed information for deployment at my GitHub: https://github.com/tomtorggler/Azure
So, once the template is prepared, deployment is just a piece of cake! That’s how deploying labs just got a lot quicker, don’t you think?
Enjoy,
Tom
First of all we deploy the Veeam Direct Restore to Azure preconfigured VM from the Azure marketplace
When the VM starts up, we connect and have to specify some configuration parameter. We click on “Configuration”
Veeam asks us to specify the configuration File for the subscription
We can download the configuration file with the following lines of code
Now the Veeam Part in Azure is configured and ready to convert Veeam Backup files to Azure virtual machines.
We create a backup of a machine and upload the files to the Veeam virtual machine in Azure. After the files are available we start the restore process and specify the BackupFile:
We can choose which restore point we want to restore
After that we can select the region and size of the virtual machine
After we specified the Network and storage account the restore begins
After few minutes the machine is restored from a Veeam backup and available in Azure.
With Veeam Version 9.5 a direct restore to Azure with API and without a convert VM is also possible.
Stay tuned for Version 9.5
Greeting
dn
More information and the API documentation is available on the MSDN: https://msdn.microsoft.com/en-us/library/office/dn387071.aspx
The SDN Controller has to accept and process information coming from the LSM, Cisco has built this functionality into it’s Wireless LAN Controller software from 7.6. We used 8.2 in this example. First we need to define a port, protocol, and enable the “Lync Server” option globally. This can be done using the “Lync Server” option in the “Wireless” tab:
Now that the WLC listens for information, we’ll have to tell it, what to do with. Using the “WLANs” tab, we created a new SSID, enabled “Lync Server” and selected the appropriate QoS policy for each type of traffic:
A quick excerpt from “show wlan” shows the QoS settings:
Local Policy
----------------
Priority Policy Name
-------- ---------------Lync State ...................................... Enabled
Audio QoS Policy................................. Platinum
Video QoS Policy................................. Gold
App-Share QoS Policy............................. Silver
File Transfer QoS Policy......................... Bronze
Meanwhile, we’ve installed the Lync SDN Manager on a dedicated server, as it’s not recommended to run it on the Front Ends (and it didn’t work either). The LSM is configured through a configuration file “SDNManager.exe.config", which can be found in the LSM’s installation directory: “C:\Program Files\Microsoft Lync Server\Microsoft Lync SDN API\”
The configuration is quite simple, the value “submituri” specifies the WLCs IP Address and Port, additionally, the value for “backwardcompatibility” must be set to “true”:
<appSettings>
<add key="submituri" value="http://172.25.81.105:15120"/>
<add key="backwardcompatibility" value="true"/>
With the LSM configured, we installed the Dialog Listener on the Front End Server. During setup, we are asked for the “submituri” so we don’t even have to edit the config file in this case. Note that the submit URI for the LDL points to the LSM.
The configuration file for the LDL can be found here: "C:\Program Files\Microsoft Lync Server\Microsoft Lync SDN API\LyncDialogListener.exe.config"
<appSettings>
<add key="submituri" value="http://srv01.ccielab.local:9333/LDL/CallInfo"/>
Now we were ready for some testing and connected our clients to the new SSID. After signing into Lync and making some calls, we were able to verify that they appeared in the WLC’s “Monitoring” tab.
Using Wireshark, we were able to verify the DSCP values for incoming packets from the WLAN:
Last but not least, we had a look at the POST requests from the LSM to the WLC. As we are not using https, they are sent in clear-text and can be analyzed using Wireshark’s “Follow TCP stream” feature:
POST /LDL/CallInfo HTTP/1.1
Content-Type: text/xml
Accept: text/xml
Host: srv01.ccielab.local:9333
Content-Length: 2823
Expect: 100-continueHTTP/1.1 100 Continue
<LyncDiagnostics Version="1.0">
<ConnectionInfo>
<FrontEnd>s4b</FrontEnd>
<CallId>8a5ee59e7f24cc47a8a5e5ef5408164b</CallId>
<CSEQ>3</CSEQ>
<ConversationId>AdHItACZ40eYIzsElkmUXxEpJfdLYA==</ConversationId>
<TimeStamp>2016-06-17T16:36:16.0502033Z</TimeStamp>
</ConnectionInfo>
<StartOrUpdate Type="audio">
<From>
<Id>1c36b0157b</Id>
<EPId>591fcf6a94</EPId>
<URI>sip:9EDEEC6DC6AD3929EF68B672BCC8C2BB@ccielab.local</URI>
<IP>172.25.81.237</IP>
<Port>21448</Port>
</From>
<To>
<Id>94b8a54712</Id>
<EPId>213808492931</EPId>
<URI>sip:AA6B09353F1F13116DC23FFDDB2A407F@ccielab.local</URI>
<Contact>sip:AA6B09353F1F13116DC23FFDDB2A407F@ccielab.local;
opaque=user:epid:vaj8zwoldfc0zkl6hghhoaaa;gruu</Contact>
<IP>172.25.81.238</IP>
<Port>11616</Port>
</To>
<Properties>
<Protocol>UDP</Protocol>
<EstimatedBandwidth Codec="SIREN/16000">
<Low>52600</Low>
<High>68600</High>
</EstimatedBandwidth>
<EstimatedBandwidth Codec="PCMU/8000">
<Low>97000</Low>
<High>161000</High>
</EstimatedBandwidth>
<EstimatedBandwidth Codec="PCMA/8000">
<Low>97000</Low>
<High>161000</High>
</EstimatedBandwidth>
<EstimatedBandwidth Codec="RED/8000" />
<EstimatedBandwidth Codec="CN/8000" />
<EstimatedBandwidth Codec="CN/16000" />
<EstimatedBandwidth Codec="telephone-event/8000" />
</Properties>
</StartOrUpdate>…
<StartOrUpdate Type="video">
<From>
<Id>94b8a54712</Id>
<EPId>213808492931</EPId>
<URI>sip:AA6B09353F1F13116DC23FFDDB2A407F@ccielab.local</URI>
<IP>172.25.81.238</IP>
<Port>15150</Port>
</From>
<To>
<Id>1c36b0157b</Id>
<EPId>591fcf6a94</EPId>
<URI>sip:9EDEEC6DC6AD3929EF68B672BCC8C2BB@ccielab.local</URI>
<Contact>sip:9EDEEC6DC6AD3929EF68B672BCC8C2BB@ccielab.local;
opaque=user:epid:a_6tcapa01gtycf5ts8qnqaa;gruu</Contact>
<IP>172.25.81.237</IP>
<Port>6490</Port>
</To>
<Properties>
<Protocol>UDP</Protocol>
<EstimatedBandwidth Codec="x-rtvc1/90000">
<Low>460000</Low>
<High>2510000</High>
</EstimatedBandwidth>
</Properties>
</StartOrUpdate>
As you can see, the LSM uses simple http POST requests to send information to a network controller. The network controller just has to “listen” for such data and act on it.
This concludes our journey into the wireless network for today, hope you enjoyed it as much as I did :)
Many thanks to my colleague and fellow call-quality-optimizer KD!
Cheers,
Tom
First of all you have to access the Backup vault and download the Microsoft Azure Backup Agent.
Select a server in your organization that is domain joined where you want to install the Backup software. Before the server uploads the data to the backup vault it saves at least one copy to a local drive. Give the server an empty volume with some space.
At the end you pair the server with our backup vault with a vault credential file. The file can be downloaded from the backup vault. Specify a Passphrase to encrypt your backups.
The server is now registered in visible in the backup vault.
Prerequisites and a more detailed description can be found here: https://azure.microsoft.com/en-us/documentation/articles/backup-azure-microsoft-azure-backup/
The next step is to define a Backup plan for the servers we want to protect. This task is pretty straight forward, I explain only the most important parts:
We specify Disk and online protection. Disk protection represents the short term and online the long term protection.
We specify how much restore points we keep on local disk for short term protection
Next step is to define the online Backup schedule and retention policy. In this example we configure the schedule to upload restore points daily at 09:00 PM.
The Backup runs now everyday and uploads the restore point to the backup vault. If we want to restore data we can see where the server recovers them from:
Lets assume we backup our whole infrastructure with the Backup Server and upload the restore points to Azure. The local infrastructure isn’t available due to fire / server damage and we cannot access the backup server (and short term backups) anymore.
All of our backups are in the cloud and we want to restore the whole infrastructure.
It's a bit more complicated: To get access to the Azure Backups we have to install a Backup Server. To install the Backup Server we need a machine that's domain joined. Because of this prerequisites we have to follow some additional steps to recover the whole environment.
Here are the steps we have to do to get the full restore done:
Greetings
It would be about time for the next post in the series about hyper-converged-infrastructure with Nano Server. Over the past few days I deployed Nano on some real hardware and I can't wait to share my findings. But, unfortunately I'm facing a few issues, probably related to hardware, with the lab servers and I didn't have a lot of time to investigate further. As TP5 should be out any day now, I decided to wait for that before wasting too much time.
In the meantime I have started to move some of my PowerShell scripts to GitHub for source control and publish them to the PowerShell Gallery for easy installation. I thought it might be interesting to share my process, so here we go.
First of all, I’m not your typical developer, so I had a general idea about source control and I knew GitHub existed but never really used it, much less with PowerShell. The ongoing discussions about Continuous Integration and DevOps and what not, sparked my interest and so I decided to give it a try. The benefits of putting scripts under version control are obvious, the more you commit, the more history you get and the easier it gets to track code changes and errors. Additionally I really enjoy the community that has formed around PowerShell and publishing code to GitHub is one of many ways to contribute and give back to said community.
Should you like to get started with git and don’t now where to start, this article helped me a lot when setting it up on my machines.
And you can find my stuff at: https://github.com/tomtorggler
In case you didn’t know, Windows 10 (actually WMF5) comes with package management, yes that’s right, kind of like you know it from Linux or OSX. OneGet was introduced a while ago and eventually evolved into the PackageManagement module that is now included in WMF5. The PSGallery is already configured as a PackageSource and can therefore be used right away. Just try Find-Script or Find-Module and install whatever you find interesting with Install-Script or Install-Module. Now anyone can publish scripts to this PSGallery thing, which is exactly what I did with Invoke-SEFAUtil.ps1 and Restore-VMPermission.ps1.
Other Package Sources can obviously be added, find out more at: https://msdn.microsoft.com/en-us/powershell/wmf/oneget_cmdlets
Along with the move to GitHub I started to write some Unit Tests for my code. So what does that mean? Well I told you, I’m not your typical developer so I’m still figuring this thing out :) The basic idea of unit testing is to write additional code that tests your code automatically. So when you change something in a script, you run the tests and if everything is green, the script is ready to go into production.
Pester is a unit testing framework for PowerShell, that can be used to achieve exactly that. Once I have found out enough to explain it in a better way, there might be a dedicated post :)
With that, have a great weekend!
Tom
]]>When you open Azure Storage Explorer the first time the program asks for an subscription:
After you specify username and password you are able to see your storage accounts.
Within the explorer you can manage all of your Azure Storage Accounts, copy Blob containers, delete VHD’s or copy them to another location and much more:
Give it a try
Greetings
We are now going to Backup an Azure VM from the Web interface. First of all, you have to start a discovery search.
When the discovery search is completed you can select the VM you want to Backup.
Keep in mind: Today it’s not possible to Backup VM’s that's located on the Azure premium storage (SSD) or VM’s in created with the Resource Manager model.
The next step is to create a Backup policy. You can have a single policy that works for all servers or multiple policies with different settings regarding Backup Windows and retention period. This step should be known from other Backup solutions.
On the retention range page you specify how long protected VM’s are kept.
We have created the Backup policy and can now assign it to our VM.
From now a VM Backup will be started on a daily basis.
To restore a VM you basically highlight the VM in the Backup Vault and select the Restore function.
After you selected the restore point you want to restore, the wizard asks you some information. This step is important because you can specify the name and VNET the VM will belong to. Be careful to not place you restores VM in the same Network as the productive one as this is only a test.
A nice log shows the progress and result of the restore request.
When the restore is done a new VM with the specified name is visible in the Virtual Machine section of Azure. We can start this VM, restore our files or put the VM into production if this was a real restore.
Greetings ]]>
1. Direct Backup Azure VM to Backup Vault
2. Backup Applications like SQL, Sharepoint… and Files, System State through Microsoft Azure Backup Server
Today I will give you a short overview of the service.
- Backup Vault: First of all you have to create a Backup Vault (Thomas described this already in a former post)
- If you use Microsoft Azure Backup Server a Internet Connection is needed
The costs are counted by instance and space used. An instance is either a Azure VM Server using Backup Option 1 or a Server to Backup specified with Microsoft Azure Backup Server using Option 2. (Price table from 12.2015)
When you create the Backup Vault you can choose between LRS or GRS. This can only be specified at the beginning.
If you started already some Backups the GRS storage cannot be switched to LRS anymore. You have to recreate the backup vault.
For the Backup Data Azure Block Blob Storage is used. The costs can be seen from the following price table from 12.2015
In Part 2 I create a Backup Plan for some Azure VM’s and restore a Test-VM
Part 3 covers a OnPrem Backup using Option 2 with Microsoft Azure Backup Server. I make a full Backup and full restore assuming the VM’s don’t exist anymore.
Greetings
]]>When creating the Nano Server VHD files, I installed the Hyper-V role by selecting the –Compute parameter. As we have already created the cluster and the virtual disk, we could simply go ahead and create VMs now.
Before doing that, I wanted to configure the Hyper-V Servers to store VM configurations and VHD files on the Cluster Shared Volume and I created a virtual Switch that can be used by the VMs:
As you can see, I’m using the $cimSessions variable from part 1 again. This variable contains CIM Sessions to my four Nano Servers, so that the above lines do configure all servers at once. Here’s how I’ve created those sessions:
$cimSessions = New-CimSession -ComputerName n01,n02,n03,n04
Now we are ready to create the VMs and add them to the cluster. I copied the “win2012r2.vhdx” file over to the ClusterStorage and used this as a parent disk for my VMs:
That was pretty easy, so lets have a look at what our current environment looks like in the Failover Cluster Manager.
We see all the VMs that were added to the cluster and we can go ahead and move them around between nodes using the Failover Cluster Manager. The same goes for the “nodes”, we see all four Nano Servers participating in the cluster and we can control the nodes status:
In the storage folder of the FCM we see the virtual disk and some information about health status and capacity:
Ok, that is pretty basic stuff if you just look at the Hyper-V part. The interesting point however, is that those same servers do also provide the shared storage that the hypervisors use.
Stay tuned for more
Tom
]]>When creating the Nano Server vhd files, I did add the package for failover clustering by using the –Clustering parameter of New-NanoServerImage. So now that the servers are running, I can use remote server management tools or PowerShell to create a cluster.
But, before doing that, I went ahead and configured the second network adapter with static IP addressing. Remember that I created the Nano VMs with two network adapters, one connected to my lab network – where DHCP provides addressing – the other connected to an internal vSwitch, as it’ll be used for cluster communication only.
Before creating a cluster I run the “Cluster Validation Wizard” to make sure my configuration checks out. We could run that wizard using the GUI tools or using the following line of PowerShell:
Test-Cluster –Node n01,n02,n03,n04 –Include “Storage Spaces Direct”,Inventory,Network,”System Configuration”
Some summary information as well as the location of the html report will be printed to the screen. In the report we can actually see the results of the tests that were run. Problems are pointed out and some level of detail is provided.
The only warning I got was the following: Failed to get SCSI page 83h VPD descriptors for physical disk 2. This was because my VMs originally used the default “LSI Logic SAS” controller for the OS disk, while the additional, 100GB disks were connected to the SATA Controller. To fix this, I did connect the OS disk to the SATA Controller as well.
All green, so we can go ahead and create the cluster:
New-Cluster -Name hc01 -Node n01,n02,n03,n04 –NoStorage
This will create another html report at a temporary location, the path will again be printed to the screen. My cluster has an even number of nodes, so I decided to use a File Share Witness. Using the following commands, I created a quick share on my management server (tp4):
New-Item -ItemType Directory -Path c:\hc01witness
New-FileShare -Name hc01witness -RelativePathName hc01witness -SourceVolume (Get-Volume c) -FileServerFriendlyName tp4
Get-FileShare -Name hc01witness | Grant-FileShareAccess -AccountName everyone -AccessRight Full
After that, I used the following to update the cluster quorum configuration:
Set-ClusterQuorum -Cluster hc01 -FileShareWitness \\tp4.vdi.local\hc01witness
At this point, we have a running cluster and we can go ahead and configure storage spaces.
But again, before doing that, I want to point something out. If we open the Failover Cluster Manager at this point, we can connect to the cluster just as we are used to. If we expand the “Storage” folder in the newly created cluster, we can see there are no Disks, no Pools and no Enclosures present at this time.
Using the following command, I enabled storage spaces direct for the cluster:
Enable-ClusterS2D -S2DCacheMode Disabled -Cluster hc01
And using the following command, I create a new storage pool using the “Clustered Windows Storage” subsystem:
If we go back to the Failover Cluster Manager after the above steps, we can see that now there is a Pool as well as four Enclosures, one representing each server:
Ok, so far it is looking quite good, and we can go ahead an create a volume (or virtual disk):
Our new virtual disk will automatically be added to the Cluster Shared volumes, we can verify that using:
Get-ClusterSharedVolume -Cluster hc01
Alright, we are getting close. In the next post, we are going to configure the Hyper-V roles and create some virtual machines. Sounds great? Stay tuned :)
Cheers,
Tom
Within the Webinterface you can create folders and upload files
When you click on “Connect” you can get the commands to map the volume. Its basically a normal Network drive.
The access key can be taken from the Settings / Key section
If you execute the command or simply mount the network volume you have the Azure File Service connected as Volume.
Greetings
dn
Greetings
]]>I installed a Windows 2016 TP4 Server with full desktop experience that serves as DHCP, WDS and management machine. I’ll run all of the scripts from there, you might as well use Windows 10 for it. So the first step is to create a new image, which is really quite similar as described in the post mentioned above.
What’s different, is that I’m creating an image for each node and I’m using the DominBlobPath parameter, so before creating the images, I have to harvest the blobs using “djoin.exe”. My servers are going to be named n01 trough n04, so I’m using a little foreach loop to get all four blobs and build the four images:
As noted in the intro post to this series, I’m running the first version of this lab on virtual machines, as I’m using ESXi as hypervisor, I needed to add the OEMDrivers as well as drivers for vmxnet3 NICs to the image. Those vmxnet3 drivers are located at DriversPath. I do also add Compute, Storage and Clustering packages, as we need them to provide Hyper-V and Storage Spaces Direct.
Do note that the boot image needs to include drivers for vmxnet3 as well, they can be added using the WDS admin console quite easily.
Once the images are created, we need to import them into WDS.
Again, I’m going to use the foreach loop to import all VHD files as WDS install images:
Now we are ready to create the Nano Server VMs and deploy from WDS.
I create four VMs with the following specs on my lab ESXi host:
NumCPU = 2;
MemoryGB = 16;
DiskGB = 20;
DiskStorageFormat = 'Thin';
GuestID = 'windows9Server64Guest'
Then I remove the default NIC and add two of the Type 'vmxnet3' and make sure they are connected at startup. Finally, I add two hard disks to the VMs:
StorageFormat = 'Thin'
CapacityGB = 100;
DiskType = 'Flat'
Once again, please note that I had to use the SATA controller for these data disks, using default LSA or even the VMware paravirtual controllers, resulted in the following error in the Cluster Validation Wizard:
Disk partition style is GPT. Disk has a Microsoft Reserved Partition. Disk type is BASIC. The required inquiry data (SCSI page 83h VPD descriptor) was reported as not being supported.
Using a SATA controller, and attaching the hard disks to that controller, solved the problem.
To install the Nano Servers, all I need to do now, is to boot the VMs, press F12 and select the right image on the Windows Deployment Service. About a minute later my server is ready :)
Yes, I did also create the VMs with PowerShell, look for a post on that soon…ish.
Once the VMs are installed, I create a CIM session and test connectivity by getting the system uptime like this. As all commands above, these are issued on my management machine (tp4):
]]>Download the service pack 1 for WAC Server from this link: http://go.microsoft.com/fwlink/p/?LinkId=510097
Then extract the service pack using /extract to a folder on the disk. Like this:
wacserversp2013-kb2880558-fullfile-x64-glb.exe /extract:C:\temp\wacsp1
Now copy all the extracted files into the “updates” folder of the RTM install files. Once the updates are there, RTM setup works on 2012R2 and automatically installs SP1, too.
Note: Make sure to follow other requirements, as listed on TechNet
Enjoy, Tom
]]>Before we get started, my quick introduction to hyper-converged, just in case you’ve never heard about it. The basic idea is to bring storage closer to the CPU and so minimize delay. This is achieved by creating groups of servers with local discs and, through the magic of software, pool all the disks into volumes that span the entire group. Such a solution does offer some benefits when we think about scale: adding nodes to the cluster gives you more storage as well as more processor/memory capacity. Obviously we will also see some interesting problems introduced by the complexity of said solutions where troubleshooting will require a great deal of knowledge in multiple fields. While in the old days we had storage, network and compute as cleanly separated silos, hyper-convergence brings all of that together.
So, what I’m going to build and test in this lab is cluster of four Nano Servers running Storage Spaces Direct as well as Hyper-V. The local disks of all Nano Servers will be used to create a virtual disk, that will then be used to store the virtual machines.
In the first parts of the series I will build the solution using virtual machines, it’s all about proof-of-concept and learning the basics before getting access to lab equipment. Later I’d like to apply the topics and test the setup on actual hardware, measuring performance data and pulling some disks :)
The requirements for my lab are quite simple, I need an Active Directory domain, one 2016 TP4 Server where I can build and deploy the Nano Server images and later manage the cluster, and four VMs that will be running Nano Server.
I took to visio for a quick diagram, kindly think of the database symbols as disks:
So in the first post of the series, I’m going to build the Nano Server images and deploy them to my virtual machines using Windows Deployment Services.
so long,
Tom
]]>
I thought this would be a good opportunity to share some statistics of our blog. So a little more than a year ago, we moved to azure and cloudflare, I took the following numbers mostly from cloudflare.
We are blogging here since July 2009, that’s almost six and a half years or around 2350 days. wow.
In this time, we produced 250 posts, some in german, some in english. Even though there have been some times with lower activity, that’s still about one post every 10 days.
All of this started over a few beers, and neither of us would have thought that it might last this long. Yet here we are, making plans for 2016 and beyond.
Now according to cloudflare around 8000 unique visitors are stopping by our little site each month, around 300 every single day. Not really mind-blowing, but also not bad.
With that said, we’d like to wish all of you a happy new year and we do certainly hope to see you around.
Cheers, Tom
]]>So this is the first post published (and written) using the open-sourced version of Live Writer. I always liked Live Writer, so I am very happy to have it back. More info at Github: https://github.com/OpenLiveWriter/OpenLiveWriter
Another open source project I stumbled upon the other day is RackHD from EMC {code}. This comes a vendor independent management and orchestration solution for the datacenter. Now I know, that sounds a lot like everything and nothing but why not have a look: http://blog.emccode.com/2015/12/08/introducing-rackhd-automate-bare-metal/
This is especially awesome for the MAC users out there, as you no longer need a Windows VM to run the C# vSphere Client. So you simply install a VIB package on your ESXi (lab) servers and point your browser to https://hostname/ui to manage the host. More Info: https://labs.vmware.com/flings/esxi-embedded-host-client
Installation is simple and doesn’t require a reboot.
esxcli software vib install -v /tmp/esxui-signed.vib
The same is true for removal:
esxcli software vib remove -n esx-ui
And a quick look at what you’ll get.
Heard of SQLIO? Meet it’s sequel, DiskSpd. A handy little tool that generates synthetic workload to help asses storage performance. There is a good post on TechNet going into quite a bit of detail.
Get the tool and documentation in the TechNet Gallery.
Thats all for tonight, so long
Tom
]]>
Prepare
To join a domain we need the distinguished name of the organizational unit where we want the VCSA's computer object to be created, as well as an account with the required permissions to join a machine to the domain.
To get the DN use your tool of choice, like PowerShell:
Get-ADOrganizationalUnit -Filter {Name -like "servers"} | Select-Object -ExpandProperty DistinguishedName
Before joining the vCenter Server Appliance to the domain, make sure DNS is working perfectly, that includes reverse lookup.
Join
Now sign-in to the vCenter using the local SSO domain created during setup and go to Administration/System Configuration/Nodes. Select the VCSA from the list of Nodes and in the right pane, go to Manage/Active Directory and click the "Join" button on the right.
Specify the domain name and DN of the organizational unit as well as the credentials to use.
After joining the domain, a restart is required. To perform a restart, either use SSH or use the "Reboot" button in the "Actions" menu.
Once the VCSA is restarted we can see that a Computer object has been created in AD. Now we log-in again, still using the local account, and go to Administration/Configuration where we select "Identity Sources" in the right pane, using the "+" button, add a new Identity Source.
Configure Permissions
Once the Identity Source has been added, we can configure roles and permissions for AD accounts. This can be done using Administration/Global Permissions. Using the "+" button, we assign an AD user or group to a vCenter Role.
Alternatively, we can add AD users or groups to the preconfigured groups that can be found in the "Single Sign-On" section of the Administration menu.
Verify
Finally we can log-out of the local admin account and log-in using our AD user, which should be able to access resources, as specified by the assigned roles. Note: Users with no assigned roles will also be able to log-in, obviously they won't see any objects.
Troubleshoot
Now if some of the steps don't work, for example you cannot log-in or you cannot access AD users or groups in the configuration, double-check DNS and have a look at the following log files:
/var/log/vmware/sso/vmware-sts-idmd.log
/storage/log/vmware/sso/ssoAdminServer.log
I got "Cannot load the users for the selected domain" in the Web Client and found the following lines in the above mentioned logs:
Failed to get non-GC connection to domain
com.vmware.identity.idm.IDMException: Failed to establish server connection
]]>
Backup Agent
Die Wiederherstellung wird über den Azure Backup Agent gestartet, im ersten Schritt wählt man aus, welcher Server wiederhergestellt werden soll.
Anschließend werden die wiederherzustellenden Dateien über die Suche oder einen Filesystem Browser ausgewählt.
Wie üblich kann man die Dateien am ursprünglichen Ort wiederherstellen, oder einen anderen Pfad angeben. Außerdem kann ausgewählt werden, ob die Berechtigungen (ACL) wiederhergestellt werden sollen.
Nach der Bestätigung wird der Wiederherstellungsprozess gestartet, dieser wird auch im Azure Portal angezeigt und protokolliert.
Weitere Infos und Doku: https://azure.microsoft.com/en-us/documentation/services/backup/
]]>
Prepare
Nano Server is not installed like other editions of Windows Server, one has to build a customized image with the roles and packages one needs. This underscores the very nature of Nano Server, being a minimal install with minimal overhead.
Now to create this image we have to mount the Windows 2016 TP4 ISO on our workstation. In the NanoServer folder right at the root of the ISO, we find the .wim along with two PowerShell scripts. There is quite a detailed guide available on TechNet so I am not going into to much detail here:
First import the Module:
ipmo .\NanoServerImageGenerator.psm1
As I ran the New-NanoServerImage cmdlet before, it already converted the WIM to VHD (that's the VHD you'll find at the "BasePath") so I can omit "MediaPath" for subsequent runs and save a little time:
New-NanoServerImage -BasePath C:\nanotemp -TargetPath C:\Nano\Nano_dns.vhd -OEMDrivers -Packages Microsoft-NanoServer-DNS-Package -ComputerName nano_dns -DomainName tomt.it -Language en-us
Note: I had to specify the Language parameter as I my system is not using en-us. I am planning to run the VHD on VMware, that's why I included "OEMDrivers" and not "GuestDrivers".
WDS
The steps above created a VHD at the target path and in the next step I am adding this VHD as an install image to WDS:
I changed the name to avoid confusion :)
The same can be achieved using PowerShell:
Import-WdsInstallImage -Path C:\nano\Nano_dns.vhd -NewImageName "Nano_dns_10.0.10586"
That's basically it, now we have to create a new VM an pxe-boot from the WDS.
Install
I created a new VM using the "Windows 2016" template in Fusion, but before installing I reduced the size of the new virtual disk to 10G, which still is way to much ;)
Very few miutes later our new DNS server is ready.
There is nothing really to be done on the server console, the "Emergency Console" can be used to configure networking, the rest is done with RSAT or PowerShell remoting.
DNS
To test the functionality of my newest Nano Server, I actually set up DNS:
So first of all, using Get-WindowsFeature I checked which features were installed and which ones were available. As you can see from the screenshot, there are not very many features available:
Using the following command, I installed DNS Server role:
Add-WindowsFeature -ComputerName nano_dns -Name DNS
After that, I was able to add the Server to the DNS Management console and configure DNS zones:
Oh, and of those of you who care, the size of the virtual harddisk is 626,6MB. Awesome, right? :)
Enjoy, Tom
]]>The latest preview of Windows Server 2016 has been released, it brings many new features including options for Containers and Nano Server.
Download it from the Evaluation Center: http://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-technical-preview
Aka. Threshold 2 was released, pulled, and re-released, apparently because of some privacy settings. Windows Insiders got it a little earlier and so it landed on my Surface Pro 3. It leaves much more of a stable impression than "RTM" and fixed most of the problems I had.
Yes, that's right, some folks at Microsoft heard the calls and started a project on GitHub, aiming to bring OpenSSH to the Windows-world. The wiki page at GitHub has some info about installing, which is quite simple:
Once downloaded, run the following commands from an administrative PowerShell:
Expand-Archive .\OpenSSH-Win32.zip
cd .\OpenSSH-Win32\OpenSSH-Win32\
.\ssh-keygen.exe -t ecdsa -f ssh_host_ecdsa_key
.\sshd.exe install
Start-Service sshd
And don't forget to create a firewall rule:
New-NetFirewallRule -Protocol TCP -LocalPort 22 -Direction Inbound -Action Allow -DisplayName SSH
Then I was able to connect from my MacBook:
Find more info, a wiki and the download over at GitHub: https://github.com/PowerShell/Win32-OpenSSH
A free, cross platform code editor with interesting language support.
Have fun,
Tom
]]>I deployed a vCenter Server Appliance in a new environment the other day, and thought it might be a good starting point.
You may have heard that VMware want’s to ditch the good ol’ vSphere client and switch to a Web Client kind of a thing, this has been going on for a while, but in every release they are getting more serious about it. New features almost always come “web only”. Unfortunately they decided to make this a flash-based client, yeah, it’s almost as bad as java, but that’s another story.
So get yourself a machine with a web browser and install/enable the flash plugin. I had troubles with Safari, Chrome and IE11 so I ended up using Firefox (think about that for a sec…).
Download the VCSA from vmware.com, it comes as an ISO image that you will have to mount on your management machine. The idea is, basically, to use a website to deploy an OVF template to one of your vSphere hosts.
Inside the ISO you’ll find the Web Client Plugin, which is required to deploy the OVF template, it’s located at: \vcsa\VMware-ClientIntegrationPlugin-6.0.0.exe
Once the Client Plugin has been installed, open the \vcsa-setup.html file and follow the wizard.
Most steps are straightforward, first select the target ESXi host and configure the VM name and a password for the root account.
Then select how the Platform Services Controller is deployed. As far a I know, this is a new role in vCenter 6, which controls Licensing, SSO and Certificates. I selected to deploy an embedded PSC.
The next step is to configure Single Sign-On. In my case I created a new SSO domain, as this was the first vCenter Server in the environment. Remember the “SSO Domain name” you use, it will be required to log on later. The SSO domain name must be different than the Active Directory domain name.
Note: Make sure to check documentation when upgrading an existing vCenter, as the SSO configuration has changed quite a bit.
Select an appliance size and which datastore to use for the VCSA appliance.
Finally you can configure network settings. When entering a FQDN for the vCenter appliance, make sure it is already configured in DNS and the VCSA can reach the DNS server you specify. Deployment will fail if DNS doesn’t check out. As I had no NTP Server handy, I selected to synchronise the VCSA’s time with the ESXi host. And no, I would not recommend this.
Now after the deployment of the OVF finishes, we should be able to logon to the vSphere Web Client using a browser, or to the classic vSphere Client installed on Windows. Make sure to logon using the administrator@ssodomain account, you wont be able to do much configuration as root!
Stay tuned for more :)
Tom
Citrix documentation: NetScaler as ADFS Proxy Deployment Guide - Citrix
Blogs: http://blogs.citrix.com/2015/05/29/adfs-v3-on-windows-server-2012-r2-with-netscaler/, http://cividan.blogspot.it/2015/02/use-citrix-netscaler-as-replacement-for.html
So I searched a way to:
- Publish ADFS to the Internet with URL filter
- Do not pre-authenticate with Netscaler (Customizing multiple pre-authentication Websites can be very time consuming per tenant)
- Modify the Header that ADFS server understands the request comes from external
There was no blog post that explained the whole configuration, so I decided to write down the required steps:
1. The service
First create the service and specify to forward the Client IP (Header: X-MS-Forwarded-Client-IP)
2. The vServer
Create the vServer not directly addressable to not trash an IP address and bind the certificate
3. Content switch policy
Create a content switch policy to forward only /adfs and the exact hostname to the vServer
4. Content Switch vServer
Create the content switch vServer and apply the content switch policy
5. Rewrite Actions
You want to let the ADFS know that the request comes from extranet. So you can apply different authentication methods in the different zones. You have to add the header X-MS-Proxy to the request. Therefore you create a rewrite action
Create also a rewrite action to rewrite URL /mex
6. Rewrite Policy
7. Bind the Policies
Now bind the policies to the vServer. Both are rewrite policies for requests. Be careful with the GoTo expression to the Header transformation, this must be “NEXT”
8. The Monitor
ADFS has a probe check build in. If you check /adfs/probe you get a 200 message if everything is OK. Create the monitor and add it to the service
Netscaler configuration is done. You can test now the authentication if you access the URL https://portal.office.com through Netscaler. Then you will be redirected to the ADFS website for authentication:
For internal requests use split DNS to forward the authentication directly to the ADFS server and not to the Netscaler ADFS proxy. So the Proxy Header is missing and your client will use internal authentication.
Stay tuned for my post series about configuring Exchange in Hybrid mode with Office 365.
Greetings
ND
Mit Azure Backup gibt es dazu auch die Möglichkeit einzelne Server, Clients oder nur bestimmte Daten in die Cloud zu sichern. So kann jeder an den Luxus eines off-site Backups kommen. Im folgenden Beispiel konfiguriere ich Azure Backup für meinen Windows 10 Client.
Backup Vault
Als Grundvoraussetzung benötigt man natürlich eine Azure Subscription, hier kann man sich das Ganze im Free Trial anschauen: https://azure.microsoft.com/en-us/pricing/free-trial/
In der Subscription wird ein Backup Vault benötigt, dort werden die Backups gespeichert. Um ein Backup Vault zu erstellen, ist nach wie vor das "alte" Management Portal nötig, dieses erreicht man über: https://manage.windowsazure.com
Unter New, Data Services, Recovery Services erstellt man das Backup Vault.
Einmal angelegt muss man nur noch die "Vault credentials" herunterladen, diese findet man im Dashboard des neu angelegten Vaults.
Backup Agent
Der Backup Agent wird auf dem Client/Server installiert, welcher in das Azure Backup Vault gesichert werden soll. Der aktuelle Backup Agent kann hier heruntergeladen werden: http://aka.ms/azurebackup_agent
Einmal installiert, kann man die lokale Maschine über "Register Server" hinzufügen, in dem Wizard werden die "Vault Credentials" importiert. Diese verwendet der Agent um das Vault zu finden und sich zu authentifizieren.
Die Daten werden lokal verschlüsselt und über eine https Verbindung übertragen. Der Benutzer erstellt ein Kennwort für diese Verschlüsselung, die auch in der Cloud erhalten bleibt (at rest). Das Kennwort wird in einer Textdatei gespeichert und sollte sicher aufbewahrt werden.
Sobald der Client/Server registriert wurde, kann man das Backup konfigurieren. Im ersten Schritt wählt man die Daten aus, welche gesichert werden sollen.
Dann gibt man unter Backup Schedule and Retention Policy an, wann Backups erstellt werden sollen und wie diese aufbewahrt werden.
That's it. Das Backup kann mit Backup Now gestartet werden, oder man wartet bis der geplante Task das erledigt.
Kosten
Die Kosten für das Backup Vault können unter folgendem Link nachgelesen werden:
]]>Well yes, I am switching to OSX on my work machine. I'm still using my Surface Pro 3 at home and for meetings, but my primary work computer will be a 13" MacBook Pro from now on. As I had no experience whatsoever working with OSX, here are my notes on getting started:
Get OneNote
One of the most important productivity tools, for me, is OneNote. Everything from screenshots, recipes, drafts, ideas, writing, learning, to meeting notes goes there. I am simply not functional without it :) so just go to onenote.com and grab the latest version. It's free, too.
Get Brew and Cask
A package manager for OSX, once installed you can easily install packages (including dependencies) just like this:
$ brew search nmap
$ brew install nmap
And, importantly, updating packages is straightforward to. No more updating all individual applications, just run (Caution: this will update all packages!):
$ brew update && brew upgrade
Simple as that. Cask extends brew, and brings along many more packages.
Keyboard shortcuts
This was really important for me, as I am using keyboard shortcuts a lot on windows. There is a good list of possible shortcuts at apple.com.
Another important part, at least for me, in getting around in OSX are trackpad gestures. The most important can be found in the Trackpad section of "System Preferences".
Python
There's no PowerShell on the Mac. Bummer. I decided to look into Python and found a couple good sites for beginners.
More tools...
I use KeePass on my Windows machines, a lot. There are multiple possible solutions on OSX, the one that worked best for me is MacPass. It opens kdbx files and there is an autotype feature.
As I work a lot with console/command-line tools, a decent terminal emulator is key. A colleague pointed me to iTerm2, and I love it :)
Atom is a great, customizable text editor.
What else?
Am I missing something, do you have any suggestions? Comments are highly appreciated :)
Links
OneNote: http://onenote.com
Homebrew: http://brew.sh
Homebrew Cask: http://caskroom.io/
Keyboard Shortcuts: https://support.apple.com/en-us/HT201236
Learn Python the hard way: http://learnpythonthehardway.org/book/
Coursera: https://www.coursera.org/course/pythonlearn
Python: https://docs.python.org/2/library/index.html
MacPass: http://mstarke.github.io/MacPass/
iTerm2: http://iterm2.com
Atom: https://atom.io
Der Ruf der Heimat (=Berge) wurde mit der Zeit immer lauter und so entschied ich mich Anfang des Jahres, wieder nach Südtirol zu gehen. Nachdem ich den Sommer für persönliche und kulturelle Weiterbildung (und viel Urlaub) genutzt habe, geht es für mich nun auch beruflich wieder weiter. Ich bleibe dem Leben als Dienstleister treu, freue mich aber sehr in einen neuen Bereich einzusteigen und somit meinen Horizont zu erweitern. In nächster Zeit geht es für mich weg von UC und hin zu Datacenter, Netzwerk und Storage.
Hier im Blog möchte ich, soweit es die Zeit zulässt, weiterhin aus der Praxis erzählen.
Bis bald!
Tom
]]>1. Fix wrong aliases
If you have mail enabled folders with aliases containing special characters like spaces or “@” you get an error when you start the first migration part and Exchange wants to create the hierarchy.You can enumerate mailbox folders with, for example, spaces in aliases with the following query:
Get-MailPublicFolder | where{$_.Name -match " "}
If you have just less than 10 folders to fix you can do it manually. But if you have more than 50 to correct you can use the script written by Johan Veldhuis (http://www.johanveldhuis.nl/tools/scripts/fix-aliasv20.ps1)
2. Set the storage quota for the public folder mailboxes on 2013 to unlimited
During migration, I recommend to set the storage quota for the public folder mailboxes to unlimited. I saw very strange problems with hierarchies on 2013 not comparing to 2010 if a folder is over quota. You can change the storage limit after migration is done.
3. Set the legacy public folder – folder quota to unlimited
During migration I had some problems with mail enabled public folders. On the 2010 side the PF are mail enabled, on the 2013 not all PF’s are mail enabled but the PF’s are able to receive mails. You cannot manage the folders with EAC or porwershell. In my case, this problem was related to a PF quota set on a folder. I have many folders with content that reached the maximum limit. For all of these folders the mail enabled option was not enabled after migration. I recommend setting the PF Quota on PF Database basis to unlimited before migration. Please keep in mind to set the quota for all folders to “use database defaults”. You can do this with the following line of powershell:
Get-PublicFolder -Recurse | where{$_.UseDatabaseQuotaDefaults -eq $false} | Set-PublicFolder -UseDatabaseQuotaDefaults $true
Adjust the new storage quotas later on a mailbox basis.
Greeting
dn
With Windows 7 / Server 2008R2 and newer versions a cool feature has been added to netsh: the possibility to capture network traces without the need to install any third party software.
All you need to do is to start an elevated command prompt (run as Admin) and type the following command:
netsh trace start capture=yes
Then do the stuff you want to capture and stop the trace by using:
netsh trace stop
An .etl trace will be generated and the file path is displayed.
Note: if you use the persistent=yes parameter when starting the trace, you can even trace system reboots.
So NetMon has been around for a while and IT pros around the world still love it, well at least I do ;) Some time ago, Microsoft introduced its successor, a tool by the name of “Message Analyzer”. This tool can to a lot more than just network traces, find some information on the MessageAnalyzer Blog.
So I just captured a trace using netsh, copied the .etl file to my machine and then opened it in Message Analyzer. As you can see in the screenshot, the layout is quite a bit different from what we’re used from NetMon but the important things are still there.
Filtering is quite intuitive, either write an expression into the text box at the right-hand side, or load a filter from the library. Alternatively, just right-click a property of a packet and select “Add to Filter”
Well that’s about all I know about Message Analyzer for now. I was able to verify that packets got tagged with the DSCP values I expected and I did not have to install additional software to capture a trace.
Happy tracing,
Tom
]]>
Phew. I don’t like bullet lists… Whatever, with those in mind you should be able to plan your remote access strategy :)
Tom
]]>Are you trying to install the Windows Management Framework 5 Preview, to get all the new PowerShell stuff, and see an error like this one?
"The update is not applicable to your computer"
This preview actually requires the system local to be set to "en-US", you can easily check this using Get-Host within PowerShell:
In my example, the CurrentUICulture was set to "en-GB" and, apparently, that's why the update failed to install. Once I changed my regional settings and downloaded the "en-US" language pack, the update installed just fine.
In case you haven’t heard of the preview as of yet, you can grab it here: http://www.microsoft.com/en-us/download/details.aspx?id=44070
The issue is also listed in Connect: https://connect.microsoft.com/PowerShell/feedback/details/877188/update-is-not-applicable-to-your-computer-windows-management-framework-5-0-preview-may-2014
Have fun,
Tom
Nach ersten erfolgreichen Tests, wollte ich dann doch mein Notebook mal mit Windows 10 booten, also habe ich mit “bcdedit” einen neuen Eintrag im Bootloader erstellt und die virtual Hard Disk der Windows 10 VM als “device” und “osdevice” angegeben.
Wichtig: Vor einer Änderung sollte man die aktuelle Konfiguration immer sichern:
bcdedit /export "C:\Users\thomas\Documents\bcdedit"
Dieser Befehl kopiert den Boot Configuration Eintrag für das aktuelle Betriebssystem. Der neue Eintrag erhält eine eigene GUID, diese wird gleich ausgegeben und wird in den darauffolgenden Befehlen verwendet.
bcdedit /copy {default} /d "Win10 Preview”
Mit folgenden Befehlen werden die Einstellungen für den neuen Eintrag angepasst, die virtuelle Festplatte der Windows 10 VM wird als “device” konfiguriert, die GUID des oben erstellten Eintrags muss verwendet werden:
bcdedit /set {<new-GUID>} device vhd=[C:]\temp\win10_preview.vhdx
bcdedit /set {<new-GUID>} osdevice vhd=[C:]\temp\win10_preview.vhdx
bcdedit /set {<new-GUID>} detecthal on
Wenn das Notebook jetzt neu gestartet wird, kann ich im Bootloader zwischen Windows 8.1 und der Tech Preview von Windows 10 wählen. Auch die virtuelle Maschine kann nach wie vor verwendet werden.
Viel Spaß,
Tom
Some days ago, on September 30, @tmyerson and @joebelfiore introduced Windows 10 and announced the availability of a Technical Preview. The announcement and some demos are on YouTube. Some interesting new features such as snap for 4 windows and continuum, which switches between the start menu and the start screen based on whether or not a keyboard is connected, are coming to Windows 10.
The preview can be downloaded at: http://windows.microsoft.com/en-us/windows/preview
Along with the tech preview of Windows 10 came the preview for the next version of Windows Server. A ton of new features will come to the next gen server OS, a notable one might be the SDN controller role, which provides a interface between higher layer applications (think SCVMM) and the software defined networking stack in Windows.
The preview for Windows Server can be downloaded at: http://technet.microsoft.com/evalcenter/dn781243
The long rumored and previously shown “Office Graph” aka “Oslo” has started rolling out to Office 365 customers under the new name: “Office Delve”.
To get a chance to test new features before regular users get them, one needs to enable “First Release” in the Office 365 Admin Center.
Another addition to the Office family, by the name of “Sway”, started a limited preview a couple of days ago. More information and some demos can be found here: https://sway.com/
After signing up some time ago, I finally received an invite for https://keybase.io. Keybase is an interesting approach to make public key cryptography more accessible to users, among many other features it provides a simple way of finding someone’s public key, based on their social media and web identities, in order to be able to encrypt messages for them. It is available as a command-line tool but the website works as client, too.
View my publicly-auditable identity here: https://keybase.io/tomt
So long,
Tom
The shutdown is initiated with the “-RunAsynchronously“ switch so that the Powershell command does not wait until the vm is powered off. Immediately after sending the shutdown command a “do while” loop begins to work and waits until one of the machines is powered off. If a machine is switched off the loop powers the VM machine on. The loop ends when all machines are started up.
As I have also a VMWare vCenter connected in SCVMM I only touch VM machines with a filter: VirtualizationPlatform = “HyperV”
# Import Module
Import-Module -Name "virtualmachinemanager"
# Clear Variables
[String[]] $VMsToStart = $Null
# Get List of VM's to reboot
$VMsToReboot = Get-Content "C:\Program Files\Scripts\ServerList.txt"
# Shutdown each VM
Foreach($VMToShutdown in $VMsToReboot){
$VMToShutdownObject = Get-SCVirtualMachine $VMToShutdown
If ($VMToShutdownObject -ne $Null){
If($VMToShutdownObject.VirtualizationPlatform -eq "HyperV" -and $VMToShutdownObject.VirtualMachineState -eq "Running"){
Shutdown-VM -VM $VMToShutdownObject -RunAsynchronously
$VMsToStart += $VMToShutdown
}
}Else{
Write-Verbose ("Machine " + $VMToShutdown + " not found")
}
}
# Start each VM after graceful shutdown
Do{
ForEach($VMToStart in $VMsToStart){
$VMToStartObject = Get-SCVirtualMachine $VMToStart
If($VMToStartObject.VirtualMachineState -eq "PowerOff"){
Start-VM -VM $VMToStartObject -RunAsynchronously
$VMsToStart = $VMsToStart | ? {$_ -ne $VMToStart}
}
}
}while($VMsToStart.Count -ne 0)
The customer runs multiple Lync 2013 Front End Servers in an enterprise pool with the backend and monitoring databases being hosted on a SQL 2008R2 Cluster (default instance) that is also used for other applications and, thus, uses mixed authentication mode.
A SQL admin was present during the initial installation of the Lync Pool, and his credentials were used to perform the DB installation.
So far so good, but when the SQL admin was gone and the Lync Admins (members of RTCUniversalServerAdmins) tried to access the databases with cmdlets like Test-CsDatabase, Update-CsAdderssbook or Install-CsDatabase, they got a nasty little error like:
Command execution failed: Property DefaultSchema is not available for Database '[LcsCDR]'. This property may not exist for this object, or may not be retrievable due to insufficient access rights.
We verified the Logins and permissions on the SQL cluster and everything looked OK, meaning the logins and permissions for all the RTCUniversal… groups were there, just as expected. Still, the error would not go away.
The problem seems to be, that Active Directory groups cannot be used with mixed mode authentication??
The only solution we found, was to add the user account of the Lync Admin as a login on the SQL cluster and assign permissions directly to the user. Once the user was granted permissions directly (and not through an AD group membership), the error disappeared and the cmdlets worked just fine. This, by the way, explains why the initial setup worked just fine: The SQL admin, whose account was used during setup, had a login and permissions configured for his AD user.
The solution is OK for a temporary workaround, but is not very feasible for an enterprise deployment. If anyone has a better solution, I’d love to hear from you :)
Cheers,
Tom
So after testing out various platforms and providers Daniel and I decided to move the blog to Windows Azure. It’s simple, up to date and the new “shared infrastructure” pricing tier is not to expensive, either. We are now in control of the DNS zone and use CloudFlare to improve the sites performance and easily enable IPv6.
As you may already have noticed, we took advantage of Azure’s up-to-date hosting platform to migrate to the latest version of the .NET blog engine.
We hope you enjoy the new design as much as we do and continue to find our postings helpful and interesting :)
Cheers!
Tom
]]>In some call-forwarding scenarios no audio connection could be established, a debug trace on the gateway would show no RTP packets at all.
Signaling was working just fine, all the right IPs and Ports were listed within the SDP messages, as you see in the screenshot, though, no RTP packets can be seen.
Apparently the SIP provider used some kind of NAT or security device in front of their SIP equipment, and pinholes were only opened when this device received any incoming packets from our side of the communication.
That’s when I learned about the “NoOpEnable” parameter which is designed for problems, just like this one. Once the “NoOpEnable” parameter is set to “True”, the SBC will send one RTP packet (with payload No-Op) to each IP involved in the session (retrieved from SDP). The following Screenshot shows another debug trace, please note the first to RTP packets:
This did the trick, whatever device the remote side was using, it let RTP packets through once it received an incoming packet.
For more Information on the No-Op Payload Type, check out the following IETF Draft: A No-Op Payload Format for RTP
The NoOpEnable parameter can be configured using the devices AdminPage, which can be found at: https://<IPAddress>/AdminPage
Another way, the one I prefer nowadays, is to use the SSH command-line interface, simply connect to the device using PuTTY or TeraTerm and use the following syntax:
configure voip
media RTP-RTCP
no-operation-enable 1
activate
Always use an SBC if dealing with SIP trunks :)
Tom
]]>In diesem Artikel versuche ich ein paar Argumente für IPv6 in Unternehmensnetzwerken zu erklären, die meisten Netzwerker und Admins mit denen ich zu tun habe sind verunsichert oder schlecht informiert und versuchen aus diesen und anderen Gründen IPv6 als unwichtig oder gar unnötig abzutun.
Diese Frage hört man immer wieder, dabei gibt es einige Gründe die für IPv6 sprechen. Ich teile diese Frage in zwei Bereiche auf, IPv6 im Unternehmensnetzwerk und IPv6 im Internet.
Viele neuen Trends in der IT haben eines gemeinsam: immer mehr Geräte wollen immer mehr Informationen an immer mehr Teilnehmer senden. Dazu werden immer mehr Verbindungen und immer mehr Adressen benötigt. Das Internet of Things, immer-online Smartphones und viele Cloud Produkte sind ohne IPv6 bereits jetzt schon nicht mehr denkbar. Facebook stellt derzeit sogar das interne Netzwerk wegen Adressmangel auf IPv6 um.
Aus der Sicht eines Unternehmens ist IPv6 spätestens dann interessant, wenn man Geschäftspartner in Regionen mit wenigen öffentlichen IPv4 Adressen hat. So werden z.B. in Asien, Afrika und Osteuropa nur noch IPv6 Anschlüsse verkauft, nur selten ist es möglich einige IPv4 Adressen zu ergattern.
Durch Übergangstechnologien (transition technology) bietet der Provider zwar die Möglichkeit weiterhin auf IPv4 Inhalte zuzugreifen, aber will man sich als Unternehmen wirklich darauf verlassen, dass potentielle Kunden und Partner die Website schon irgendwie erreichen werden? Dass Emails mit Aufträgen schon irgendwie ankommen werden?
Um Problemen mit Übergangstechnologien (Tunneling, CGN…) aus dem Weg zu gehen, sollten bestimmte Dienste aus dem nativen IPv6 Netzwerk erreichbar sein. Die bereits angesprochenen Aufträge oder Webzugriffe sind dabei nur ein Grund, Mitarbeiter (und Führungskräfte) reisen in Regionen in denen IPv6 Internet bereits Normalität ist und auch von dort wollen diese auf das Firmennetzwerk zugreifen und Emails abrufen.
Wegen des einfachen (und für den Benutzer kaum merkbaren) Fallbacks ist E-Mail ein Dienst, der relativ einfach über IPv6 erreichbar gemacht werden kann, hier profitiert man sofort von einer besseren Erreichbarkeit und kann den Umgang mit der Technologie lernen.
Bei der Entwicklung von Windows Vista und Server 2008 wurde der Netzwerkstack komplett neu geschrieben, dabei wurde großer Wert auf die Implementierung von IPv6 gelegt. So ist IPv6 ab Windows Vista/2008 nicht nur standardmäßig aktiv, es wird auch bevorzugt. Bekommt ein Client also sowohl ein IPv4 als eine IPv6 Adresse für eine DNS Abfrage zurück, versucht dieser die Verbindung über IPv6 zuerst.
Da Windows XP hoffentlich nicht mehr zum Einsatz kommt, kann man davon ausgehen, dass in den meisten Unternehmen bereits jetzt IPv6 großflächig ausgerollt wurde! Leider passiert das häufig ohne detaillierte Planung und manchmal sogar ohne das Wissen der Admins bzw. Netzwerkverantwortlichen.
Während das IPv4 Netzwerk genau geregelt wird, Firewalls und IPS Systeme in regelmäßigen Audits gecheckt werden, hat man einen zweiten, nicht berücksichtigen, nicht verwalteten Netzwerkstack. Aus Sicht der Netzwerksicherheit ist dies deshalb kritisch, weil Windows teilweise automatisch Tunnel aufbaut welche dem Client einen ungefilterten Zugriff auf das wachsende IPv6 Internet geben.
Da IPv6 bevorzugt wird, kann man mit einem IPv6 “Router Advertisement” einfache Man-in-the-Middle Attacken ausführen und z.B. den gesamten Traffic eines Subnets über einen Proxy umleiten. Security Features wie DHCP Snooping und ARP Inspection sind weiterhin wichtig um das IPv4 Netzwerk zu schützen, in diesem Fall sind diese aber nutzlos.
Spätestens zu diesem Zeitpunkt sollte man sich Gedanken über IPv6 machen! Man muss nicht gleich das gesamte Netzwerk umstellen, wichtiger ist eine genaue Planung und die Übertragung der bestehenden Sicherheitsrichtlinien auf IPv6.
Das (langfristige) Ziel einer IPv6 Einführung ist die komplette Migration des Netzwerkes auf natives IPv6, trotzdem wird man IPv4 über eine lange Zeit weiter betreiben. Wie bei jeder Einführung oder Migration ist auch hier die Planung ein wichtiger, erster Bestandteil.
Dabei sollten folgende Punkte berücksichtigt werden:
Der erste Schritt bei der Einführung ist das Aktivieren des IPv6 Zugriffes am Übergangspunkt des Netzwerkes, hier muss in der Regel mit dem ISP gearbeitet werden. Sind Routing und Sicherheitsrichtlinien eingerichtet, kann IPv6 von außen nach innen ausgerollt werden.
Beginnen sollte man mit einer Labor oder Testumgebung, diese kann in einer DMZ, nahe am Übergangspunkt angesiedelt werden, so kann man Erfahrungen sammeln ohne IPv6 ans letzte Ende des Netzwerkes zu transportieren.
Nach ausgiebigem Test bieten sich E-Mail und DNS als erste Dienste an, die in einer produktiven Umgebung für IPv6 aktiviert werden können. Beide fallen ohne Probleme auf IPv4 zurück, sodass Benutzer im Problemfall nicht betroffen sein sollten.
Ein weiterer interessanter Punkt sind Load Balancer oder Application Delivery Controller, diese veröffentlichen bereits jetzt Systeme und stellen eine Verbindung zwischen öffentlichem und privatem Netzwerk dar. In aktuellen Versionen bieten viele dieser ADCs die Möglichkeit auch über IPv6 mit dem öffentlichen Netzwerk zu kommunizieren. Verwendet der ADC eine Technologie wie NAT64 ist dies für den veröffentlichten Dienst (SharePoint, Exchange, Web…) transparent und dieser muss nicht geändert werden.
Die Einführung von IPv6 bietet, neben der Vielfalt an Adressen weitere Vorteile, so können Router z.B. schneller arbeiten da der IP Destination Header immer an derselben Stelle im Paket zu finden ist. Außerdem erledigen sich die Themen ARP und Broadcasts, für die Auflösung der L2 Adressen wird ICMPv6 verwendet, die sogenannte Neighbor Discovery findet immer über Multicast statt.
Ein weiterer Punkt der in IPv4 Netzwerken häufig zu Problemen führt ist MTU und Paketfragmentierung, auch das gibt es in IPv6 Netzwerken nicht mehr. Über ICMPv6 wird die Path MTU ermittelt, so weiß der Client wie groß seine Pakete für den Server sein dürfen, bevor er diese losschickt.
Die Automatische Konfiguration von Clients wird oft als Vorteil genannt, dies kann in kleineren Netzwerken sicher interessant sein, im Unternehmen wird es weiterhin DHCP und statische Adressierung für Server geben.
Eine der größten Krücken und der Grund aus dem viele immer noch an IPv4 festhalten, ist NAT oder Network Address Translation. Diese Technologie hat es überhaupt erst ermöglicht die Einführung von IPv6 so lange hinaus zu zögern, gleichzeitig hat sie aber auch jede Menge Probleme für Applikationen mit sich gebracht. Mit einem global skalierbaren IPv6 Adressplan wird eine End-to-End Kommunikation von Geräten endlich möglich, das wechseln zwischen Netzwerken kann so für den Benutzer einfacher werden. In einer mobile-first Welt ein nicht unwichtiger Punkt ;)
Natürlich ist auch Sicherheit ein wichtiger Aspekt und auch da bietet IPv6 einige Vorteile, so ist IPSEC z.B. standardmäßig implementiert und jeder Host kann (theoretisch) verschlüsselt kommunizieren. Allerdings sieht man auch hier, dass es sich schon um ein älteres Protokoll handelt, einige Standardheader gelten heute als unsicher und es gibt schon einen Nachfolger für Neighbor Discovery, SEND oder SEcure Neigbor Discovery.
Wie bei jeder neuen Technologie gibt es auch bei der Einführung von IPv6 bestimmte Fallstricke, so kann es z.B. sein dass Clients zwar die IPv6 Verbindung bevorzugen, das Routing dafür aber einen weniger optimalen Pfad wählt und die Verbindung deshalb langsamer ist. Aktives Monitoring, saubere Dokumentation und gutes Configuration Management sind wie bei IPv4 unerlässlich. Hier gilt es bestehende Prozesse an die neue Technologie anzupassen.
Einige hilfreiche Links zum Thema hab ich hier gesammelt: IPv6 Learning Resources
Ich hoffe in diesem Artikel das Interesse an IPv6 geweckt zu haben :)
Happy hacking!
Tom
Da es sich um eine einfache Demo handelt verwende ich nur zwei Server die ich aus dem Windows 2012R2 Image in Azure erstelle. Auf dem ersten werden die Rollen Domain Controller, ADFS, Zertifizierungsstelle und Work Folders installiert, der zweite wird als Web Application Proxy für die Veröffentlichung verwendet.
Da die beiden Server miteinander kommunizieren sollen, verwende ich ein virtuelles Netzwerk in welches die beiden Server ausgerollt werden.
Work Folders ist ein Feature von Windows 2012R2 und kann mit OneDrive/Dropbox verglichen werden. Work Folders bieten dem Benutzer eine einfache Möglichkeit auf Daten zuzugreifen und diese über mehrere Geräte zu synchronisieren.
Leider gibt es derzeit nur Unterstützung für Windows 7 und 8/8.1, Clients für mobile Geräte wurden noch nicht angekündigt.
Im ersten Schritt stufe ich den ersten Server zum Domain Controller hoch und installiere/konfiguriere die Zertifizierungsstelle. Eine spezielle Konfiguration dieser Rollen ist nicht notwendig, die einzige Anpassung ist das Erstellen eines neuen Zertifikattemplates welches später für die ADFS und WAP Zertifikate verwendet wird.
Vor der Konfiguration der AD FS Rolle überlege ich mir einen Namen über welchen die Federation Services später erreichbar sein sollen, hier entscheide ich mich für adfs.uclab.eu. Damit ich interne Anfragen direkt zum AD FS Server leiten kann, erstelle ich ein DNS Zone für diesen Eintrag:
Der A-Record verweist auf meinen Domain Controller und AD FS Server.
Nach der Installation der Active Directory Federation Services sind folgende Schritte für die Konfiguration notwendig.
Ein Zertifikat mit dem Namen für die Federation Services sowie dem internen Servernamen wird angefordert. Hier verwende ich ein Kopie des WebServer Templates als Zertifikatsvorlage.
Sobald das Zertifikat installiert wurde, kann die AD FS Farm installiert werden, dafür wird der Thumbprint der Zertifikates benötigt, diesen kann man sich per PowerShell einfach anzeigen lassen:
Get-ChildItem Cert:\LocalMachine\my -DnsName adfs*
Außerdem wird ein Service Account für den AD FS Dienst benötigt, dafür verwende ich ein normales AD User Account. Jetzt kann die Farm installiert werden, dabei wird das Service Account mit Get-Credential abgefragt:
Install-ADFSFarm -CertificateThumbprint 9EA51F4DAA939C077602DF0B7EE7426F61E2DE0A -FederationServiceDisplayName "Uclab Demo" –FederationServiceName adfs.uclab.eu -OverwriteConfiguration -ServiceAccountCredential (Get-Credential) -ErrorAction Stop
In der AD FS Management Konsole sehen die Federation Service Properties folgendermaßen aus:
Jetzt wird ein Relying Party Trust hinzugefügt, dazu klickt man in der AD FS Management Konsole mit rechts auf “AD FS” und wählt “Add Relying Party Trust”.
Die Daten müssen manuell eingegeben werden, ein Name wird für den Trust gewählt.
Das AD FS Profil wird verwendet, die Auswahl des Zertifikates für Token Signierung sowie die Konfiguration der URLs für WS-Federation und SAML können übersprungen werden.
Als Identifikation muss “https://windows-server-work-folders/V1” verwendet werden. Multi Faktor Authentifizierung ist in meiner Demo nicht nötig und wird auch übersprungen.
Der letzte Schritt kann auch übersprungen werden, anschließend wird der Trust erstellt. Jetzt müssen noch “Claim Rules” definiert werden.
Folgende Attribute werden definiert:
Jetzt müssen per PowerShell noch folgende Eigenschaften konfiguriert werden:
Set-ADFSRelyingPartyTrust -TargetIdentifier “https://windows-server-work-folders/V1” -EnableJWT:$true
Set-ADFSRelyingPartyTrust -TargetIdentifier “https://windows-server-work-folders/V1” –Encryptclaims:$false
Set-ADFSRelyingPartyTrust -TargetIdentifier “https://windows-server-work-folders/V1” -AutoupdateEnabled:$true
Set-ADFSRelyingPartyTrust -TargetIdentifier “https://windows-server-work-folders/V1” -IssueOAuthRefreshTokensTo:’AllDevices’
Der AD FS Server ist jetzt soweit bereit für die Authentifizierung der Work Folders.
Jetzt kann die Work Folders Rolle installiert werden, das geht am schnellsten per PowerShell:
Install-WindowsFeature –Name FS-SyncShareService
Nach der Installation erfolgt die Konfiguration der Work Folders über den Server Manager, die Konfiguration ist (wie die Server Rolle) unter “File and Storage Services” zu finden.
Ein neuer “Sync Share” wird angelegt, hier wird ein lokaler Pfad für die synchronisierten Daten angegeben.
Anschließend wird ausgewählt wie die Ordner auf dem Server benannt werden sollen:
Dann können die Berechtigungen vergeben werden, Standardmäßig wird die NTFS Vererbung unterbrochen und der Benutzer erhält exklusiven Zugriff auf sein Sync Share.
Über Client Richtlinien kann geregelt werden ob die Work Folder Dateien lokal verschlüsselt werden müssen und ob das Gerät mit einem Passwort gesperrt wird.
Nachdem der Sync Share erstellt wurde, muss die Authentifizierung auf ADFS geändert werden, dazu muss man im Server Manager auf Server klicken und den lokalen Server auswählen, dann kann mit einem Rechtsklick “Work Folders Settings” ausgewählt werden:
Ich gebe die vorher erstellte AD FS Farm für Authentifizierung an.
Jetzt ist es an der Zeit den Reverse Proxy auf meinem zweiten Server zu installieren, dieser ist nicht Mitglied der AD Domain, die Authentifizierung erfolgt über AD FS.
Noch auf dem Domain Controller fordere ich ein Zertifikat für den Proxy an, hier verwende ich wieder den Namen der AD FS Farm sowie einen weiteren Namen über den ich die Work Folders veröffentlichen werde:
Dieses Zertifikat exportiere ich am Domain Controller und importiere es auf dem Reverse Proxy, da dieser nicht Mitglied der Domain ist, muss auch das Root Zertifikat importiert werden.
Jetzt kann die Rolle Web Application Proxy installiert werden, diese geht wieder am schnellsten per PowerShell:
Install-WindowsFeature –Name Web-Application-Proxy
Anschließend wird die Rolle konfiguriert, dafür kann die “Remote Access Management Console” verwendet werden, da sich diese aber nach pre-Beta anfühlt bevorzuge ich auch hier PowerShell. Ein guter Tipp für unbekannte oder selten verwendete cmdlets ist “Show-Command” so kann man sich seinen Befehl einfach zusammenstellen:
Der Befehl für die Konfiguration des Web Application Proxy ist dann:
Install-WebApplicationProxy -CertificateThumbprint 9D082F66864E3BD9A575AC429BA12130E89CFEE2 -FederationServiceName adfs.uclab.eu -FederationServiceTrustCredential (Get-Credential)
Nun kann die Work Folder Applikation erstellt werden, auch dafür verwende ich wieder “Show-Command” um den PowerShell Befehl zu erstellen.
Der Befehl für das veröffentlichen der Applikation ist:
Add-WebApplicationProxyApplication -BackendServerUrl https://wfdemo.intra.uclab.eu -ExternalCertificateThumbprint 9D082F66864E3BD9A575AC429BA12130E89CFEE2 -ExternalUrl https://workfolders.uclab.eu -Name WorkFolders -ADFSRelyingPartyName WorkFolders -ExternalPreauthentication ADFS –UseOAuthAuthentication
Nachdem die Applikation über den WAP veröffentlich wurde, muss diese nur noch von außen erreichbar gemacht werden. Dazu werden in der öffentlichen DNS Zone zwei CNames erstellt, einen für die AD FS Farm den anderen für den Namen der Work Folders. Diese CNames zeigen auf den Cloud Service der Reverse Proxy VM in Microsoft Azure.
Der Reverse Proxy bekommt einen HTTPS Endpunkt und wird somit erreichbar gemacht:
Nach all diesen Schritten wird es Zeit die AD FS Authentifizierung zu testen, dazu kann folgende URL verwendet werden:
Das sieht schon mal gut aus, also können wir die Work Folders testen, diese finden sich in der Systemsteuerung:
Die URL für die veröffentlichte Applikation wird angegeben, es gibt die Möglichkeit diese in der Registry oder einem AD Attribut für Auto Discovery zu hinterlegen, beide Varianten sind aber nur auf Domain Clients interessant.
Für die Anmeldung werde ich auf AD FS umgeleitet:
Dann kann ich einen lokalen Speicherort auswählen und werde auf die Richtlinien hingewiesen:
In der Übersicht sieht man Status der Synchronisation und den verfügbaren Speicherplatz am Server.
Viel Spaß mit den Work Folders und ein schönes, langes Wochenende :)
Tom
]]>Nach kurzer Suche hat sich herausgestellt, dass Benutzer welche keine Anrufe tätigen konnten, folgenden Fehler verursachten:
<132>[S=831454] Error Indication: Last Command (Primitive) was not performed due to cause 100 [Trunk:0 Bchannel:1 ConnID:2] [Code:0x23127]
<133>[S=831455] ( lgr_psbrdex)(833974 ) recv <-- UnHandled event: EV_ISDN_ERROR_INDICATION (317)
<133>[S=831456] [SID:766997237] ( lgr_psbrdex)(833975 ) pstn recv <-- CALL_RELEASED Trunk:0 Conn:2 RetCause:73 NetCause:255
<132>[S=831457] REPORT_TYPE_ERROR_IN: ErrorCauseString = Incorrect parameter type, DiagnosticString= Condition unknown, ErrorCause = d, Diagnostic = [Trunk:0 Bchannel:-1 ConnID:-1] [Code:0x23127]
<133>[S=831458] [SID:766997237] ( lgr_psbrdif)(833976 ) pstn send --> PlaceCall: Trunk:0 BChannel:1 ConnID:2 SrcPN=xxx SrcSN= DstPN=151xxxxxxxx DstSN= SrcNT=4 SrcNP=1 SrcPres=0 SrcScrn=0 DstNT=2 DstNP=1 ServiceCap=M RdrctNum= RdNT=0 RdNP=0 RdPres=0 RdScrn=0 RdRsn=-1 Excl=1 Display=Müller, Max IE= UUIE=0, RawData:0 CLIRReason:-1 OrigPN= OLI=-1 OffhookInd=0
<133>[S=831462] [SID:766997237] ( lgr_psbrdif)(833980 ) Abnormal Disconnect cause:255#?reason(255)? Trunk:0 Conn:2
Die Normalisierung der Nummern ist bei allen Benutzern identisch, daran konnte es nicht liegen, nach einiger Zeit ist mir aufgefallen, dass Benutzer die keine Anrufe tätigen konnten einen Umlaut im Active Directory Anzeigenamen hatten… Dieser Namen wurde bei einem Benutzer zu Testzwecken umbenannt und schon konnte dieser auch telefonieren.
Das Attribut DisplayName bei allen Benutzern zu ändern kam natürlich nicht in Frage, glücklicherweise gibt es eine Einstellung auf dem AudioCodes Gateway mit der man das verhalten steuern kann.
Eine Möglichkeit ist es, den “Calling Name” nicht ins ISDN zu signalisieren, dazu kann man den Parameter “Remove Calling Name” auf dem entsprechenden Trunk auf “Enable” setzen.
Alternativ kann über die AdminPage (oder die INI Datei) der Parameter “ISO8859CharacterSet” auf “0” gesetzt werden, dieser ändert die Umlaute in “Latin-Only” Zeichen, so wird “ä” zu “a”, “ö” zu “o” usw…
Dieser Parameter kann auch über das CLI gesetzt werden, dazu verbindet man sich per SSH auf das Gateway. Die Einstellung versteckt sich hier:
configure voip
gw digitalgw digital-gw-parameters
iso8859-charset no-accented
Tom
]]>Start Menu
The Windows start menu is located in the following folder…. If you are using folder redirection, you can redirect the folder to a fileserver. This is a very often seen scenario in RDS and Citrix deployments.
App-V and the Start Menu
When you publish an application for a group of users, App-V can create the folder and shortcuts in the start menu. You can manage this in the management website from App-V.
App-V and the System Account
After you install the App-V Client on your desktop or terminalserver machine, you can find the following service “Microsoft App-V Client” in the services. The App-V Client services runs with the local system account. If you change this account to a domain user account with the needed permissions, you get errors when publishing / un-publishing applications.
The issue: You are using redirected start menu and remove an user from an App-V publishing group. The App-V Client does not delete the programs folder and shortcuts in the users start menu.
The reason is, that the local System account, under which the App-V Client services runs, doesn’t have the permissions to delete the folder and shortcuts from the fileserver where your start menu is located.
There are 2 work around
1. Don’t redirect the start menu
If you don’t use start menu redirection, you don’t run into this issue
2. Redirect the start menu and use a script to delete death program shortcuts
I don’t want to disable the start menu redirection and wrote a script to find “death” shortcuts and delete them with the appropriate folder. You can specify the following script as user logon script:
Start-Sleep -Seconds 10
$ErrorActionPreference = "SilentlyContinue"
$StarMenuPath = "REDIRECTED_FOLDER" + [Environment]::UserName + "\Start Menu"
$Shortcuts = gci $StarMenuPath -Recurse -Filter "*.lnk"
ForEach ($Shortcut in $Shortcuts) {
$WshShell = New-Object -ComObject WScript.Shell
$LocalAppDataPath = $env:LOCALAPPDATA
$Link = $WshShell.CreateShortcut($Shortcut.Fullname)
$PathToApp = $Link.TargetPath
$PathToApp = $PathToApp.replace("C:\Windows\system32\config\systemprofile\AppData\Local",$LocalAppDataPath)
IF((!(Test-Path $PathToApp)) -and ($PathToApp.Contains("AppV"))){
Remove-item -LiteralPath $Shortcut.Fullname -Force
$RemainingFiles = $Null
$RemainingFiles = gci $Shortcut.Directory.FullName -Recurse
If($RemainingFiles -eq $Null){
Remove-Item $Shortcut.Directory.FullName -Force
}
}
}
Microsoft will fix this
I opened a MS call and last week I got an email that the issue for this problem will be fixed in the upcoming Spring release.
Greetings
dn
On the Lync server side we have to create a trusted application pool along with a trusted application in order for Lync to accept SIP requests from the CUPS. This is done using the Lync Server Management Shell:
New-CsTrustedApplicationPool -Identity cups.tomt.local -Registrar lync01.tomt.local -ThrottleAsServer $true -TreatAsAuthenticated $true -OutboundOnly $false -RequiresReplication $false -Site 1
New-CsTrustedApplication -TrustedApplicationPoolFqdn cups.tomt.local -Port 5062 -ApplicationId CUPS
After that we need a static route pointing to the CUP Server so that Lync knows where to find Users within a certain address space (@tomt.local in our case).
$r = New-CsStaticRoute -TLSRoute -Destination cups.tomt.local -Port 5062 -MatchUri tomt.local -UseDefaultCertificate $true
Set-CsStaticRoutingConfiguration -Route @{Add=$r}
Note: As we are using TLS as transport protocol, we create a new TLSRoute, the destination parameter specifies where requests for a certain domain (MatchUri) are routed to, as always with TLS, the common name of the certificate must match the FQDN entered as destination. I am using Port 5062 because that is the default port for the “Peer Authentication Listener” on CUP.
Once this configuration is in place, we need to make sure the Lync Server trusts the certificate used on the CUPS, so I made sure the CA that issued the CUPS certificate was present in the Lync Servers “Trusted Roots” store.
Nice work, Lync users can now see Cisco users presence states and they can even chat with each other :)
Ok, now that we have a working configuration, let’s have a look at troubleshooting.
Note: This post is in progress, I will add more troubleshooting steps over the next couple of days.
I will list some of the more problematic points here, so just in case you have a half working configuration, make sure to check for the following issues:
If the Lync Server certificate does not include the Enhanced Key Usage of “Client Authentication”, the TLS handshake fails. As the error occurs before the two systems are speaking SIP, we will have to rely on NetMon or Wireshark to troubleshoot the TLS Handshake, sure enough it shows an “Encrypted Alert”:
In the Binary data of the handshake we can see the alert value is 2B (hex) which translates to decimal 43 an means: unsupported certificate.
So to fix this, re-issue the Lync Server certificate (Default, Web Services don’t matter here) and make sure the template includes the Client Authentication enhanced key usage.
This is one of the oddest behaviors of the Lync 2013 clients that I have ever seen. A Lync user searches for another user which is homed on the Cisco Unified Presence server. As soon as the user completes the entry of the sip address (and the Lync Server sends a SUBSCRIBE message to the CUPS) the Lync user is signed out of the client.
Same thing happens if a CUPS user sends an IM to the Lync user. The Lync client log shows that CUPS is trying to do MD5 authentication (yes md5 in 2014….) and that the Lync Clients handles this by signing out.
### client error log ###
Check the ACL configuration on the CUP Server, all Lync Servers and Clients must be excluded from MD5 authentication. Also check that your static Route on Lync points to the Peer Authentication listener.
So long,
Tom
Luckily the configuration was setup with multiple domains, Lync using the public (tomt.it) and Cisco Unified Presence using an internal only (tomt.local) domain.
Before you get your hopes to high, here goes a quick list of what functionality will be available, once the federation is in place.
That’s it. Sure you can use Jabber to make your Cisco Desk Phone call a Lync endpoint, if you have a SIP trunk configured between the two systems, but that’s got nothing to do with the presence federation.
The topology I was working with, consisted of a single Lync 2013 Standard Edition Front End Server with an associated Edge server. Lync was completely configured and operational, the SIP domain I’m going to use in this example is: @tomt.it
The Cisco Unified Presence Server was a standalone box, too. It was hooked up to a clustered CUCM installation, though that should not matter in this example. The SIP domain on the CUPS was @tomt.local
All of my test VMs are located in the 10.1.1.0/24 subnet.
There are a couple of requirements on the Cisco side of things. First let’s talk certificates.
The recommended configuration uses TLS as transport for the federation, not only is it more secure, it’s interesting enough that it’s easier to setup, too.
So we need a certificate on the Unified Presence server, to complete this step, log in to the “OS Administration” website of the CUP Server, to connect to the OS Administration website, use /cmplatform.
Once signed-in, go to Security, Certificate Management and:
After that, my Certificate Management looked like this:
The next step is setting up the SIP Federation, this requires you to log-in to the “IM and Presence Administration” website, it can be found at /cupadmin.
Using Presence, Inter-Domain Federation, SIP Federation, Federated Domain we add the Lync Servers SIP Domain (tomt.it) as inter-domain federation:
Note: Some documentation state that you need to check the “Direct Federation” box, I found that it will work either way. If someone with CUP knowledge reads this, please do get in touch.
The next step is setting up a static route from the CUP Server to Lync. This is done using the Presence, Routing, Static Routes menu. We configure a destination pattern with an associated next hop and transport protocol, do note the notation used for the destination pattern!
Important: Select TLS as “Protocol Type” and User as the “Route Type”. 5061 is the default port on which a Lync Server will listen for TLS requests.
While we are in the “IM and Presence Administration” there are another couple of things to configure:
The Lync Servers FQDN (i.e the Common Name on the Lync Pools Certificate) must be added as TLS Peer Subject using System, Security, TLS Peer Subjects:
Then, using System, Security, Peer Auth Security Context add the newly created TLS Peer Subject:
Also make sure to check the “Disable Empty TLS Fragments” box and add the TLS_RSA_WITH_3DES_EDE_CBS_SHA cipher to selected ciphers.
Still in System, Security we need to configure ACLs. The ACLs are not traditional ACLs which allow or block IP:Port combinations, these are used to configure whether or not a communication partner has to be authenticated using MD5. Neither Lync Servers nor Lync Clients support SIP Digest authentication using MD5, so we need to make sure that they will not be prompted for authentication:
The following show my incoming and outgoing ACL entries:
The last configuration step on the CUP Server is to update the public FQDN using System, Service Parameters, Federation Routing Parameters:
Note: The documentation and help context for this parameter state that it should not be changed, although I found the Federation Routing FQDN will be used in the Record-Route Header (maddr field) and if Lync does not have a Trusted Application Pool for this FQDN, communication will fail.
Lastly we’ll have to restart some services on the CUP Server in order for the configuration changes to become active. To do this, we need to log-in to the “IM and Presence Serviceability” website, which can be found at /ccmservice.
Navigate to Tools, Control Center, Feature Services and restart SIP Proxy Service, then navigate to Tools, Control Center, Network Services and restart the XCP Router Service.
Ok, so that’s it on the Cisco side of things. Click here for the Lync Server Configuration.
Tom
]]>Unter anderem hat Derek Burney die lange erwartete Video Kommunikation mit Skype demonstriert. Weitere Infos dazu gibt’s auf dem Skype Blog und auf dem Offical Microsoft Blog, hier schreibt der neue (alte) Präsident der Lync & Skype Engineering Gruppe, Gurdeep Singh Pall auch über weitere Ziele. Die Unterschiede in Bedienung und Funktion der Technologien die wir im privat- bzw. Arbeitsleben einsetzen, sollen wegfallen. Der Fokus liegt auf Work-Life-Balance und sogenannten Digital Natives.
All diese Änderungen und Ziele werden unter dem neuen Schlagwort Universal Communications zusammengefasst.
In einer weiteren Demonstration wurde das Lync Mobile App für Android Tabled vorgestellt, dieses soll in den nächsten Monaten veröffentlicht werden. Damit gibt es mobile Clients für:
Interessant für viele Kunden mit bestehenden Videokonferenzsystem dürfte der “Interop Server” sein, dieser soll als Bestandteil der nächsten Lync Server Version ausgeliefert werden und ermöglicht u.a. die Anbindung von Tandberg VTC an Lync.
Seit einiger Zeit wird das Thema WebRTC mehr oder weniger heiß diskutiert, es wäre sicher interessant wenn anonyme Benutzer ganz ohne Plug-in an einer Konferenz teilnehmen könnten. Nun konnte sich die Industrie allerdings noch nicht wirklich auf einen gemeinsamen Weg einigen, dementsprechend wenig Informationen gab es über die Demo eines Video Gespräches direkt im Browser.
Bei der Technologie handelt es sich um einen Javascript Wrapper für die Unified Communications Web API (http://ucwa.lync.com), welche Codecs verwendet wurden und ob ein Plug-in benötigt wird, hat Derek allerdings nicht angesprochen.
Auch für das Cloud Angebot hat Microsoft ein neues Feature angekündigt, so soll es Unterstützung für Meetings mit bis zu 2000 Teilnehmern geben. Die Unterstützung für Enterprise Voice in der Cloud wurde erneut angekündigt, auch hier fehlen weitere Details.
Die Keynote wurde aufgezeichnet und kann hier angesehen werden.
Na dann, willkommen im Zeitalter der Universal Communications :)
Tom
]]>Beim ausführen des Hybrid Configuration Wizard auf einem Exchange 2010 Server tritt folgender Fehler auf:
Fehler beim Aktualisieren der Hybridkonfiguration: 'System.Management.Automation.Remoting.PSRemotingTransportException: Beim Ausführen von Daten vom Remoteserver ist folgender Fehler aufgetreten: [ClientAccessServer=DB3PR05CAXXX,BackEndServer=db3pr05mbXXX.eurprd05.prod.outlook.com, RequestId=ce4f8474-2bcc-4b3b-b4e4-5089f60f2372,TimeStamp=2/11/2014 10:11:28 AM] The request for the Windows Remote Shell with ShellId FC244D6B-C78E-4605-B7E1-91A480CD914B failed because the shell was not found on the server. Possible causes are: the specified ShellId is incorrect or the shell no longer exists on the server. Provide the correct ShellId or create a new shell and retry the operation. Weitere Informationen finden Sie im Hilfethema "about_Remote_Troubleshooting".
Weitere Informationen zur Fehlerbehebung finden Sie in der Protokolldatei "Update-HybridConfiguration" unter C:\Program Files\Microsoft\Exchange Server\V14\Logging\Update-HybridConfiguration\HybridConfiguration_2_11_2014_10_10_45_635277102457617512.log.
Wieder mal hat das Problem mit den unterschiedlichen Datumsformaten zu tun, der Server hatte deutsche Regionaleinstellungen.
Diese müssen auf English (USA) geändert werden und schon läuft der Wizard ohne Probleme durch.
Gruß,
Tom
If you have configured Skype federation, you have to enable Federation on to tenant:
Import-Module LyncOnline
Set-CsTenantFederationConfiguration -Tenant [TenantID] -AllowFederatedUsers $true
Set-CsTenantFederationConfiguration -Tenant [TenantID] -AllowPublicUsers $true
If you try to send some IM’s to a Skype user, you get the following error message in the OCS logger
ms-diagnostics: 27000;reason="To-Uri Domain is not in the sender-tenant allow list";
To get the federation working, you have to add the following domains to the tenant allow list. This is the way Microsoft do this on Office 365.
$d1 = New-CsEdgeDomainPattern -Domain "br.live.com"
$d2 = New-CsEdgeDomainPattern -Domain "hotmail.ch"
$d3 = New-CsEdgeDomainPattern -Domain "hotmail.co.il"
$d4 = New-CsEdgeDomainPattern -Domain "hotmail.co.jp"
$d5 = New-CsEdgeDomainPattern -Domain "hotmail.co.th"
$d6 = New-CsEdgeDomainPattern -Domain "hotmail.co.uk"
$d7 = New-CsEdgeDomainPattern -Domain "hotmail.com"
$d8 = New-CsEdgeDomainPattern -Domain "hotmail.com.ar"
$d9 = New-CsEdgeDomainPattern -Domain "hotmail.com.tr"
$d10 = New-CsEdgeDomainPattern -Domain "hotmail.es"
$d11 = New-CsEdgeDomainPattern -Domain "hotmail.de"
$d12 = New-CsEdgeDomainPattern -Domain "hotmail.fr"
$d13 = New-CsEdgeDomainPattern -Domain "hotmail.it"
$d14 = New-CsEdgeDomainPattern -Domain "live.at"
$d15 = New-CsEdgeDomainPattern -Domain "live.be"
$d16 = New-CsEdgeDomainPattern -Domain "live.ca"
$d17 = New-CsEdgeDomainPattern -Domain "live.cl"
$d18 = New-CsEdgeDomainPattern -Domain "live.cn"
$d19 = New-CsEdgeDomainPattern -Domain "live.co.in"
$d20 = New-CsEdgeDomainPattern -Domain "live.co.kr"
$d21 = New-CsEdgeDomainPattern -Domain "live.co.uk"
$d22 = New-CsEdgeDomainPattern -Domain "live.co.za"
$d23 = New-CsEdgeDomainPattern -Domain "live.com"
$d24 = New-CsEdgeDomainPattern -Domain "live.com.ar"
$d25 = New-CsEdgeDomainPattern -Domain "live.com.au"
$d26 = New-CsEdgeDomainPattern -Domain "live.com.co"
$d27 = New-CsEdgeDomainPattern -Domain "live.com.mx"
$d28 = New-CsEdgeDomainPattern -Domain "live.com.my"
$d29 = New-CsEdgeDomainPattern -Domain "live.com.pe"
$d30 = New-CsEdgeDomainPattern -Domain "live.com.ph"
$d31 = New-CsEdgeDomainPattern -Domain "live.com.pk"
$d32 = New-CsEdgeDomainPattern -Domain "live.com.pt"
$d33 = New-CsEdgeDomainPattern -Domain "live.com.sg"
$d34 = New-CsEdgeDomainPattern -Domain "live.com.ve"
$d35 = New-CsEdgeDomainPattern -Domain "live.de"
$d36 = New-CsEdgeDomainPattern -Domain "live.dk"
$d37 = New-CsEdgeDomainPattern -Domain "live.fr"
$d38 = New-CsEdgeDomainPattern -Domain "live.hk"
$d39 = New-CsEdgeDomainPattern -Domain "live.ie"
$d40 = New-CsEdgeDomainPattern -Domain "live.in"
$d41 = New-CsEdgeDomainPattern -Domain "live.it"
$d42 = New-CsEdgeDomainPattern -Domain "live.jp"
$d43 = New-CsEdgeDomainPattern -Domain "live.nl"
$d44 = New-CsEdgeDomainPattern -Domain "live.no"
$d45 = New-CsEdgeDomainPattern -Domain "live.ph"
$d46 = New-CsEdgeDomainPattern -Domain "live.ru"
$d47 = New-CsEdgeDomainPattern -Domain "live.se"
$d48 = New-CsEdgeDomainPattern -Domain "livemail.com.br"
$d49 = New-CsEdgeDomainPattern -Domain "livemail.tw"
$d50 = New-CsEdgeDomainPattern -Domain "messengeruser.com"
$d51 = New-CsEdgeDomainPattern -Domain "msn.com"
$d52 = New-CsEdgeDomainPattern -Domain "passport.com"
$d53 = New-CsEdgeDomainPattern -Domain "sympatico.ca"
$d54 = New-CsEdgeDomainPattern -Domain "tw.live.com"
$d55 = New-CsEdgeDomainPattern -Domain "webtv.net"
$d56 = New-CsEdgeDomainPattern -Domain "windowslive.com"
$d57 = New-CsEdgeDomainPattern -Domain "windowslive.es"
$d58 = New-CsEdgeDomainPattern -Domain "outlook.com"
Greetings
nd
As the title implies, the problem is similar to this one I described earlier, it does however also affect Lync 2010 clients. Once signed-in, the Lync Client will show a certificate warning, indicating that it wants to connect to some Exchange Server but the certificate was not ok, only after double (triple) checking, the certificate really was ok.
Sure enough, the problem only appears in certain environments, the one I was in used different domains for the SIP address and the users primary SMTP address. So, here goes an example:
UserPrincipalName: user@contoso.com
PrimarySMTPAddress: user@contoso.com
msRTCSIP-PrimaryUserAddress: user@fabrikam.com
When this users signs into Lync, the client will perform an Exchange Autodiscover request, in order to retrieve the Exchange Web Services Endpoint. The certificate used on the Exchange Server had the following attributes:
CN=exchange.contoso.com
DNS=exchange.contoso.com
DNS=exchange.fabrikam.com
DNS=….
Now the warning in the Lync Client says there was a problem connecting to exchange.contoso.com, even though the certificates CN was exactly the same name, that the client tired to reach. Makes sense? Not to me…
The workaround I described in the earlier article still applies, just add the Exchange Servers domain to the clients TrustModelData registry entry.
The registry key locations change depending on the client version:
Lync 2010 | HKEY_CURRENT_USER\Software\Microsoft\Communicator\TrustModelData |
Lync 2013 | HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\15.0\Lync |
Type | Reg_SZ |
Value | contoso.com contoso.eu |
So if anyone has more information on this one, please do get in touch.
Cheers,
tom
Der aktuelle Provider (und auch Hoster dieser Seite) ist Arbua. An dieser Stelle muss ich sagen, dass wir bisher zwar keine größeren Probleme mit unseren Mails hatten, das Mail System allerdings nicht mehr wirklich zeitgemäß ist, so fehlen z.B. Features wie Kalender, Active Sync und die Anmeldung erfolgt standardmäßig über http (ja richtig, unverschlüsselt. Im Jahr 2014.). Freundlicherweise wird ein Link zu einer “Secure Version” angezeigt…
Es gibt leider kein Angebot von Aruba, bei dem WebHosting und das Verwalten der DNS Zone möglich wären. Nach einigem hin und her, konnte ich den Support schließlich dazu bewegen, die benötigten DNS Einträge für Office 365 zu erstellen. Damit die Domain zu Office 365 hinzugefügt werden kann, muss zunächst ein TXT Record mit einem von Microsoft vorgegebenen Wert erstellt werden:
Type: TXT
Name: @
TXT Value: MS=ms93664998
TTL: 1 Hour
Jetzt kann die Domain verifiziert werden, sobald dieser Vorgang abgeschlossen ist, können Benutzer hinzugefügt werden. Diesen Schritt habe ich übersprungen und stattdessen der Domain ein Verwendungszweck zugewiesen. In unserem Fall: Exchange Online.
Sobald der Verwendungszweck ausgewählt ist, werden weitere DNS Einträge benötigt, diese sind:
Auch diese Einträge hat der Support freundlicherweise erstellt, wichtig ist hierbei, dass Office 365 die Einträge überprüft, der MX Eintrag muss also die Priorität 0 haben und auch der TTL Wert muss übereinstimmen, damit die Domain hinzugefügt werden kann.
Eine serverseitige Migration der Inhalte war nicht möglich, Inhalten konnten über einen Client (Outlook) oder über das “Connected Account” Feature von Office 365, übernommen werden. Mit diesem Feature kann ein Benutzer bis zu fünf Postfächer zu seinem Office 365 Konto hinzufügen. Unterstützt werden Konten die POP oder IMAP unterstützen.
Viele Grüße aus der Cloud :)
Tom
1. Install Microsoft Online Services Sign-In Assistant for IT Professionals BETA
http://www.microsoft.com/en-us/download/details.aspx?id=39267
2. Install the Office 365 cmdlets
http://go.microsoft.com/fwlink/p/?linkid=236297
3. Set Execution Policy to Remote Signed
Set-ExecutionPolicy RemoteSigned
Exchange Online
4. Connect to Exchange Online
Import-Module MSOnline
$ExchangeOnlineCred = Get-Credential
$ExchangeOnlineSession = New-PSSession –ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell -Credential $ExchangeOnlineCred -Authentication Basic -AllowRedirection
Import-PSSession $ExchangeOnlineSession -AllowClobber
Connect-MsolService –Credential $ExchangeOnlineCred
Now you are connected to Exchange Online:
Lync Online
4. Install Windows PowerShell Module for Lync Online
http://www.microsoft.com/en-us/download/details.aspx?id=39366
5. Connect to Lync Online
Import-module lynconlineconnector
$LyncOnlineCred = Get-Credential
$LyncOnlineSession = New-CsOnlineSession -Credential $LyncOnlineCred
Import-PSSession $LyncOnlineSession
Greetings
dn
1. Import the certificate to the machines personal store
2. Then use the following commands to import the certificate to the Session Host:
$pass = ConvertTo-SecureString “CERTIFICATE-PASSWORD” -AsPlainText –Force
$thumbprint = (Import-PfxCertificate -Password $pass -CertStoreLocation cert:\localMachine\my -FilePath '\\LocationToCertificate\certificate.pfx').thumbprint
$path = (Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'").__path
Set-WmiInstance -Path $path -argument @{SSLCertificateSHA1Hash="$Thumbprint"}
Now the certificate is imported.
Greetings
dn
Hier handelt es sich um ein Tool, welches Perfmon Dateien (.blg) auswerten und einen schönen Report generieren kann. Interessant ist die Möglichkeit “Threshold files” zu auszuwählen, diese werden Teilweise mitgeliefert oder können selbst hinzugefügt werden. In diesen XML Dateien sind Performance Counter und entsprechende Schwellwerte hinterlegt.
Die Installation erfolgt typischerweise auf einer Workstation, folgende Komponenten werden benötigt:
Das PAL Tool selbst ist ein Instsaller der aus Codeplex heruntergeladen werden kann. Die Installation erfolgt nach C:\Program Files\PAL\PAL\ wo auch die mitgelieferten XML Dateien abgelegt werden. Weitere Threshold Files findet man z.B. in der TechNet Gallery, hier der Linkfür den Lync Server 2013.
Interessant an den XML Dateien ist, dass man daraus Templates für Perfmon Data Collector Sets erstellen. Man muss also nichtmehr mühsam Counter aus der Produtkdoku suchen und diese dann einzeln hinzufügen, es reicht PAL (PALWizard.exe) zu starten und im Reiter “Threshold File” auf “Export Perfmon template” zu klicken.
Aus diesem Template erstellt man dann ein Data Collector Set auf den Systemen die analysiert werden sollen, die Standardwerte für den Dateipfad und die Laufzeit des Sets sollte noch angepasst werden. Ist die Datensammlung abgeschlossen, wird die .blg Datei wieder auf die Workstation mit dem PAL Tool kopiert.
Die .blg Datei wird im PAL Tool ausgewählt:
Anschließend müssen im Reiter “Questions” noch drei Fragen zu den analysierten Servern beantwortet werden:
Unter “Output Options” wird das Verzeichnis angegeben in welchem die Reports erstellt werden sollen.
Viel Spaß,
tom
This post is about clients connecting to the Cloud, so called point-to-site VPN connections. This feature might be of less interest to corporate customers, however, I find it quite cool for lab and dev/test scenarios.
To get started we need to configure a virtual network in Windows Azure, chances are that if you have been using Azure virtual machines, you might already have a virtual network configuration. It is required to have VMs communicate with one another.
So, in the management portal, create a new virtual network using the “Custom Create” option.
After specifying a Name and Affinity Group, configure the DNS Server, this will be the DNS Server for the virtual machines in this virtual network.
A quick hint: Azure virtual machines cannot be configured with static IP addresses, but the address assignment always starts with .4, so the first virtual machine that is started will get the .4 address. I do make sure to start my DNS server before starting anything else.
Since we are configuring point-to-site VPN, we need to check the corresponding check box. In the next screen we are configuring an IP address range that will be used by the virtual network. This is not yet the subnet for the VM, it is just the address range within which the individual subnets will be created.
And in the last screen we are actually configuring the subnets. We need one ore more subnets (within the address range configured before) for the virtual machines, as well as a “Gateway subnet”. This subnet will be used for the gateway.
Once the virtual network has been created, we need to add a subnet for the VPN clients that will connect to the virtual network. This is done using the “Configure” tab in the virtual network’s properties.
The last step is to create the gateway, using the “Create Gateway” button in the “Dashboard” tab of the virtual network. This process creates the required configuration within Windows Azure, an IP address and a hostname are assigned for clients to connect.
Voila, that’s it from a network configuration point of view.
Now when Clients are connecting to a VPN some form of authentication is required, in our case of point-to-site VPN, the Azure virtual network uses an SSTP connection with certificates for authentication.
The first step is to upload the Certification Authority’s certificate (public key) to the virtual network. Certificates issued by this CA can then be used to authenticate and connect to the VPN. I am using my lab CA and had to install the CA certificate in my clients “Local Machine” trusted root store.
After uploading the CA certificate, I requested a new certificate for my user account (using the “User” template). In order to connect to the virtual network in the Azure Cloud one last step is required, we need to download the Client VPN package which is available in the “Dashboard” tab in the virtual network configuration. The installation is simple and once installed, a new VPN connection will be available.
And that’s it. Now I am able to connect my notebook to the Azure virtual network, making it possible to connect “directly” to the VMs running in the Cloud :)
A quick ipconfig shows that my client got an IP address from the address range I configured earlier, the DNS servers have been assigned, too.
Ok, enough for tonight, time to get my head out of the clouds :-)
Tom
I tried to assign an existing certificate to a Lync Edge Server. It did not work using the Deployment Wizard, I tried the PowerShell command and it didn’t work, either.
Every time I tried to “Set-CsCertificate” I would get the following error:
„Set-CsCertificate: Command execution failed: The buffer supplied to a Function was too small.”
Kind of the same thing happened with TMG Server, I tried to assign a certificate to a Web Listener and it would not show up in the Wizard. When I unchecked the “Show only valid Certificates” checkbox, the certificate in question would show with an Error saying:
“Incorrect Key Type”
The solution is to export the certificate, including private key, to a .pfx file. Copy the .pfx file to some workstation with Firefox installed and import the certificate in Firefox.
Now use Firefox to “backup” the certificate, this will create a .p12 file, again containing the private key. Copy the .p12 file back to the Server delete the existing certificate and then import the .p12 file using MMC Certificates.
Warning: Before deleting the certificate from the Server, make sure you have a working backup (like the .pfx file) or you will have to get a new one.
Try to assign the Certificate to a Lync Service or a TMG Web Listener and enjoy.
I realize that this sounds pretty silly at first, if you want more detail, keep on reading :)
If you are still reading, there is a little more information for you. The certificates in question were using something called “Cryptography Next Generation”, which seems to be some new set of APIs that was introduced in Windows Vista and Server 2008. When creating a custom certificate request, one can select the “Template” to use, this is not the certificate template, but the “Crypto Provider” if you will.
The certificates that I mentioned, have all been requested using the CNG Template. Importing/ Exporting them in Firefox seems to fix this, maybe because Firefox prefers CAPI over CNG? If you have any information on this topic, please leave a comment.
More info on Crypto Next Generation is available on TechNet: http://technet.microsoft.com/en-us/library/cc730763(WS.10).aspx
Cheers,
tom
First step is to create a new Trunk for Exchange publishing
Then you have to create the Applications for Exchange.
First create the Outlook Web Access Application:
Select the Exchange CAS Servers or the CAS Server VIP.
Configure the authentication and authorize all users.
Next step is to rerun the Wizard to publish Outlook Anywhere and Exchange Active Sync.
Configure Authentication, Kerberos for OWA and Basic for Autodiscover
Don’t forget to configure SPN’s and delegation in ActiveDirectory for Kerberos to work. You can export the settings needed into an LDIF File with the “Export KCD settings” wizard in UAG and import it in AD. Or you can set the SPN’s manually:
You can check the SPN’s and export the file:
When you created the applications you have an application list like this:
Configure Portal Homepage
Change the Portal Home page and uncheck display Home Page within portal frame
Disable component installation
To prevent UAG installing the client, disable component installation.
Redirect HTTP to HTTPS
To redirect HTTP connections to HTTPS create the redirection Trunk in the “HTTPS Connections” section and select the Exchange Trunk.
The basic configuration is done and Exchange is now published via UAG.
But there are some issues:
Lync: Lync Clients cannot get autodiscover settings
In my environment Lync clients couldn’t get the autodiscover configuration from Exchange. After checking the UAG logs I noticed that UAG has a problem when Lync announces his Client Agent.
Solution: Disable scripting on the trunk
OWA: 500 error message when you open another mailbox from OWA
In my environment it was not possible to open another users mailbox without getting the following 500 error message:
Solution: Disable “verify URLs” on the OWA Application
Conclusion
I’m sure with deeper troubleshooting there must be exist a better way to fix this errors but in my opinion UAG is not the right product for publishing Exchange. Better you use a load balancer or II ARR.
I my next publishing post I explain how to publish Exchange 2013 with Citrix Netscaler.
- Running user profile synchronization
- Work management service deployed
- SSL for the Web Application with valid certificate
User profile synchronization
There are some nice how to’s how to get this service running. In simple words you need an user account that has “Replicating Directory Changes” rights in AD
Then you have to start the User Profile Service Application in the Sharepoint Central Administration.
If everything works both ForeFront Services are running and you can configure the user profile service.
Work management
The Work management Service application doesn’t need extra configuration. It only has to be deployed and working. On Technet is a short description how to create this service application.
http://technet.microsoft.com/en-us/library/fp161254.aspx
SSL
The Web Application needs to be SSL enabled. This can be done easily in IIS by enabling the HTTPS binding:
To verify that this works you can check if the Exchange server can access the AuthMetadataUrl with the browser.
AuthMetadataUrl: https://intranet.domain.local/_layouts/15/metadata/json/1
If you can access the 1.json file without authentication this step worked.
Tip: If you have to enter credentials, check the authentication methods in IIS for the Web Application. Anonymous needs to be activated:
Now you can connect Sharepoint with Exchange:
On Sharepoint 2013
1) Download EWSManagedAPI.msi from http://www.microsoft.com/en-us/download/details.aspx?id=35371
2) Install the EWS API with the following switches:
msiexec /i EwsManagedApi.msi addlocal="ExchangeWebServicesApi_Feature,ExchangeWebServicesApi_Gac"
3) Reset IIS
On Exchange 2013
1) Switch to the following directory: C:\Program Files\Microsoft\Exchange Server\V15\Scripts
2) Configre Enterprise Partner Application
.\Configure-EnterprisePartnerApplication.ps1 -ApplicationType Sharepoint -AuthMetadataUrl https://intranet.domain.local/_layouts/15/metadata/json/1
You should get the following output
Now you are able to sync Tasks with Sharepoint and Exchange 2013:
Tip: If this does not work and
- you are not in the same Domain with Exchange (maybe in a subdomain)
- you have an error with Exchange Autodiscover in the Sharepoint logs
- you have authentication errors with Exchange in the Sharepoint logs
check that your subdomain (for example subdomain.domain.local) is added to the accepted domains in Exchange.
Greetings
dn
After my first attempt to switch from Exchange 2010 CAS and TMG to UAG and Exchange 2013 CAS servers on the frontend I noticed that some Android and iPad ActiveSync users got authentication requests.
First thing I checked was the eventlog on the CAS machines and if the inheritance was enabled on the user accounts. Both were ok so I began to check the IIS logs first on the 2013 and then on the 2010 machine because the 2013 CAS proxies the requests to the 2010 CAS.
On the 2013 CAS I could see that this users tried to logon but the session ended with a HTTP 401 (Unauthorized) Error:
On the CAS 2010 I checked the logs and filtered users and time when they tried to logon. The result was that in the IIS logs the domain of the users that did not sync was different from the users that worked.
User1 –> domain\User1
User2 –> domain.local\User2
User3 –> domain.local\User3
I checked the devices of User2 and User3 and find out that the domain was missing in the account settings. Previously when Exchange 2010 with TMG were internet facing, TMG made this stuff working.
To get this fixed with Exchange and UAG you can set the default domain in IIS on the Exchange 2013 CAS servers if the device does not send the domain.
After an IIS reset the devices can successfully connected.
Greetings
dn
Windows 2012 Systemvoraussetzungen
Add-WindowsFeature Windows-Identity-Foundation
Sobald die Windows Identity Foundation installiert ist, kann das Lync Setup wie gewöhnlich ausgeführt werden. Dafür wird der Deployment Wizard verwendet und im ersten Schritt der lokale “Configuration Store” installiert.
Anschließend werden im Schritt zwei und drei die Lync Komponenten installiert und ein Zertifikat zugewiesen. Das Zertifikat fällt auf dem Survivable Branch Server deutlich einfacher aus, was wieder auf die reduzierten Serverrollen zurückzuführen ist. Webservices und Lyncdiscover werden nicht installiert, je nach DNS Konfiguration muss man allerdings den Eintrag für SIP berücksichtigen. In meinem Lab sieht das sieht das Zertifikat so aus:
CN = ly15-sba.tomt.local
DNS Name = ly15-tomt.local
DNS Name = sip.tomt.it
Ist das Zertifikat zugewiesen, können die Dienste gestartet werden, der Erfolg wird am Besten per PowerShell überprüft:
Get-CsWindowsService
Die Verfügbarkeit von Infrastrukturdienste wie DNS und DHCP muss in Außenstellen natürlich auch berücksichtigt werden.
Gibt es in der Außenstelle Telefone mit Lync Phone Edition sollte der DHCP Dienst lokal verfügbar sein, sonst verlieren diese Telefone bei Ablauf der Leases die Verbindung.
Die DHCP Optionen werden dabei folgendermaßen konfiguriert:
Option 42 (NTP): lokaler NTP Server, z.B. Router
Option 43 (Certificate Provisioning): Front End Server, ly15.tomt.local
Option 120 (SIP Registrar): SBS, ly15-sba.tomt.localDHCPUtil -SipServer ly15-sba.tomt.local -WebServer ly15.tomt.local
Bei DNS kann man nicht immer eine separate Konfiguration darstellen, gibt es einen Domain Controller in der Außenstelle, stellt dieser für gewöhnlich die Active Directory integrierte Zone zur Verfügung. Das ist für Lync allerdings kein Problem, für das WebTicket benötigt der Client ohnehin eine Verbindung zum Front End Server. Wird der Benutzer dann auf den SBS verschoben, teilt der Lync Front End Server das im Anmeldeprozess mit.
Wenn der Survivable Branch Server einsatzbereit ist, können Benutzer auf diesen verschoben werden um von der höheren Verfügbarkeit zu profitieren. Dies kann über das Lync Server Control Panel oder die Lync Management Shell gemacht werden:
Move-CsUser –Identity user10@tomt.it –Target ly15-sba.tomt.local
Dieser Befehl verschiebt den Benutzer user10 auf den SBS. Der Anmeldeprozess am Client sieht jetzt folgendermaßen aus:
Das Erste REGISTER geht an den Lync Front End Server (10.1.1.27), dieser wurde über DNS Autokonfiguration ausgewählt, der Dienst Eintrag für _sipinternaltls.tomt.it zeigt nach wie vor auf diesen Server.
Der Front End Server antwortet mit einem “301 Redirect” und teilt dem Client seinen Home Server für die Anmeldung mit. Der Client sendet dann erneut ein REGISTER an diesen neuen “Home Server” (10.1.1.21).
Nach der erfolgreichen Anmeldung sehen wir in den Konfigurationsinformationen, dass der Client mit dem SBS Pool verbunden ist (Connected Lync Server). Außerdem fällt hier auf, dass der Client nach wie vor die Web Services des zentralen Lync Pools (Front End Server) nutzt.
Fällt die WAN Verbindung (oder der Lync Pool) aus, wechselt der Client in einen Modus mit eingeschränkter Funktionalität und zeigt eine Warnung an. Diese erinnert den Benutzer, dass er zwar seine Buddy Liste verliert, allerdings nach wie vor telefonieren kann. In diesem Fall ist es vorteilhaft wenn der Client ein lokales Adressbuch hat, die Client Policy für Benutzer auf dem SBS sollte entsprechend konfiguriert werden.
Natürlich kann auch der SBS ausfallen, in diesem Fall meldet sich der Lync Client wieder am Front End Server an und kann weiterhin die kompletten Features nutzen.
Grüße,
Tom
Hyper-V Manager
An error occurred while attempting to start the selected virtual machine(s).
'dc02' failed to start. (Virtual machine ID F4E4E8F0-99BF-4282-99E3-F57AE7AC8708)
'dc02' Microsoft Emulated IDE Controller (Instance ID 83F8638B-8DCA-4152-9EDA-2CA8B33039B4): Failed to Power on with Error 'General access denied error' (0x80070005). (Virtual machine ID F4E4E8F0-99BF-4282-99E3-F57AE7AC8708)
'dc02': IDE/ATAPI Account does not have sufficient privilege to open attachment 'C:\Users\Public\Documents\Hyper-V\Virtual hard disks\dc02_2.vhdx'. Error: 'General access denied error' (0x80070005). (Virtual machine ID F4E4E8F0-99BF-4282-99E3-F57AE7AC8708)
'dc02': Account does not have sufficient privilege to open attachment 'C:\Users\Public\Documents\Hyper-V\Virtual hard disks\dc02_2.vhdx'. Error: 'General access denied error' (0x80070005). (Virtual machine ID F4E4E8F0-99BF-4282-99E3-F57AE7AC8708)
The problem is rather simple, and since Hyper-V has been around for some time now, it should also be well-known to most of us: The VM does not have the necessary (read, write) permissions to use the assigned .vhd or .vhdx disk. So how do you restore the permissions?
As always, there are many solutions, one could use Hyper-V manager, remove the disk from the affected VM and then add it again. You could even use icacls to somehow get the ACLs right.
Or, simply use my Restore-VMPermission script :)
It’s a PowerShell script that can be used to easily restore permissions for a specific VM (or all VMs) on your Lab Host, it requires the Hyper-V PowerShell Module to get the VMId and then builds the required ACE and adds it to the virtual disk file’s ACL.
As always, please don’t use this in production without thoroughly testing. This is meant for Lab environments.
Just try to start your VM again, or have a look at the .vhd or .vhdx files security settings and find a similar looking entry:
so long,
tom
Immer häufiger ersetzen Unternehmen klassische Telefonanlagen (PBX) mit Unified Communications Lösungen wie Microsoft Lync. Da Telefonie immer schon gute Verfügbarkeit hatte, müssen in der Lync Umgebung Konzepte her um diesen hohen Anforderungen gerecht zu werden.
Für das Rechenzentrum
In Außenstandorten sieht das meist anders aus, durch die Zentralisierung der IT-Dienste gibt es wenige (oder gar keine) Server und kein Personal das sich um die Wartung einer komplexen Umgebung kümmern kann. Die Clients in der Außenstelle hängen also von einer zuverlässigen Verbindung zum Rechenzentrum ab. Fällt diese Verbindung aus, ist der Lync Pool nicht mehr erreichbar und somit auch Telefonie nicht mehr verfügbar.
Genau in diesen Szenarien kommen Survivable Branch Server oder Applicances ins Spiel. Diese werden eingesetzt um Telefonie in Außenstellen unabhängiger von der Verbindung in das Rechenzentrum zu machen.
Folgendes Schaubild habe ich im TechNet gefunden, Benutzer die sich in der “Branch Site” aufhalten sollen weiterhin telefonieren können, wenn die WAN Verbindung (und dadurch der Lync Pool) nicht verfügbar ist. Features wie Konferenzen, Response Groups oder die Buddy List sind bei einem Ausfall der WAN Verbindung trotz SBS nicht verfügbar, es geht hier nur um Telefonie.
Quelle: http://technet.microsoft.com/en-us/library/gg398095.aspx
Die Grundvoraussetzung ist natürlich eine Verbindung in das Telefonnetz, die von der WAN Verbindung unabhängig ist. Üblicherweise hat man dafür einen Amtsanschluss und ein passendes Media Gateway in der Außenstelle.
Eine Survivable Branch Appliance ist, wie der Name schon sagt, eine Hardware Appliance. Diese kommt entweder direkt mit dem PSTN Gateway oder wird nachträglich eingebaut. Auf der Appliance läuft ein Windows Server, bei der Einrichtung werden die benötigten Lync Rollen installiert.
Ein Survivable Branch Server ist ein “normaler Server” (auch virtuell) auf dem die benötigten Lync Rollen installiert werden.
Bei beiden varianten, SBA und SBS, wird kein vollständiger Lync Front End Server, sondern “nur” die Rollen Mediation Server und Registrar, installiert. So erklärt sich auch, warum ein SBS zwar die Telefonie aufrechterhalten, aber z.B. keine Konferenzen hosten kann.
Eine SBA kann für Außenstellen mit bis zu 1000 Benutzern verwendet werden, während ein SBS bis zu 5000 Benutzer bedienen kann.
Beide Varianten benötigen keine Lync Server Lizenz, Windows muss natürlich entsprechend lizenziert werden.
Wie immer bei Lync, muss man die Konfiguration erst mal im Topology Builder planen, bevor es an die Installation geht.
Wir erstellen also eine neue “Branch Site” in der Topologie, dabei vergeben wir einen Namen und weitere Eigenschaften wie City, State und Country. Die Branch Site wird immer einer Central Site zugewiesen:
Die Checkbox für “Open the new SBA wizard…” ist Standardmäßig aktiv. Für die Lync Topologie gibt es den Unterschied zwischen SBS und SBA nicht, wir legen also im nächsten Schritt den FQDN für unseren SBS fest:
Clients in der Branch Site benötigen Zugriff auf einen Front End und Edge Pool für die meisten Funktionen, diese Pools werden im Wizard angegeben:
Im letzten Schritt wird das Gateway angegeben, welches in der Außenstelle für Telefonie verwendet wird:
Die Topologie muss veröffentlich werden, bevor der Survivable Branch Server installiert werden kann, auch dieser holt sich die Informationen über die zu installierenden Rollen aus dem Central Management Store.
Achtung: Das Computerkonto für den SBS sollte vor dem veröffentlichen der Topologie existieren, da einige Active Directory Berechtigungen gesetzt werden. Gibt es das Konto noch nicht, protokolliert der Topology Builder eine Fehlermeldung. Sobald der SBS Mitglied der Domain ist, muss die Topologie erneut veröffentlicht werden.
Im nächsten Beitrag installieren wir die Lync Rollen auf dem Survivable Branch Server und schauen uns die Funktionalität der Clients an.
Schönes Wochenende!
Tom
User A (the Boss) forwards his phone to User B (the Assistant). As someone calls the Boss, obviously the Assistants phone rings and she picks it up, it turns out the caller is important and needs to talk to the Boss. The Assistant transfers the call to the Boss… and that’s it. Since the Bosses phone is forwarded, nobody will be able to reach him.
Interestingly, in the ancient PBX world there was a “feature” (I’d call it bug) where the Assistant could “break through” the forwarding setting and therefore transfer calls to the Boss.
After bouncing some ideas we came up with a pretty simple solution. As the title implies, it makes use of Private Line feature in Lync 2013.
After some testing we configured a Private Line on the Bosses account and again, set up call forwarding to the Assistant in his Lync client.
Now, if someone calls the Boss, the Assistants phone would ring. If the caller wants to talk to the Boss, the Assistant can now simply forward the call to the Bosses private line. Call forwarding settings are not applied to this line, so his client would ring and he would be able to take the call.
Sure enough, there is no “one” solution, other possibilities would be the use of the Delegate or even Team Call features. In this particular case, though, we decided to use the Private Line.
Update: Another solution for this particular problem would be to have the Boss configure the Assistant as his delegate, and the configure “Forward to Delegate” in her Lync Client. This enables User B to put calls through to User A, even though User A’s client is configured to forward calls.
You can use my wrapper script for SEFAUtil to configure this, too.
.\Invoke-SefaUtil.ps1 –Server ly15.tomt.local –UserName boss@tomt.it –AddDelegate assistant@tomt.it –FwdToDelegates
Thanks to @jpborth for pointing this out!
The Private Line feature requires Lync Server 2013, and is not exposed in the Lync Control Panel. The Set-CsUser cmdlet is used to configure a private line for a user:
Set-CsUser –Identity boss@uclab.eu –PrivateLine “tel:+39123123”
Note: TechNet says, private line is new in Lync 2013, next time I’m in a pure 2010 environment, I’ll check if this feature can be configured on Lync 2010, too.
so long,
tom
First of all, in case you haven’t seen it yet, MVP Johan Veldhuis created an AWESOME GUI wrapper. Check it out: http://johanveldhuis.nl/en/sefautil-gui/
If you still want to run it via PowerShell, keep on reading ;)
After playing around with my script I figured it would be cool if it would return more “PowerShell like” objects instead of the plain text returned by sefautil.exe. I also wanted it to take pipeline input and updated the related links to point to a help page instead of the blog article.
Looking at the text output of the tool, we can see it has a format of “description : value”.
Sample output:
User Aor: sip:ttorggler@uclab.eu
Display Name: Thomas Torggler
UM Enabled: True
Simulring enabled: False
User Ring time: 00:00:30
Call Forward No Answer to: voicemail
As they have the same structure, this does immediately bring PowerShell dictionaries (hashtables) to mind. I simply used the –split method to split the strings at “: “ (colon space) and saved the result to a new array.
$SEFAResultSplit = $SEFAResult -split ': '
This worked as expected, so I went ahead and created my custom object like this:
$data = @{$SEFAResultSplit[0] = $SEFAResultSplit[1];
$SEFAResultSplit[2] = $SEFAResultSplit[3];
}
After testing it in the lab, I realized, even though this worked, it was less then ideal. Sefautil returns a dynamic amount of strings depending on which features are configured for the given user. So while it was reasonably sure that ”$SEFAResultSplit[0]” would always be “User Aor”, I would have no way of knowing the value of the next strings. And, more importantly, I would not know how many strings to expect, a more dynamic approach was needed.
This is what I came up with after some serious head scratching:
for ($i = 0; $i -lt $SEFAResultSplit.Count; $i++) {
if ([bool]!($i%2)) {
$j = $i + 1
$outData += @{$SEFAResultSplit[$i] = $SEFAResultSplit[$j]}
}
}
And here is what it does: The array that contains the split strings would always contain the “description” at an even number while the actual values would be found at odd numbers. So, the script loops through the array, and for each even number it creates a new “Key : Value” pair that is saved to a hash table.
Whatever object in the array is at the even index number would be used as key, and that even number +1 would be used as value. Sweet.
Well, first of all, because it’s cool ;)
Then, think about this:
Get-CsUser –OU "OU=users,OU=Italy,DC=tomt,DC=local" | .\Invoke-SEFAUtil.ps1 –Server ly15.tomt.local | Where-Object {‘Simulring enabled’ –eq $true}
First the Get-CsUser cmdlet is used to get all users within a specified organizational unit, the user objects are then piped into my wrapper script and the output can be filtered just like any other PowerShell output. Of course it could also be converted to html or exported to csv, the point is returning objects instead of text.
Sure enough, we can now also take advantage of pipeline input processing to set call forwarding settings for multiple users:
Get-CsUser -OU "OU=users,OU=Italy,DC=tomt,DC=local" | .\Invoke-SEFAUtil.ps1 -Server ly15.tomt.local -Verbose -AddDelegate user1@tomt.it
Again, we use Get-CsUser to get some Lync Users and pipe them to the script, which adds user1@tomt.it as a delegate to the every one of the users.
I’ve updated the script on my Sky Drive, find a link at the new help page.
Cheers,
tom
Seit es die Exchange Unified Messaging Rolle gibt, kann man diese durch die Installation von Sprachpaketen anpassen. In diesem Post beschreibe ich eine Änderung in der Funktionsweise die mir in den vergangen Tagen einiges an Kopfzerbrechen bereitet hat.
Anhand folgender Test Benutzer versuche ich das Verhalten in den jeweiligen Exchange Versionen zu erklären. “Bekannt” und “Unbekannt” bezieht sich hier auf die Exchange Umgebung, “bekannt” heißt der Benutzer hat eine Mailbox, die für UM aktiviert wurde, in der Exchange Umgebung, “unbekannt” heißt er hat keine Mailbox.
In dem Beispiel wurde das Sprachpaket für Deutsch auf dem Exchange UM Server installiert, außerdem gibt es einen Exchange Dial Plan, die Standardsprache des Dial Plans ist Deutsch.
Benutzer A = bekannt, Regionaleinstellung: Deutsch
Benutzer B = bekannt, Regionaleinstellung: Englisch
Benutzer C = Unbekannt, z.B. Partner, Kunde
Subscriber Access: Ein bekannter Benutzer ruft eine in Exchange konfigurierte Nummer an, um auf seine Mailbox zuzugreifen.
Call Answering: Ein bekannter oder unbekannter Benutzer wird auf ein UM Postfach weitergeleitet, da der ursprünglich Angerufene Teilnhemer das Gesrpäch nicht annehmen konnte.
Ruft Benutzer A die Subscriber Access Nummer an um auf seine Mailbox zuzugreifen, antwortet die Mailbox in deutscher Sprache.
Ruft Benutzer B die Subscriber Access Nummer an um auf seine Mailbox zuzugreifen, antwortet die Mailbox in englischer Sprache.
Wenn Benutzer B oder C auf die UM Mailbox von Benutzer A weitergeleitet werden, antwortet die Mailbox in deutscher Sprache. (Standardsprache des Dial Plans)
Wenn Benutzer A oder C auf die UM Mailbox von Benutzer B weitergeleitet werden, antwortet die Mailbox in deutscher Sprache. (Standardsprache des Dial Plans)
Ruft Benutzer A die Subscriber Access Nummer an um auf seine Mailbox zuzugreifen, antwortet die Mailbox in deutscher Sprache.
Ruft Benutzer B die Subscriber Access Nummer an um auf seine Mailbox zuzugreifen, antwortet die Mailbox in englischer Sprache.
Wenn Benutzer B auf die UM Mailbox von Benutzer A weitergeleitet wird, antwortet die Mailbox in englischer Sprache. (Wenn der Anrufer bekannt ist, wird dessen Sprache bevorzugt.)
Wenn Benutzer A auf die UM Mailbox von Benutzer B weitergeleitet wird, antwortet die Mailbox in deutscher Sprache. (Wenn der Anrufer bekannt ist, wird dessen Sprache bevorzugt.)
Wenn Benutzer C auf die UM Mailbox von Benutzer A weitergeleitet wird, antwortet die Mailbox in deutscher Sprache. (Wenn der Anrufer unbekannt ist, wird die Sprache der Zielmailbox verwendet.)
Wenn Benutzer C auf die UM Mailbox von Benutzer B weitergeleitet wird, antwortet die Mailbox in englischer Sprache. (Wenn der Anrufer unbekannt ist, wird die Sprache der Zielmailbox verwendet.)
Das mag in Textform etwas verwirrend wirken, der Unterschied ist für mich jedoch beträchtlich:
Bis Exchange 2010 SP1 benötigt man einen Dial Plan um alle Sprachen abzudecken, da Exchange rücksichft auf die Sprache der Mailbox nimmt.
Ab Exchange 2010 SP2 benötigt man für jede Sprache die unterstützt werden soll einen eigenen Dial Plan, da die Sprache der Mailbox ausschließlich für Subscriber Access berücksichtigt wird.
Tom
]]>Lync, being essentially a SIP proxy, does not store a lot of data. It cannot be compared to the likes of Exchange or SQL, systems that are all about storing stuff. With Lync, we need availability, the rest is real time traffic/ presence information, only interesting in the moment when it happens.
So what does Lync store then?
Topology, Policies, Configuration
The topology contains all relevant information about Lync Servers and applications. Once the servers are set up, administrators start configuring voice and client policies, trunk settings and all the other good stuff.
We can export all of this configuration settings using the cmdlet: Export-CsConfiguration.
User Settings, Buddy Lists
After configuring the server side of things it’s time to enable some users for Lync, as the admin does so, configuration about the users, like their RegistrarPool ,SipAddress and LineUri are saved within the Lync system. Once the user logs on and starts to add contacts to their buddy list, those get stored on the Lync Servers as well.
We can export all of this information using the cmdlet: Export-CsUserData
Response Group
If Lync Response Groups are configured there is some configuration information to store for them as well. This can be exported using the cmdlet: Export-CsRGSConfiguration
Location Service
The same idea applies to the Location Services, if configured, the configuration can be exported using the cmdlet: Export-CsLisConfiguration
Lync File Store
Sure enough, the Lync file store needs to be included in the backup plan as well. This is not stored inside Lync, it typically resides on a highly available fileserver.
Now if that external fileserver is backed up regularly, just make sure it is included in your backup/recovery documentation and try to restore it regularly. If it is not included in existing backup strategies consider using robocopy.
Monitoring and Archiving Data
Monitoring and Archiving data are not really stored inside Lync, either. Data is stored within the LcsCDR, QoEMetrics and LcsLog databases on a SQL server. There are no Lync tools available to backup this data, it is typically backed up using existing backup software for SQL or through SQL Management Studio.
As with the Lync file store, make sure to include backup/restore dependencies and scenarios in the Lync documentation.
Persistent Chat Data
Lync 2013 introduced the persistent chat feature, now for the first time we really do store instant messages and attachments sent by users.
Data is stored within the Persistent Chat Database and can be exported using the cmdlet: Export-CsPersistentChatData. If existing backup software for SQL is available, the persistent chat database is typically backed up like any other application database.
Now that we know what there is to backup, let’s have a look at how. I did point out the Export-* cmdlets and they’re the tool of choice for backing up Lync configuration information and settings.
Note. The account used to run the Export-* cmdlets needs to be member of the RTCUniversalServerAdmins group.
I’ve come up with a quick script that invokes the mentioned Export-* cmdlets. The script can be found on my SkyDrive:
More information about the script is on the help page.
Tom
]]>When a CAS Server is installed, the server hosts a virtual directory in IIS named “Autodiscover”.
Outlook and mobile phones contact this virtual directory and download the autodiscover.xml file if one of the following condition occurs:
- When you configure a mailbox
- When the mailbox is already configured but Outlook or the mobile phones is unable to connect to the Exchange server
- Outlook contacts periodically the Autodiscover service to update the connection settings if needed
The client discovers and connects to the Autodiscover service in a different way if located internal and external.
If Outlook is external
When the Outlook Client is outside the cooperate network it uses DNS to discover the Autodiscover URL by searching an A Record with autodiscover.domain.com or an SRV record that points to the public name.
If Outlook is internal
When the Outlook Client is inside the cooperate network it searches in AD for a SCP (service connection point) object. The SCP object is an entry for each CAS server in ActiveDirectory that contains the Autodiscover URL. You can check the SCP object by using the cmdlet Get-ClientAccessServer or ADSIedit. If you want to update the SCP records, use the cmdlet instead of ADSIedit.
What do I have to do if I’m upgrading from Exchange 2010 to 2013?
When you upgrade from Exchange 2010 to 2013 one of the first steps is to make the CAS 2013 internet facing. So clients get the autodiscover.xml file and settings via the Exchange 2013 servers. The CAS knows if the mailbox is hosted on an Exchange 2013 server, then the CAS sends you the settings to connect to the 2013 environment, or on the old 2010, then the CAS sends you the settings to connect to Exchange 2010 (CAS 2013 proxies the requests to 2010).
This is OK for external Clients. But for internal clients connections you have to update the SCP object from the old 2010 Exchange CAS server to point to the new 2013 CAS server. This is necessary because Exchange 2013 servers provide additional AutoDiscover information to clients to improve the discovery process. From this time when internal clients connect to the Autodiscover service they contact every time the 2013 CAS and get the connection settings.
You can update the SCP object and so updating the URL by using the cmdlet Set-ClientAccessServer like in the following example:
Set-ClientAccessServer CAS2010SERVER -AutoDiscoverServiceInternalUri https://cas2013server.domain.local/Autodiscover/Autodiscover.xml
Greetings
dn
At this point the Sharepoint EventLog can help you getting more details. With the Powershell commandlet get-splogevent you can search the corresponding exception message. The correlation ID is the key.
If I’m searching the corresponding exception message from the error shown on the printscreen above, I execute following command:
get-splogevent | where-object {$_.Correlation -eq "88ab369c-71dd-108f-df09-ea6c74999562"} | fl
Greetings
dn
Heute wollen wir uns die Music On Hold Thematik in einer Lync Enterprise Voice Umgebung anschauen. In diesem Artikel betrachten wir nur den Lync Client, MoH Konfiguration für IP Phones und Gateways werden in einem eigenen Artikel beschrieben.
Das kennt eigentlich jeder, trotzdem zur Erklärung: Teilnehmer A spricht mit Teilnehmer B, B möchte A weiterleiten und ruft C an. Bevor B ein neues Gespräch aufbauen kann, muss das aktuelle Gespräch gehalten werden. Damit A sich gut aufgehoben fühlt bekommt er Musik oder einen Text (“Sie werden mit dem gewünschten Teilnehmer verbunden…”) vorgespielt.
Jetzt wird das Thema interessant: Woher kommt die Musik? In der klassischen Telefonie wird für gewöhnlich ein “Medienserver” dafür verwendet, dieser hängt zentral an der TK Anlage und stellt Music on Hold für alle Gegenstellen zur Verfügung.
In einer End-to-End Infrastruktur wie Lync ist das nicht mehr so einfach, der Medien Datenstrom (Sprache) zwischen Teilnehmer A und B ist direkt, auch für die Signalisierung sind die User Agenten zuständig. Will also Teilnehmer B das aktuelle Gespräch halten, muss er dies Teilnehmer A irgendwie mitteilen und diesem dann, wenn gewünscht, Musik vorspielen.
In einer Lync Umgebung ist also der Lync Client von Teilnehmer B für die Musik zuständig.
In den Einstellungen des Lync Clients kann eine Audio Datei, die als Music on Hold gespielt wird, ausgewählt werden.
Möchte man sich für diese Aufgabe nicht auf seine Benutzer verlassen, kann man dies in einer CsClientPolicy vorgeben.
New-CsClientPolicy "MusicOnHold" -EnableClientMusicOnHold:$true –MusicOnHoldAudioFile:"C:\Program Files (x86)\Microsoft Office\Office15\MEDIA\DefaultHold.wma"
Grant-CsClientPolicy –Identity “Username” –PolicyName “MusicOnHold”
Diesen Pfad bekommt der Lync Client per in-band provisioning mit, das sieht im Log so aus:
Achtung: Das setzen von EnableClientMusicOnHold:$true alleine ist nich ausreichend, der Benutzer muss hier nach wie vor die Datei selbst auswählen.
Der aufmerksame Leser hat das Problem in der obigen Konfiguration sicher bereits gesehen, der Dateipfad für die Musik liegt im Installationsverzeichnis des Lync Clients. Dies unterscheidet sich allerdings von Lync 2010 zu Lync 2013 sowie bei 32 und 64 Bit Installationen.
Standardpfad Lync 2013: "C:\Program Files (x86)\Microsoft Office\Office15\MEDIA\DefaultHold.wma"
Standardpfad Lync 2010: "C:\Program Files (x86)\Microsoft Lync\MEDIA\DefaultHold.wma"
Dies kann problematisch werden, wenn Benutzer sich an mehreren Geräten mit unterschiedlichen OS oder Lync Client Versionen anmelden. In diesem Fall empfiehlt es sich einen “allgemein gültigen“ Pfad in die CsClientPolicy zu schreiben. Dies kann wiederum problematisch werden wenn Benutzer sich von Unternehmensfremden Endpunkten anmelden, diese finden dann am personalisierten Pfad keine Datei, oder können nicht auf eine Freigabe zugreifen… Die aktuell Verfügbaren Konfigurationsmöglichkeiten erlauben es nicht wirklich alle Szenarien abzudecken.
Natürlich gibt es eine Ausnahme in der die Musik vom Lync Server kommt, ruft Teilnehmer A eine RGS Nummer an, kommt die Wartemusik vom Lync Server, allerdings nur bis zu dem Zeitpunkt an dem ein Agent das Gespräch entgegen nimmt. Jetzt liegt die Verantwortung beim Lync Client des Agenten, wird das Gespräch vom Agenten gehalten, kommt die Musik vom Client desselben.
Hintergrund: Auf folgender Seite habe ich die SIP Kommunikation zwischen Teilnehmer A und B aus diesem Artikel genauer beschrieben. SIP: Anruf halten
Schönes Wochenende!
Tom
If you don’t know what SEFAUtil is and how to configure it, check out this great post.Or this one if you prefer German ;) In a nutshell, it’s a command line tool to configure Lync Voice Features (like call forwarding, team call) on behalf of end-users.
Warning: I do not recommend using this in production without understanding what it does, although I did test it in my lab, it may break something!
Ok, having that said, how do I use thins thing? First of all you will need a copy of this script on the computer where you have been running SEFAUtil until now. As the computer is authenticated using a certificate, you will not be able to run this from anywhere. Once you downloaded the script, start a Lync Management Shell and use it like in the following examples.
What I did in this script, is basically wrap PowerShell around SEFAUtil.exe, I did add some parameter validation, it can only run against Lync users for example. It does write a logfile to the $temp directory and supports PowerShells common parameters like –Verbose and –WhatIf.
.\Invoke-SEFAUtil.ps1 -Server ly15.tomt.local -Username thomas@tomt.it
This example invokes SEFAUtil without additional parameters, call forwarding settings for the user thomas@tomt.it are shown.
---
.\Invoke-SEFAUtil.ps1 -Server ly15.tomt.local -Username thomas@tomt.it -EnableSimulRing +391231234567
This example enables Simul Ring for the user thomas@tomt.it. The destination number for Simul Ring is +391231234567.
---
.\Invoke-SEFAUtil.ps1 -Server ly15.tomt.local -Username thomas@tomt.it -AddTeamMember user10@tomt.it
This example adds user10@tomt.it to thomas@tomt.it. This will also enable Simul Ring for the user.
---
.\Invoke-SEFAUtil.ps1 -Server ly15.tomt.local -Username thomas@tomt.it -DelayRingTeam 10
This example set's the delay for Team Calls to 10 seconds for the user thomas@tomt.it
---
.\Invoke-SEFAUtil.ps1 -Server ly15.tomt.local -Username thomas@tomt.it -DisableTeamCall
This example disables Team Call for thomas@tomt.it
---
The latest version of the script can be found here:
Note: The script requires the Lync Module to be available on the Computer where it will be run, it does also require PowerShell version 3.
Note: Changing the CallAnswerTime only does not work, a limitation of the SEFAUtil.exe does not allow this setting to be changed without also configuring CallForwarding
so long,
tom
After installing the certificate on the box we configured the “virtual web servers” and the corresponding “real web servers”. Outlook Web App worked straight away so we went ahead and tried to connect a Windows Phone 8 using ActiveSync.
That didn’t go so well, the Phone would not connect and instead give a strange error message saying:
Error 85002028: Your Windows phone does not support this server version.
Ok, that’s where the interesting begins. I quickly fired up Remote Connectivity Analyzer which provided a much clearer error description along with a link to this KB article.
It turned out that we had not installed the intermediate CA certificate on the Sophos box. As the Winodws Phone requires the Reverse Proxy to send the whole chain down for verification, this simply didn’t work. Here comes a quote from the above KB article.
Windows Mobile-based devices do not generally contain intermediate CA certificates in their certificate store. Internet Information Services (IIS) sends the whole certificate chain to the device. However, IIS does this only if it can verify the whole chain. By default, the device does not contain these certificates. Therefore, the server must send them. The device must contain only the root certificate in its certificate store.
Makes sense, finally.
until next time,
tom
Public folders have been around for quite a while now, and for some time they have been written off, even by Microsoft. Exchange 2007 RTM’d without management features, 2010 came along with no real improvements to replication and high availability.
Everything changed, Exchange 2013 introduces the shiny, new “Modern Public Folders”. This shows that the Exchange Team is actually listening to customers, this, and the availability of public folders in Exchange Online (Exchange Team Blog) tells us that modern public folders are here to stay. So what’s changed?
No more public folder databases, modern public folders are stored in the mailbox database, within special public folder mailboxes. This gives the administrator more flexibility (think DAG) and reduces a lot of the additional complexity that came with managing PF replication. Other nice side effects are that clients do not need to connect to the mailbox servers anymore, CAS is now able to handle ALL incoming connections.
The hierarchy is stored within a root public folder mailbox but every public folder mailbox has a read-only copy, so all clients get quick access to it. The root mailbox can be shown using the following cmdlet:
Get-OrganizationConfig | select RootPublicFolderMailbox
Once you are ready to migrate public folder to Exchange 2013, head over to Microsoft’s Download Center and download the Public Folder Migration Scripts. I downloaded these scripts to the Exchange 2010 server, as they will be run there. The first script to run is Export-PublicFolderStatistics.ps1, it takes to parameters as input, the first one is a filename the second one is your Exchange 2010 mailbox server.
.\Export-PublicFolderStatistics.ps1 sizemap.csv EX14.tomt.local
This script creates a file called sizemap.csv in the current directory, this file contains public folder statistics gathered from the server EX14.tomt.local. It’s actually a simple list of public folder names and their respective sizes in bytes.
The second script, PublicFolderToMailboxMapGenerator.ps1 reads the output file generated by the first one, and takes two additional parameters. The first parameter is the maximum mailbox size in bytes, then comes the sizemap.csv generated by the first script, the last parameter specifies a new file, which will contain a public folder to mailbox mapping based on the maximum mailbox size parameter.
.\PublicFolderToMailboxMapGenerator.ps1 1073741824 sizemap.csv mailboxes.csv
This example specifies a 1GB mailbox limit, it reads the sizemap.csv from the previous script, and creates a new mailbox to home public folders every time the mailbox size will reach 1GB.
As my little lab does not have a huge public folder structure, everything will be placed into the first mailbox. Note that I changed the name of the first “TargetMailbox” as the default was something like “Mailbox1”.
So now that we have created the mailboxes.csv file, we need to copy it over to the Exchange 2013 mailbox server. In the next step we are going to import the mailboxes.csv file and create the target public folder mailboxes with a little bit of PowerShell:
Import-Csv .\mailboxes.csv | select -expand TargetMailbox | foreach {New-Mailbox -Name $_ -PublicFolder -HoldForMigration:$True -IsExcludedFromServingHierarchy:$true}
The two parameters HoldForMigration and IsExcludedFromServingHierarchy are used to prevent users from accessing the public folder mailbox for now. To verify that the mailboxes have actually been created use the following cmdlet:
Get-Mailbox –PublicFolder
Ok, so now that we have created the target mailboxes we can go ahead and start moving data. Again, we will need the mailboxes.csv file, as the New-PublicFolderMigrationRequest cmdlet takes it as input:
New-PublicFolderMigrationRequest -SourceDatabase (Get-PublicFolderDatabase -Server ex14.tomt.local) -CSVData (Get-Content .\mailboxes.csv -Encoding Byte)
In this example I am getting public folder database information from the server EX14.tomt.local and then reading the content of mailboxes.csv, which has to be in the current location. As the name implies, a new Public Folder Migration Request is generated, it copies data at about two to three GB per hour. The request is created with the PreventCompletion parameter set to $true, that means, once the data has been copied, the request will be AutoSuspended.
Users should not have noticed anything about this public folder migration until now, they continue working on the 2010 public folder as usual. Before we can complete the public folder migration request, though, we will need to block user access to the legacy public folders. We will need some time to synchronize the already moved data with latest changes during this window of downtime.
So once you’ve informed your users, we are going to prevent access to legacy public folders, remember that because of HoldForMigration:$true, we are also preventing access to the modern public folders!
Set-OrganizationConfig -PublicFoldersLockedForMigration:$true
This setting prevents users to access public folders, be sure to allow some time for it to replicate if you have more than one public folder database. Now that no one is able to make changes to the legacy public folders, we can go ahead and set the PreventCompletion flag to $false, and then resume the public folder migration request to finally move all data.
Set-PublicFolderMigrationRequest -Identity \PublicFolderMigration -PreventCompletion:$false
Resume-PublicFolderMigrationRequest -Identity \PublicFolderMigration
Once this is done, it is recommended to test access to modern public folders with a few users, before allowing everybody to make changes again. This is the last point in time where you do have a way back without data loss!
To test access to the modern public folders, we use the following cmdlet:
Set-Mailbox –Identity user1 –DefaultPublicFolderMailbox PFMailbox001
This overrides the IsExcludedFromServingHierarchy and allows the user user1 to access public folders on the new Exchange 2013 server. Outlook Connection Status will show something like this:
If everything is fine, we can finally remove the IsExcludedFromServingHierarchy flag and set the PublicFolderMigrationComplete property to $true.
Get-Mailbox -PublicFolder | Set-Mailbox -PublicFolder -IsExcludedFromServingHierarchy:$false
Set-OrganizationConfig -PublicFolderMigrationComplete:$true
Ok, one last thing: You may have noticed that the Proxy Server in the screenshot above shows the external server name for the connection to Exchange Public Folders. This is due to a bug in Outlook, before a fix becomes available, make sure internal clients can access the external hostname by creating a split DNS record. There is a KB article available, here.
Nice, that completes this series on migrating Exchange 2010 to Exchange 2013. Thanks for following along :)
so long, see you next time!
tom
]]>The taskbar properties feature a new “Navigation” pane, we can configure stuff like “Boot to Desktop”, yay :)
Another desperately needed feature is the new Web Application Proxy server role, many people (including me) think this is going to be the replacement for TMG. So, very keen to play with the new toy I went ahead and added the server role, found underneath “Remote Access”.
Adding “Web Application Proxy” as a role service.
Like in Windows 2012 the server manager kindly reminds me to configure the newly added role:
Just in case you want to run this wizard again but can’t find it anymore, it can be started from the Remote Access Management Console.
The first step in the Wizard asks for a federation service name, now until this moment I didn’t really bother researching anything about this new server role. Not the smartest move… As documentation is still pretty thin for Windows Server 2012 R2 I decided to simply set up an ADFS server in my lab and try to connect the Web Application Proxy to that federation service.
The first step is to add the Active Directory Federation Services server role to an machine in the domain.
Again, the Server Manager reminds me to configure the new role, the first thing I do is supplying credentials which are used to perform the configuration:
In the next step I select a certificate for the federation service and set a name for it. Obviously I do have to create a DNS record that resolves the federation service name to the IP address of the server that’s actually hosting it.
Now I have to select a service account for the federation service, note that the federation service name must be added as Service Principal Name to the account. This can be done using “setspn –F –S host/adfs.tomt.local adfssvc”
In the last step I select the database to use for the federation service, as I am using only one server I’ll give the Windows Internal Database a go.
Ok, no we do have a federation service running, so we can go ahead and configure the Web Application Proxy.
Ok, picking up where we left for a quick excursion to ADFS, we are now back on the Web Application Proxy machine and specify the newly created federation service name.
A certificate is required on the proxy, too. So after requesting a certificate from my internal CA, I can go ahead and select it here. Make sure that the certificate’s subject alternative names include the federation service name!
Ok, the last step shows the PowerShell code that get’s executed and if everything works out, you’ll see a message that the Proxy was configured successfully.
A few caveats: Make sure DNS resolution is ok, the proxy must be able to resolve the federation service, and the ADFS server must me able to resolve the proxy. The certificate on both servers must include the federation service name.
After having configured ADFS and the Web Application Proxy, which also acts as ADFS Proxy, we can finally proceed and publish a server. This is done using the Remote Access Management Console.
I hit publish in the tasks pane and in the wizard that comes up, I am asked to select if I want to use pre-authentication or simply pass-trough the requests. After all that pain with installing and configuring ADFS I do definitely want to use pre-authentication :)
Ok, so I have to select the ADFS relying party, whatever that is:
After that I am prompted to enter a name for the publishing rule, an external and internal URL as well as a certificate.
Again, we get to see the actual PowerShell code just before the publishing rule is created. Niiice, we have just successfully configured our first "post TMG” publishing rule.
Now to make sure that this is really working, let’s fire up a client and browse to the published URL, owa.tomt.it in my case. Browsing to a published web site that requires pre-authentication, redirects the client to the AD FS Proxy service.
After successfully authenticating against the Web Application Proxy the client gets redirected back to it’s intended destination web site.
Note: Make sure the client actually behaves like an external client, it must resolve the federation service name to the Web Application Proxy for this to work!
Another application that I do publish using TMG frequently is Lync, sure enough I have to map the external web services port from 443 to 4443. This can be done using Web Application Proxy, too. For Lync we don’t use pre-authentication:
The internal URL contains the port to use:
Awesome, that gives us a new possibility to publish web services, obviously we are not yet able to use it in production and time will tell if it get’s a few additional features in RTM, all in all, for no additional cost, I think it is already a nice tool to use.
Wish list,or: What would be nice to have in the RTM Version of Windows Server 2012 R2:
Publish multiple servers for a particular external URL (think load balancing)
Health checking of internal servers
Maybe some additional authentication possibilities
That’s it for today, so long
tom
The first thing to consider when thinking about integration between Exchange 2013 and Lync is certificates. The servers use OAuth and TLS connections and we need the certificate common names to match the names that the servers use to access the resource. In my simple environment I do have the CN ly14.ntsystems.local on my Lync server’s certificate, the Exchange server’s certificate has a CN of ex14.ntsystems.local.
The first thing we configure, if it’s not already set up, is Exchange Autodiscover service. What we actually care about is the internal URI used:
Get-ClientAccessServer | fl AutoDiscoverServiceInternalUri
If it looks good, we go ahead and use the following script shipped with Exchange to set up an Enterprise Partner Application.
& $exInstall\Scripts\Configure-EnterprisePartnerApplication.ps1 –AuthMetaDataUrl https://ly15.ntsystems.local/metadata/json/1 -ApplicationType Lync
The “&” sign tells PowerShell to start the script located at the Scripts folder in the Exchange 2013 installation directory. With the AuthMetaDataUrl we specify the Lync 2013 Pool’s Auth Metadata document, this includes public key information for the Partner Application.
So next up we have to configure Lync to trust the Exchange Server 2013.
New-CsTrustedApplicationPool -Identity ex15.ntsystems.local -Registrar ly15.network.local -Site Bolzano -RequiresReplication $False
New-CsTrustedApplication -ApplicationId OutlookWebApp -TrustedApplicationPoolFqdn ex15.ntsystems.local -Port 5199
New-CsPartnerApplication -Identity Exchange -ApplicationTrustLevel Full -MetadataUrl https://autodiscover.ntsystems.local/autodiscover/metadata/json/1
Set-CsOAuthConfiguration –Realm ntsystems.local
Enable-CsTopology
Ok, so first we create a new Trusted Application Pool withing Lync, the Identity of the application pool is the Exchange 2013 server, the registrar is the Lync standard edition server. Then we create a Trusted Application and assign it to the trusted application pool configured before. The third thing we configure is a Partner Application and set the OAuth configuration, we need those last steps for the Online Meeting request in OWA, make sure that you actually use the Autodiscover URL, this didn’t work if I used the server name instead.
Ok, once the configuration is done, publish the topology.
Back on the Exchange side of things we need to configure the OwaVirtualDirectory to enable Instant Messaging.
Get-OwaVirtualDirectory | Set-OwaVirtualDirectory –InstantMessagingEnabled $True -InstantMessagingType OCS
Now comes the nasty part, we have to update OWA’s web.config file to include the Exchange Servers certificate thumbprint. So first, we use the following cmdlet to get the certificate’s thumbprint:
Get-ExchangeCertificate
Copy the thumbprint of the certificate that is assigned to the IIS service and fire up notepad to open the web.config file of the Owa virtual directory, located here:
C:\Program Files\Microsoft\Exchange Server\V15\ClientAccess\OWA\web.config
No we need to Include the following Lines underneath the <AppSettings> node:
<add key="IMCertificateThumbprint" value="Exchange Cert Thumbprint"/>
<add key="IMServerName" value="ly15.tomt.local"/>
So, after updating that web.config file, there is one step left, we need to actually allow users to use instant messaging in OWA. This is controlled in the Owa mailbox policy, to keep it simple I’ll just update the default policy which will enable IM for everybody.
Set-OwaMailboxPolicy -Identity "Default" -InstantMessagingEnabled $True -InstantMessagingType "OCS"
Wow, now that all configuration is done, I like to do a quick iisreset to make sure all the configuration changes are picked up, obviously this should not be done on production machines…
If users sign in to webmail, they will be able to sign into Lync, set their state and participate in IM chats.
And, as a nice little addon, we can now also create Online Meeting requests from OWA:
Note, Exchange 2013 CU1 is required for Online Meeting requests and Lyncdiscover has to be set up, too.
Enjoy,
tom
]]>So, we talked about Exchange 2013 CAS being a pretty smart proxy, that’s why we had to append ?ExchClientVer=15 to the ECP URL in order to get to the new Admin Center while the Mailbox was still on Exchange 2010. Obviously, once the mailbox gets moved to Exchange 2013 this is no longer required. Another thing that will change as we move mailboxes from Exchange 2010 to 2013 is the Outlook Profile, it does no longer show the RPCClientAccess endpoint as Server, instead it gets updated to show the <Mailbox GIUD>@<Primary SMTP domain>.
There are a couple of things to take into consideration before moving mailboxes to the 2013 server. As we learned in part two of this series, it is essential to move the namespaces used by Exchange to the new CAS prior to moving mailboxes, users would not be able to access mailboxes if the names would still point to an Exchange 2010 CAS. Another important check is whether new mailbox servers have been provisioned with enough disk space to accommodate the moved users, and if the properties of the mailbox database, such as ProhibitSendReceiveQuota and OfflineAddressBook have been set to desired values. Assuming that everything is fine, we go ahead and create some move requests, very much the same way as we did in Exchange 2010.
New-MoveRequest –Identity user3@tomt.it –TargetDatabase mbd01
This command moves the mailbox of user3 to the target mailbox database mdb01 which is hosted on Exchange 2013. Like in 2010, the move is performed online, so the user is able to work in his mailbox until the move request is finished. Once the move request completes, the user will be prompted to restart Outlook, this is when the Profile gets updated to show the GUID instead of the server name or RPCClientAccessServer property.
Note that this is the users mailbox GUID, as that is the user’s unique identifier within the Exchange Organization, it will be different for every user. This GUID is used to locate the active mailbox database copy, in Exchange 2013 all protocols are provided to the user by the server that is hosting the active mailbox database copy.
In Exchange 2010 we had the ability to do batch move requests, but it was more like creating many move requests and assigning the same BatchName to them, Get-MoveRequest was used to retrieve information about the move requests. Now Exchange 2013 comes with some new cmdlets that are dealing with batch migrations: *-MigrationBach.
Honestly I do think those new cmdlets are a little complicated, I guess they were primarily introduced to make hybrid or cloud move requests easier, in an on-premises world they might not be that useful. I created a New-MigrationBatch and then started the migration. The first thing we need is a CSV file with a column called EmailAddress, so let’s get all users homed on the Exchange 2010 server, and export them to CSV:
Get-Mailbox -Server ex14 | select @{n="EmailAddress";e={$_.PrimarySmtpAddress}} | Export-Csv -NoTypeInformation -Path .\BatchMove.csv
Now we can use this CSV file to create a new MigrationBatch, you see what I mean with a little complicated…
New-MigrationBatch -Local -Name BatchMove -CSVData ([System.IO.File]::ReadAllBytes(".\BatchMove.csv")) -TargetDatabases mdb01
It’s looking like that in PowerShell:
Ok, once we have created the MigrationBatch, we can go ahead and start the migration to actually move data over to the new Exchange.
Get-MigrationBatch | Start-MigrationBatch
The Get-MigrationStatistics cmdlet can be used to get information about the ongoing migrations, once all mailboxes are moved, TotalCount and SyncedCount should show the same value. Get-MigrationUser can be used to get information about the individual mailboxes being moved. The Get-MigrationBatch cmdlet includes a Report property containing links to CSV reports about the MigrationBatch.
Note that the Start-MigrationBatch does not complete the move requests, use the Get-MoveRequest cmdlet to show the individual move requests and their state, it will be AutoSuspended. The Complete-MigrationBatch cmdlet is used to complete the move requests:
Get-MigrationBatch | Complete-MigrationBatch
If we run the Get-MoveRequest cmdlet again, we will finally see that mailboxes have been moved to Exchange 2013.
Since there is not much documentation available, yet, I will stick with the “old” way and just use New-MoveRequest to move mailboxes for now.
Ok so now that we have migrated our users over to the new Exchange it’s time to have a look at Outlook, as mentioned above, the profiles will be updated and no longer show a server name, but it will also be using RPC over HTTP on the internal network:
The proxy settings of the Outlook profile is updated, too, it will now select “On fast networks, connect using HTTP first…” by default.
The AutoDiscover.xml file now contains more information for clients, while Exchange 2010 had the following three Type nodes <EXCH>,<EXPR> and <WEB> the new AutoDiscover.xml contains two <EXHTTP> nodes for internal and external OutlookAnywhere settings.
It is very important to update Outlook to the minimum required version by Exchange 2013 before moving mailboxes, as older Outlook versions will not be able to interpret the new xml file.
Well, and that’s it for part four. We do have one big thing left for part five, public folders.
Stay tuned,
tom
]]>Microsoft has released a KB (http://support.microsoft.com/kb/2834139/en-us) article how to get that work.
Simply change your Outlook Anywhere settings to use internal and external NTLM with requirement of SSL:
Get-OutlookAnywhere –server ex01 | Set-OutlookAnywhere -ExternalClientAuthenticationMethod NTLM -InternalClientAuthenticationMethod NTLM -ExternalClientsRequireSsl $true -InternalClientsRequireSsl $true
The next time the client gets the Autodiscover File, it sets the Logon Network Security Settings of the Outlook Profile from “Anonymous Authentication” to “Negotiate Authentication” and you can open the public folders located on Exchange 2010.
Greetings
dn
First you have to install WLNB on both CAS nodes and create the Cluster and VIP. The CAS Servers need only one NIC, we use the Multicast operation mode.
Next we create the Port Rules. In this example I create a port rule for the whole port range. Because there is not need of Affinity we can safely disable the the feature:
Now create the Host A Record for the Cluster name excararray01 to point to the VIP.
Remember to change the internal URL’s of the virtual directories of both CAS servers to use the Cluster name and not the CAS computername.
Kerberos support
I have 2 UAG servers that are publishing the Exchange 2013 CAS servers. On the UAG servers I don’t want to publish both CAS servers and use the UAG load balancing. I want to publish the CAS Cluster Name and let the WNLB do the load balancing.
If you don’t configure an alternate service account for the CAS Cluster Name you will no be able to use NTLM authentication for Outlook Anywhere.
To use Kerberos authentication you have to create a computer account in AD (the name don’t have to match the array FQDN):
Then run the following script that is located in C:\Program Files\Microsoft\Exchange Server\V15\Scripts to configure the Alternative Service Account
.\RollAlternateServiceAccountPassword.ps1 -ToArrayMembers excasarray01.domain.local -GenerateNewPasswordFor "domain\EXCASARRAY01ASA$" –Verbose
excasarray01.domain.local stands for the FQDN of the CAS array
domain\EXCASARRAY01ASA$ stands for the created computer account
After the script has finished configuring we have to register some spn’s with the CAS Array FQDN
setspn -s exchangeMDB/excasarray01.domain.local domain\EXCASARRAY01ASA$
setspn -s exchangeRFR/excasarray01.domain.local domain\EXCASARRAY01ASA$
setspn -s exchangeAB/excasarray01.domain.local domain\EXCASARRAY01ASA$
setspn -s http/excasarray01.domain.local domain\EXCASARRAY01ASA$
setspn -s http/excasarray01.domain.local domain\EXCASARRAY01ASA$
Now we can publish the CAS Array FQDN with uag and use NTLM as authentication method for Outlook Anywhere.
Greetings
dn
As you already know, there is no Hub Transport server role in Exchange 2013, the transport pipeline has been split into three services, one of which is running on the CAS, the other two on the MBX role.
This service is running on the CAS role, like all other CAS services, it is nothing more than a stateless (but smart) proxy for inbound and outbound SMTP connections. Neither message queuing, nor message filtering happens here. The front end transport service talks to the transport service on the MBX server role.
This service runs on the Mailbox server role, like the hub transport role in Exchange 2010, this service performs message queuing, inspection, categorization and so on. Very much NOT like in Exchange 2010, though, this service never talks to a mailbox database. This service routes messages between the front end transport service, the transport service and the mailbox transport service.
This service runs on the Mailbox server role, too. It receives messages via SMTP from the transport service and connects via RPC to the mailbox database to deliver the message. It also connects to mailbox databases via RPC to retrieve messages and forward them to the transport service, again using SMTP.
This shows one thing very clearly, through the use of SMTP, Exchange 2013 is able to break the close relationship between server roles that existed in previous versions. The front end transport role in CAS does no longer use RPC, an thus, could be running a different software version than the mailbox server, communication between mailbox servers, specifically between the mailbox transport service and the transport service, also uses SMTP and has no requirement to be on the same software version.
I used Wireshark to capture an incoming mail proxied through the CAS:
The Client (10.1.1.10) connects to the CAS (10.1.1.21) using TCP 25, all SMTP messages are exchanged between those two nodes. Note, that the CAS does only send the “250 Queued Mail for delivery” after connecting to the transport service on the Mailbox Server (10.1.1.25), since the Front End Transport service does not queue mails locally, this “smart proxy” functionality ensures that the message gets stored in the mailbox servers queue, before sending an OK to the client. The connection between CAS and MBX uses TCP 2525 and is encrypted using TLS, this is why Wireshark is not able to encode it as SMTP.
There is whole section on Transport on TechNet: http://technet.microsoft.com/en-us/library/aa996349.aspx
Now that we know (a little bit) how transport works in Exchange 2013, we can start to include Exchange 2013 servers to the send connectors and configure the appropriate receive connectors.
To add Exchange 2013 servers as sources to the existing send connectors, use the Exchange Admin Center and navigate to “mail flow, send connectors”. Then select the send connector to edit and add the new source server under “scoping”
We could also use PowerShell to add additional SourceTransportServers to the connector, be aware though, that the existing servers have to be included in the command.
Set-SendConnector –Id ToInternet –SourceTransportServers ex14,ex15
Another interesting flag sits under the “general” node of the send connector’s properties: Proxy though client access server”
So what’s that all about? If this flag is checked, outbound mails are not sent directly by the mailbox server’s transport role, but are proxied through a Client Access Server. This could be interesting if only a subset of Exchange Servers (CAS) were allowed to connect to the internet via SMTP. With multi role servers, which are recommended for many environments, this flag will have no effect.
Ok, so now we have got our outbound mail flow configured, what about incoming mails? Receive connectors are per-server settings, so we have to check the configuration of existing connectors and configure the new server accordingly.
Get-ReceiveConnector –Server ex14 | ft Identity,Enabled,Bindings,RemoteIpRanges
This command shows all receive connectors on the 2010 server, along with the Ports used and the remote IP addresses that are allowed to use this connector. Obviously, if there are custom AD permissions or authentication methods defined, those have to be configured on the new server, too.
Nice, now we have got client access and transport covered, the next post will finally include moving some mailboxes to the new Exchange server.
so long,
tom
Today I installed 4 Exchange 2013 servers. All of them have many “MSExchange Common” 106 errors in the Application Log indicating that Performance Counters could not be updated:
Performance counter updating error. Counter name is LDAP Queries Issued by Expanded Groups., category name is Expanded Groups Cache. Optional code: 3. Exception: The exception thrown is : System.InvalidOperationException: The requested Performance Counter is not a custom counter, it has to be initialized as ReadOnly
The problem is that the performance counters are not registered correctly. I wrote a simple script to re-register all the Exchange 2013 performance counters. Now the Application log looks much better
First open Powershell in Admin Mode, then execute the following code:
Note that New-PerfCounters actually deletes and re-creates the performance counter, there is no need to use Remove-PerfCounters first. The script might throw some errors if performance counters cannot be created or files are invalid, other than that no information is displayed, no news is good news, I guess ;) For more information check the Application Log of the server, two events are logged for every performance counter. Event ID 1001 indicates that the counter has been removed, while Event ID 1000 is logged as soon as the counter has been loaded again.
If an antivirus software is running on the server, it could be disabled temporarily to improve performance.
Special thanks to @msxfaq :)
Greetings
nd
First we have to prepare 2 Windows Server 2008 R2 Server each of them with 2 NIC’s and at least 4GB RAM. The NIC’s should be configured in this way:
INTERNAL
Default Gateway | should not be defined |
DNS Servers | should be defined |
Register this connection’s address in DNS | Enabled |
File and Printer Sharing for Microsoft Networks | Enabled |
Client for Microsoft Networks | Enabled |
NetBIOS over TCP/IP | Enabled |
LMHOSTS lookup | Enabled |
EXTERNAL
Default Gateway | should be defined |
DNS Servers | should not be defined |
Register this connection’s address in DNS | Disabled |
File and Printer Sharing for Microsoft Networks | Disabled |
Client for Microsoft Networks | Disabled |
NetBIOS over TCP/IP | Disabled |
LMHOSTS lookup | Disabled |
The order should modified that NIC INTERNAL becomes the first NIC used:
The Next steps are to install NLB (without configuring it) and UAG on both nodes. Install UAG in the following order:
When UAG is fully installed, we have to configure it. Lets start on the node that becomes the Array Manager.
Open UAG and select the Network Settings
Then we have to define the Topology: Select the node as Array Member and specify credentials
Before you join the 2nd node as the array member, open the TMG console and add the 2nd server to the “Managed Server Computers” group. Install the Policy.
Open the UAG console on the 2nd server and join him to the array
TIP: If the UAG services on the 2nd node don’t start, copy the content of folder C:\Program Files\Microsoft Forefront Unified Access Gateway\von\Conf from the manager to the member server. Then start the services.
Now we have to configure the NLB from the UAG console. Open Network Load Balancing from the Admin menu and add the first VIP IP:
Next you have to save and activate the configuration. UAG is now building the NLB cluster with both nodes. You can check the activity with the UAG Activation Monitor:
Finally we have to open the WebMonitor and navigate to the Array Monitor section. There we have to start the NLB nodes:
After you have started the nodes, the NLB status changes to “Converged”
INFO: When you open the NLB manager, you will get RPC errors. The reason is that DCOM does not work with TMG/UAG. But don’t worry, the cluster is OK if the Web Monitor doesn’t show errors.
In Part 2 I will explain how to publish Exchange 2013 OWA / OA and ActiveSync.
Greetings
dn
Welcome back, this is the second part of my series on migration to Exchange 2013. I covered prerequisites, installation and a little bit of management in the first post, now we’ll have a look at namespaces and certificates.
After installing Exchange, it’s time to start getting into the planning phase :) Ok, just kidding, I’ll use the newly installed Exchange server to walk through some planning steps, though.
First of all, let’s make some assumptions. We do have an Exchange 2010 server and a CAS array with the RpcClientAccessServer endpoint configured to outlook.tomt.local. For OWA, EWS, OAB, EAS and Outlook Anywhere there is only one namespace, mail.tomt.it. Outlook Anywhere is configured with NTLM authentication, more on that later. Internal Outlook clients would connect (via MAPI) to outlook.tomt.local, external clients would use Outlook Anywhere (HTTPS) and connect to mail.tomt.it. The certificate on Exchange 2010 has a Subject of CN=ex14.tomt.local and the following SANs: ex14.tomt.local, mail.tomt.it.
Ok, so far so good. Now when migrating to Exchange 2013, it is recommended that the new server takes over the namespace and deals with all incoming client connections. For incoming connections with a mailbox homed on Exchange 2013, our new CAS would simply proxy the request to the mailbox server hosting the mailbox. For mailboxes hosted on Exchange 2010, though, the 2013 CAS would act as HTTP proxy and connect the client with the Outlook Anywhere endpoint (/rpc) of the Exchange 2010 CAS. So what does that mean? First of all, this does not apply for internal, RPC over HTTP clients, the RPCClientAccessServer namespace is not moved to CAS 2013. If you are in the unfortunate situation to have the RPCClientAccessServer namespace match your OutlookAnywhere namespace, there is a very good post over at the Exchange Team Blog.
For RPC over HTTP connections, OutlookAnywhere must be enabled on the Exchange 2010 CAS before Exchange 2013 CAS can take over the namespace, and the IIS Authentication methods must include the NTLM. The Exchange 2013 CAS is authenticated by Exchange 2010, this does not work with basic authentication. To make sure Outlook Anywhere is configured, and the IIS Authentication method includes NTLM use the following cmdlet on Exchange 2010.
Get-OutlookAnywhere –Server ex14 | fl ExternalHostname, ClientAuthenticationMethod, IISAuthenticationMethods
To add NTLM as an IIS Authentication method, use the following cmdlet. Note that the ClientAuthenticationMethod does not matter in this case.
Set-OutlookAnywhere –Identity ex14\rpc* –IISAuthenticationMethods Basic,NTLM
Nice, now Exchange 2010 CAS is ready and we can start thinking about the certificate request for Exchange 2013. We want the new CAS to take over the namespace, so we do already know which name to include: mail.tomt.it, but is that enough? Well, the answer is, it depends ;)
Exchange 2013 introduces some radical changes, including how client connections are handled. In 2010, client affinity was everything. Clients would always need to be redirected to the same CAS for a specific session, if that CAS would become unresponsive or if the client would connect to another CAS, re-authentication would occur. When talking about load-balancing, an expensive Layer 7 capable load-balancer was required. The load-balancer would intercept the traffic and make sure client A would always reach server A for a particular session. This had one clear advantage, though, because the load-balancer was L7 aware (knows which endpoint the client asked for), it could check if a particular endpoint was reachable on a CAS, and if not redirect the client to a CAS where it was reachable.
This is not the case in 2013 anymore, client to CAS sessions are stateless and a less-expensive Layer 4 load-balancer (or DNS round-robin) could be used with 2013. A L4 load-balancer, on the other hand, would have no idea of what endpoint the client was looking for, it would only see and forward encrypted (https) packets. Protocol specific namespaces are here to solve that problem. If we created a virtual IP and a distinct name for each endpoint on the CAS (OWA, EWS, EAS…) the L4 load-balancer would be aware of what endpoint the client was looking for.
So, long story short, we are going to include more names in that certificate. The subject is CN=ex15.tomt.local and the SANs are: ex15.tomt.local, oa.tomt.local, mail.tomt.it, owa.tomt.it, eas.tomt.it, ews.tomt.it, oab.tomt.it. In the DNS configuration we need a CName for all of these names pointing to our new CAS, or an A record pointing to the load-balancers virtual IP. Next, we’ll use the Exchange Management Shell to update the ExternalUrl properties of the virtual directories.
Set-OwaVirtualDirectory –Identity ‘ex15\owa (Default Web site)’ –ExternalURL https://owa.tomt.it/owa
Set-EcpVirtualDirectory –Identity ‘ex15\ecp (Default Web site)’ –ExternalURL https://owa.tomt.it/ecp
Set-OabVirtualDirectory –Identity ‘ex15\oab (Default Web site)’ –ExternalURL https://oab.tomt.it/oab
Set-WebServicesVirtualDirectory –Identity ‘ex15\ews (Default Web site)’ –ExternalURL https://ews.tomt.it/ews/exchange.asmx
Set-ActiveSyncVirtualDirectory –Identity ‘ex15\microsoft-server-activesync (Default Web site)’ –ExternalURL https://eas.tomt.it/Microsoft-Server-ActiveSync
And last, but not least we configure Outlook Anywhere on the new Exchange 2013 CAS.
Set-OutlookAnywhere –Identity ‘ex15\rpc (Default Web site)’ –InternalHostname oa.tomt.local –InternalClientAuthenticationMethod NTLM –InternalClientsRequireSsl:$true –ExternalHostname mail.tomt.it –ExternalClientAuthenticationMethod NTLM –ExternalClientsRequireSsl:$true –IISAuthenticationMethods Basic, NTLM, Negotiate
Now that Outlook Anywhere command was pretty long, let’s break it into smaller pieces. First we are setting the InternalHostname, as Exchange 2013 uses Outlook Anywhere for all client connectivity (internal and external) we don’t use the RpcClientAccessServer anymore. Along with that we set the authentication method for internal clients as well as the requirement for SSL. Next we set that same pieces of information for external clients, and the last property is configuring the supported authentication methods by IIS.
Wow, now we should finally be able to take over that namespace with our brand new Exchange 2013 CAS. I updated the DNS records for mail.tomt.it to point to the new CAS and created a new CName oa.tomt.local for the internal OutlookAnywhere used in Exchange 2013.
Nothing really changes for Outlook when it connects to an Exchange 2010 mailbox from inside the network, it will still use the RPCClientAccessServer endpoint to connect to the mailbox using RPC over TCP.
If the mailbox is on Exchange 2013, though, Outlook will use RPC over HTTP and connect to the internal OutlookAnywhere endpoint:
From a OWA point of view, all users do log on using the new CAS now:
Exchange 2010 mailboxes get proxied to the Exchange 2010 CAS for OWA.
After this text heavy post we have a nice little overview of CAS in Exchange 2013, I wanted to cover mail routing in this post, given the length I reckon it be better to save that for the next one.
I hope this has been informative for you as the reader, at least it was extremely so for me :)
so long,
tom
All servers in the Exchange 2010 organization must be running service pack 3, if you haven’t already installed SP3, as always it’s a very good idea to start with reading the release notes. On the Exchange 2013 side of things, we need Cumulative Update 1, there is a very good post at the Exchange Team Blog about that.
Ok, so assuming we are running Exchange 2010 SP3 and have downloaded CU1, let’s get started with preparing the first Exchange 2013 server. All the required Windows Features can be installed with the InstallWindowsComponent.ps1 script located in the Setup\ServerRoles\Common directory of the CU1 install files. The script takes several parameters, in this case I’ll be installing a multirole server, I want the AdminTools to be installed as well as the Remote Server Admin Tools for Active Directory.
.\InstallWindowsComponent.ps1 AdminTools, MailBox, ClientAccess -ADToolsNeeded:$True
Note that the script has no parameter for source files, the server needs internet access to download the required files. That’s not always practical, so I edited the script and simply added “–Source wim:d:\sources\install.wim:4” to the Add-WindowsFeature cmdlet within the script.
After the required reboot, we need to install Unified Communications Managed API 4.0 Runtimethe Office Filter Pack is not mandatory and can be installed later on, it still produces a warning during setup, though.
Now that we have the new, designated Exchange 2013 server ready, we need to prepare Active Directory. Obviously, if you don’t know what all this is about, don’t do it! So, that said, from an elevated command prompt change to the directory containing the Exchange 2013 installation files. You’ll need Schema, Enterprise and Domain Admin rights to run the following tasks.
In the first step, setup will extend the schema, this is done using:
.\setup.exe /IAcceptExchangeServerLicenseTerms /PrepareSchema
The next step is to prepare the Active Directory Forest, this creates the Microsoft Exchange container (if it doesn’t already exist) and universal groups used by Exchange.
.\setup.exe /IAcceptExchangeServerLicenseTerms /PrepareAD /OrganizationName tomt
And the last step is to prepare the Domain, this needs to be done for every Domain that will contain Exchange servers or Mail-Enabled users, alternatively use /PrepareAllDomains:
.\setup.exe /IAcceptExchangeServerLicenseTerms /PrepareDomain
Each step relies on Active Directory to replicate changes throughout the topology, you should absolutely wait for the changes of each step to be replicated before continuing with the next step. In a distributed environment such a change needs to be properly planned and would typically take place during a maintenance window.
With all prerequisites checked, we can now continue with the installation of our first Exchange 2013 server. Easy as it is, I’m not going to walk through graphical setup screens, you basically just select the server roles to be installed and click next. There is a command line version of the setup, too. Try setup.exe /help:Install for a list of parameters that can be used to customize the installation. The Exchange setup is pretty smart, meaning that it keeps track of the installation and if errors occur, you will be able to continue right from where the error happened, no need to click through all the windows again. It also provides a lot of information in the ExchangeSetupsLogs folder, located at the root of the drive on which Exchange is installed.
Something new with setup is that you cannot remove server roles anymore, the only way to do that would be to completely uninstall Exchange and re-install the role of choice.
So, installing Exchange 2013 was pretty easy, let’s move on the the more interesting stuff.
The first thing I wanted to see after the setup completed, was the shiny new Exchange Admin Center, so I went straight to IE and typed https://localhost/ecp, I entered my credentials on the neat, new login screen only to see the good, old Exchange Control Panel from 2010. It took some time, but then I realized that that was exactly correct behavior. The Exchange 2013 Client Access Role is a stateless proxy and no longer responsible for rendering OWA (or anything for that matter) and my mailbox was still on Exchange 2010, so my request got proxied to 2010. There are two solutions for this, move your admin mailbox to 2013, or less troublesome, simply add ?ExchClientVer=15 to the URL. https://localhost/ecp?ExchClientVer=15 takes you right to the Admin Center. This is also the only way (I found) to access the Admin Center with a user that has no mailbox.
From an Exchange Management Shell point of view, everything is very similar to the way we are used from Exchange 2010, a new remoting session can simply be created using:
$Session = New-PsSession –ConnectionURI ‘http://ex15.tomt.local/PowerShell’ –ConfigurationName 'Microsoft.Exchange’
Import-PsSession $Session
That’s it for the first part, in the second part I’ll try to cover the basics of namespace planning, mail routing and maybe move some mailboxes.
I see some real world projects coming closer and I know Daniel is working hard on the topic, I’m sure there is more content coming… :)
so long, enjoy your weekend!
tom
]]>Well, on one side, I’m having fun at the Scripting Games (http://scriptinggames.org/) where I learn quite a bit (more from reviewing other entries, than from my own coding) and try to to improve my PowerShell skills. I’ll point out some of the things I’ve learned later on.
On the other side, I’ve decided to quit my job in the heart of the Italian Alps and accepted a role in Germany, in the nice city of Paderborn. So the last few weeks have been pretty busy for me, moving my stuff from northern Italy way up to northern (at least for me) Germany. Right now I am trying to get used to my new surroundings and I do learn something every day :)
So, what are my key takeaways from the Scripting Games so far?
And here comes the example for splatting:
if ($Credential) {
$wmiParam = @{'Credential'=$Credential; 'ErrorAction'="Stop"}
} else {
$wmiParam = @{'ErrorAction'="Stop"}
}
Get-WmiObject @wmiParam –ComputerName “myComputer” –Class “Win32_Processor”
This passes a hash table (wmiParam) to the Get-WmiObject cmdlet, so I don’t have to set the ErrorAction every time and the Credential parameter is only used when a $Credential object exists.
Yeah, and that’s what’s new with me :)
tom
]]>Some prerequisites: We use EAP-TLS as the authentication protocol for WiFi and SCEP for certificate enrollment. I’ve written about SCEP before, in a different context, though. We also use the iPhone Configuration Utility to deploy configurations to devices, more on that later.
We join our MACs to the Active Directory domain and want our users to be able to login using their domain credentials. Obviously you need some sort of connectivity to the AD in order to login, we used to configure Wireless Networks as “System Profile” in OS X in the past. Unfortunately, that GUI went away in more recent versions of that operating system.
This is a screenshot of 10.5, simple enough. As we tried to configure that same thing on 10.8, though, we realized that this little option was gone. All Wi-Fi networks would be started AFTER the used login, no AD login was possible. Oops.
After scratching our heads for a while, we found a workaround other than installing Windows ;)
iPhone Configuration Utility was used ever since we had the requirement to connect iOS devices to the wireless network, it can be used to create configuration files that can be deployed to iOS devices. It has been possible for some time to deploy these same configuration files to OS X, too. As they are simple XML files, we took a deeper look into them. Wwith some help from Google we found that we could change the Wi-Fi payload to be a “System Profile” instead of a “User Profile”, and thus be started BEFORE user login.
So, first thing is to create a configuration profile using iPhone Configuration Utility.
Choose a name, identifier and description for the profile.
Add the certification authorities certificate, so we trust certificates issued by our internal CA.
Configure SCEP, the iPhone or MAC is going to connect to the SCEP URL to enroll a certificate using the specified subject.
Add the Wi-Fi payload, specifying the SSID and authentication protocol. As we use EAP-TLS we use the SCEP certificate to authenticate.
Once the profiles is configured, export it:
We get a .mobileconfig file from the export, it can be edited using a simple text editor. Here comes the fun part, we have to add the following lines to the configuration file:
<key>SetupModes</key>
<array>
<string>System</string>
</array>
<key>PayloadScope</key>
<string>System</string>
This part goes just underneath the PayloadOrganization in the AutoJoin section.
And we have to change “Configuration” at the very end of the file from:
<key>PayloadType</key>
<string>Configuration</string>
to “SystemConfiguration”:
<key>PayloadType</key>
<string>SystemConfiguration</string>
As it is quite important where you change/add the lines, I’ll paste a complete file for reference.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PayloadContent</key>
<array>
<dict>
<key>AutoJoin</key>
<true/>
<key>EAPClientConfiguration</key>
<dict>
<key>AcceptEAPTypes</key>
<array>
<integer>13</integer>
</array>
<key>EAPFASTProvisionPAC</key>
<false/>
<key>EAPFASTProvisionPACAnonymously</key>
<false/>
<key>EAPFASTUsePAC</key>
<false/>
<key>PayloadCertificateAnchorUUID</key>
<array>
<string>25800C8A-A389-4598-A3C4-F5569A4D5273</string>
</array>
</dict>
<key>EncryptionType</key>
<string>WPA</string>
<key>HIDDEN_NETWORK</key>
<true/>
<key>PayloadCertificateUUID</key>
<string>40C2FC1D-D1AA-4BA6-B2A3-959B6BFF9EB1</string>
<key>PayloadDescription</key>
<string>Configures wireless connectivity settings.</string>
<key>PayloadDisplayName</key>
<string>WiFi (MYSSID)</string>
<key>PayloadIdentifier</key>
<string>it.tomt.wlanprofile.wifi1</string>
<key>PayloadOrganization</key>
<string>tomt</string>
<key>SetupModes</key>
<array>
<string>System</string>
</array>
<key>PayloadScope</key>
<string>System</string>
<key>PayloadType</key>
<string>com.apple.wifi.managed</string>
<key>PayloadUUID</key>
<string>2CD56B1A-068C-4F3C-AC43-9D4E2115260F</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>ProxyServer</key>
<string>proxy.ntsystems.it</string>
<key>ProxyServerPort</key>
<integer>8080</integer>
<key>ProxyType</key>
<string>Manual</string>
<key>SSID_STR</key>
<string>MYSSID</string>
</dict>
<dict>
<key>PayloadCertificateFileName</key>
<string>tomt-DC01-CA</string>
<key>PayloadContent</key>
<data>
MIIDYzCCAkugAwIBAgIQL1CM7d+PQrhAgO7UcdHbyDANBgkqhkiG
…
bnBODc20wZMRDAhWuA==
</data>
<key>PayloadDescription</key>
<string>Provides device authentication (certificate or identity).</string>
<key>PayloadDisplayName</key>
<string>tomt-DC01-CA</string>
<key>PayloadIdentifier</key>
<string>it.tomt.wlanprofile.credential2</string>
<key>PayloadOrganization</key>
<string>tomt</string>
<key>PayloadType</key>
<string>com.apple.security.root</string>
<key>PayloadUUID</key>
<string>25800C8A-A389-4598-A3C4-F5569A4D5273</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
<dict>
<key>PayloadContent</key>
<dict>
<key>Challenge</key>
<string>4F20EACEDE479165</string>
<key>Key Type</key>
<string>RSA</string>
<key>Key Usage</key>
<integer>0</integer>
<key>Keysize</key>
<integer>2048</integer>
<key>Name</key>
<string>tomt-DC01-CA</string>
<key>Retries</key>
<integer>3</integer>
<key>RetryDelay</key>
<integer>10</integer>
<key>Subject</key>
<array>
<array>
<array>
<string>CN</string>
<string>macbookair$</string>
</array>
</array>
</array>
<key>URL</key>
<string>https://scep.tomt.it/certsrv/mscep/mscep.dll</string>
</dict>
<key>PayloadDescription</key>
<string>Configures SCEP</string>
<key>PayloadDisplayName</key>
<string>SCEP (tomt-DC01-CA)</string>
<key>PayloadIdentifier</key>
<string>it.tomt.wlanprofile.scep3</string>
<key>PayloadOrganization</key>
<string>tomt</string>
<key>PayloadType</key>
<string>com.apple.security.scep</string>
<key>PayloadUUID</key>
<string>40C2FC1D-D1AA-4BA6-B2A3-959B6BFF9EB1</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</array>
<key>PayloadDescription</key>
<string></string>
<key>PayloadDisplayName</key>
<string>tomt-wlan</string>
<key>PayloadIdentifier</key>
<string>it.tomt.wlanprofile</string>
<key>PayloadOrganization</key>
<string>tomt</string>
<key>PayloadRemovalDisallowed</key>
<false/>
<key>PayloadType</key>
<string>SystemConfiguration</string>
<key>PayloadUUID</key>
<string>B58A2BCB-7617-421B-B0C8-12DE22B5A2B1</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</plist>
Now, if we copy that file to the MAC OS X machine, we can import the wireless configuration and it will be a system profile. Phew.
(In this case we need some sort of connectivity in order to enroll for a certificate over SCEP, this could be via LAN or an open guest Wi-Fi)
It might be though to get your head around this if EAP-TLS and SCEP are new, yet the same idea holds through for a Username/Password or even pre-shared key authentication protocol. The problem remains the same, Wi-Fi user profiles are started after the user logs on, rendering Active Directory logins impossible. We couldn’t find a solution to change that behavior without the iPhone Configuration Utility.
Would be happy to hear about others experiences with this stuff.
Special thanks to my mate @eduriz :)
tom
]]>The Event Log was basically full with .Net Runtime and Application Errors, I’ll paste some for reference.
Log Name: Application
Source: .NET Runtime
Event ID: 1026
Application: ppteditingbackendwatchdog.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.TypeInitializationException
Stack:
at Microsoft.Office.Web.Common.ServiceInstanceFinder.GetLocalAgentInstance(Microsoft.Office.Web.Common.OfficeServiceType)
at Microsoft.Office.Web.Common.WatchdogHelper.PrepareRegistrations(Microsoft.Office.Web.Common.OfficeServiceType)
at Microsoft.Office.Web.Common.WatchdogHelper.WatchMachines(Microsoft.Office.Web.Common.OfficeServiceType, CheckServiceInstance, Microsoft.Office.Web.Common.OfficeServiceType, System.String)
at Microsoft.Office.Server.Powerpoint.Watchdog.EditingBackend.Program.Main(System.String[])Log Name: Application
Source: Application Error
Event ID: 1000
Faulting application name: ppteditingbackendwatchdog.exe, version: 15.0.4481.1000, time stamp: 0x50ee5a9e
Faulting module name: KERNELBASE.dll, version: 6.2.9200.16451, time stamp: 0x50988aa6
Exception code: 0xe0434352
Fault offset: 0x000000000003811c
Faulting process id: 0x94c
Faulting application start time: 0x01ce2b83409e789a
Faulting application path: C:\Program Files\Microsoft Office Web Apps\PowerPointEditingServicesWatchdog_App\ppteditingbackendwatchdog.exe
Faulting module path: C:\Windows\system32\KERNELBASE.dll
Report Id: 7e88e5ec-9776-11e2-93f3-0050569e79e3
Faulting package full name:
Faulting package-relative application ID:
There would be the same errors for all of the Web Apps (Excel, Word…) Needless to say, neither SharePoint 2013 nor Lync 2013 would be able to leverage features that required Web Apps Server. So, what’s next?
Well I continued digging through the Event Log and realized that the Server was patched and restarted very recently, as part of the patching someone applied KB2760445. Sweet.
So I started searching TechNet for information on that Update for Office Web Apps and found a nice article on how to “Apply software updates to Office Web Apps Server”. Basically it goes like this: After patching the Server, you will have to re-create the Office Web Apps Farm. In my case, I simply removed the farm using
Remove-OfficeWebAppsMachine
and then re-used the same cmdlet I used to create the Web Apps Farm initially.
New-OfficeWebAppsFarm -InternalUrl "https://myOWAserver.tomt.local" -ExternalUrl "https://office.ntsystems.it" –CertificateName "ntSystems OfficeWebApps" –EditingEnabled
All set.
If there is one take-away from this, it is very likely: Read that documentation, oh, and please, do test!
Tom
]]>.Net Framework 3.5
Windows Identity Foundation 3.5
Media Foundation
HTTP Activation
Use the Powershell to speed up the installation:
Install-WindowsFeature –name NET-Framework-Core –source D:\sources\sxs (the Windows 2012 Disk is mounted on D: )
Install-WindowsFeature –name Windows-Identity-Foundation,Server-Media-Foundation,NET-HTTP-Activation
If you have to prepare the AD schema, install also the AD DS Administration Tools.
]]>Head over to the download center and download the update files: http://www.microsoft.com/en-us/download/details.aspx?id=36820
Make sure you read the corresponding KB article as there are some manual steps required after the update: http://support.microsoft.com/kb/2809243
Prior to installing the updates stop the Lync Services, you can use the –Graceful parameter:
Stop-CsWindowsService –Graceful
You can use Get-CsPoolUpgradeReadinessState to check if the pool you are going to update is ready.
Copy all the files from the download to a local folder on the Lync Server, open LyncServerUpdateInstaller.exe and install the updates by clicking “Install Updates”
After installing the updates, check the folder with the update files for logs. If everything installed correctly, reboot the server.
After the reboot, the databases need to be updated, too. On a standard edition front end server, the databases are installed locally, so you can update them using the following cmdlets:
Install-CsDatabase -ConfiguredDatabases -SqlServerFqdn lyncfe.ntsystems.local –Verbose
The Central Management Store needs an update too, it is also co-located on the standard edition server:
Install-CsDatabase -CentralManagementDatabase -SqlServerFqdn lyncfe.ntsystems.local -SqlInstanceName rtc –Verbose
After that, the newly published topology needs to be enabled, this can be done using the Enable-CsTopology cmdlet.
Enable-CsTopology
Now the last step is to run the Bootstrapper on the updated front end servers, it can be found on the Lync Server in the following path:
"%ProgramFiles%\Microsoft Lync Server 2013\Deployment\Bootstrapper.exe"
That should be it and the Lync 2013 February updates have been installed.
so long,
tom
So, as a user changes their password, the mobile device will continuously try to sync with a wrong set of credentials. Now depending on the rate at which it tries to sync, this might very well lock-out the users AD account, depending on the Domains Password Policy.
Another possibility to consider is an attacker who could create quite a disturbance by locking out accounts intentionally, using any published Web Site with Forms Base Authentication.
Forefront TMG 2010 SP2 comes with a new feature, called AccountLockoutThreshold. Forefront TMG keeps track of failed logons and locks the account locally, after a specified amount of failures. After that, any other attempt to authenticate via TMG is not forwarded to Active Directory/LDAP, so that the users account does not get locked-out continuously .
The AccountLockoutThreshold feature is local to the Forefront TMG server, so if there is an array of publishing servers, it has to be configured on each of them. It can only be configured for Web Listeners using Forms Based Authentication.
To configure AccountLockoutThreshold we need to use PowerShell, there is no GUI that exposes this setting. A great script to control the settings is available in the Script Center. So, we copy the script and save it to a *.ps1 file on the Desktop of the TMG Server, then we use dot-sourcing to load it into an administrative PowerShell session.
Example: I saved the script to AccountLockout.ps1 on the Desktop. Use “. .\Desktop\AccountLockout.ps1” to import the script.
The Get-AccountLockoutSetting cmdlet is used to retrieve the current settings.
The Set-AccountLockoutSetting cmdlet is used to configure the feature.
Example: I use “Set-AccountLockoutSetting -WebListener OWA -EnableAccountLockout $true -AccountLockoutThreshold 5 -AccountLockoutResetTime 300” to enable the AccountLockout feature, accounts will get locked out for 300 seconds if there are 5 consecutive failed attempts.
Once configured, the following event will be logged to the Application Log of the TMG server if an account gets locked out locally:
Source: Microsoft Forefront TMG Web Proxy
Event ID: 32581
Level: Error
Text: limit for consecutive logon failures has been reached. Additional logon attempts by domain.local\user.name will be automatically rejected for the next 300 seconds
Unfortunately TMG has been discontinued and is no longer available for customers, but for anyone already using it, this should help you dealing with Account Lockout Policies and ActiveSync devices.
so long,
tom
With the Lync 2013 Client that changed. The new client now queries for the following DNS records in order to sign-in automatically:
So, as you can see, even before trying to locate the SRV records, the 2013 Client tries to connect to the AutoDiscover Web Service. That works just fine, in most situations.
But… in a configuration like the following you might run into this bug get a certificate warning when signing into Lync for the first time from the internal network.
The certificate warning shows the server name to which Lync is attempting to connect, it also shows the certificate subject and you can view the certificate. You double (triple) check the certificate, subject alternate names, dates, DNS, basically everything and it seems to be just fine. Still, you continue to get the warning.
First of all, I have to say that I do not fully understand why this happens. The way I see it, is that Lync 2013 connects to the internal Web Service (using LyncDiscoverInternal) and all certificate parameters are fine… As you are probably not going to get a certificate for ntsystems.local from a public CA I wonder what the right solution looks like…
The good news: There is a workaround for this, you can use Group Policy to configure Lync 2013 to configure the Trusted Domain List. According to TechNet, this “Lists the trusted domains that do not match the prefix of the customer SIP domain.” – nice. So, I added ntsystems.local to the Trusted Domain List that can be found in User and Computer Configuration under:
Administrative Templates/Microsoft Lync 2013/Microsoft Lync Feature Policies
You can download the admx/adml files for Office 2013 here. The Group Policy adds the domain to the either “HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Office\15.0\Lync\TrustModelData” or “HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Office\15.0\Lync\TrustModelData” depending on what you choose in the Group Policy Object.
Another workaround would be to simply remove the LyncDiscoverInternal record from the internal DNS zone, which breaks mobile clients (including Lync Windows Store App) on the internal network (Wireless). Not really a solution…
Again, I don’t fully understand the problem, this is what I found during my research. If you have a better solution, please drop me a line :)
Happy New Year and have a nice weekend,
tom
The last post ended with publishing the Topology, after that, the wizard provides a simple To-Do list, summarizing the next steps. Creating the DNS records for our Simple URLs was one of them. So, using DNSmgmt.msc I created CNames for the meet, dialin and lyncadmin URLs, all pointing to the Lync Front End Server.
The DNS Records used for automatic sign-in are not mentioned in said To-Do list, though. I created the sip.tomt.local record as just another alias pointing to the Lync FE Server. Automatic Sign-in also needs the following Service Location Record (SRV)
_sipinternaltls._tcp.tomt.local SRV service location:
port = 5061
svr hostname = lyfe01.tomt.local
All in all, I do now have the following DNS Records:
HostName | RecordType | RecordData |
_sipinternaltls._tcp | SRV | [0][0][5061][lyfe01.tomt.local.] |
lyfe01 | A | 10.1.1.11 |
dialin | CNAME | lyfe01.tomt.local. |
meet | CNAME | lyfe01.tomt.local. |
sip | CNAME | lyfe01.tomt.local. |
lyncadmin | CNAME | lyfe01.tomt.local. |
The next step is to install the prerequisites on the Lync Server, for more information check TechNet. I use the following PowerShell cmdlet to install Lync Server prerequisites, make sure you specify a “–Source”.
Add-WindowsFeature NET-Framework-Core, NET-Framework-45-Features, RSAT-ADDS, Web-Server, Web-Static-Content, Web-Default-Doc, Web-Http-Errors, Web-Http-Redirect, Web-Asp-Net, Web-Net-Ext, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Http-Logging, Web-Log-Libraries, Web-Http-Tracing, Web-Windows-Auth, Web-Client-Auth, Web-Basic-Auth, Web-Filtering, Web-Stat-Compression, Web-Dyn-Compression, Web-Mgmt-Console, Web-Scripting-Tools, Web-Request-Monitor, NET-WCF-HTTP-Activation45, Web-Asp-Net45, Web-Mgmt-Tools, Web-Mgmt-Compat, Desktop-Experience, Telnet-Client, BITS, Windows-Identity-Foundation –Source ‘D:\sources\sxs’ –Restart
Now after the reboot open Lync Deployment Wizard again and click "Install or Update Lync Server System"
After installing Local Configuration Store and Lync Server Components, we need to request and assign Certificates for Lync to use.
If you use an online (enterprise) CA, select send request immediately, if you intend to send the request to a public CA, select the offline certificate request option. As I have ADCS installed in my test forest, I use the enterprise CA for this.
Optionally specify credentials and a certificate template, if your current user has permissions to request a certificate using the “WebServer” template, click next. Then specify the friendly name for and the key length for the certificate.
Lync automatically includes the required Alternative Names along with Simple URLs and external pool name. Other details (such as City, Country, Region) typically used in certificate requests can be specified too.
Select the SIP Domains, so that they are included, too. You can optionally add additional SANs, I didn’t need any more than the ones included by the wizard.
Request the Certificate and tick the “Assign this certificate…” checkbox.
If you plan to use Server-to-Server authentication (Office Web Apps, Exchange, SharePoint) also request an OAuth Certificate. The procedure is the same as for the Server certificate.
The OAuth Certificate is a "Global" Certificate, that means that Lync Central Management Store replicates it to all Lync Servers, and all Lync Servers will use the same Certificate for OAuth.
Phew, now after all those steps, we can finally go ahead and start the services. Give it some time, and check if all services are started using services.msc.
Now, we can use Lync Server Control Panel to check out our work. I prefer to use the Control Panel on my client PC, as it requires Silverlight to be installed. So, on a Computer sporting Silverlight, open the Simple Administration URL specified before.
I will continue to test some features of Lync 2013, stay tuned for more!
so long, have a nice weekend!
tom
First of all we need to install the Lync Deployment Wizard on a server, this doesn’t necessarily have to be the Lync Server, although it’s a good idea to use this server. So, start Setup and select a location for the installation files.
After that installation finishes, we we start the Deployment Wizard and install the administrative tools.
Warning: This is going to update the AD schema, make sure you are in test environment.
From the Lync Server Deployment Wizard click “Prepare Active Directory” and update schema, prepare the forest as well as the current domain.
The following cmdlets can be used to check domain/forest readiness.
Get-CsAdDomain: If Domain is ready: LC_DOMAINSETTINGS_STATE_READY
Get-CsAdForest: If Forest is ready: LC_FORESTSETTINGS_STATE_READY
Now preparing the current domain created some AD groups used by Lync. Add the account used to administer Lync to the CSAdministrator group.
After preparing Active Directory we are ready to create a new Topology using the Topology Builder. So we start Topology Builder and create a new Topology
Specify a primary SIP domain, additional SIP domains can be specified in the next step.
The first thing we need to create is a new Site within our new topology, specify a name and some details for the first Lync Site
Start the New Front End Pool wizard after finishing the New Topology wizard and enter the FQDN of your Lync Standard Edition Server.
Specify the Lync Server Features to be installed on this server
As we add Enterprise Voice and Conferencing we need a Mediation Server, tick the check box to Collocate the Mediation Server
Define the SQL Store for the front end pool, as we install a Standard Edition Server we cannot change this
Select a File Share that has already been added to the Topology builder or create a new one
Specify the external URL, this URL will be used by external clients
Associate an Office Web Apps Server that has already been added to the Topology or add a new one, if you have one
If you selected the Monitoring on the features page, specify a SQL instance with Reporting Services. This can be installed locally or on a remote SQL server
After finishing the new Front End Pool wizard, configure Simple URLs and Associate Central Management Server by right clicking “Lync Server” and selecting Edit Properties in the Topology Builder
Check the Configured Settings and publish the Topology by selecting Action from the menu and clicking “Publish Topology”
Ok, nice work. We have just created and published our Lync 2013 Topology. Time to get the Server ready.
In the next post I will walk through the actual installation of the Lync 2013 Standard Edition Front End Server.
so long,
tom
So, this is a quick post about a new feature in Lync Server 2013, voicemail escape. What this does is, essentially providing a “too soon” timer for PSTN calls. Ok, you might say, why do I need such a thing?
Well, if an enterprise voice user configures simultaneous ringing on her mobile phone, and that phones battery died or she wandered into an area with no network coverage, her provider’s voicemail would answer. Now, even if she was sitting on her desk, she might never get the call, as the caller would always go to her voicemail. Voicemail escape defines a timer using the “Set-CsVoicePolicy” cmdlet, if a call is answered before that timer elapsed, Lync would ignore that answer and keep the call on premises.
Set-CsVoicePolicy -EnableVoicemailEscapeTimer:$true -PSTNVoicemailEscapeTimer:5000
EnableVoicemailEscapeTimer enabled the timer.
PSTNVoicemailEscapeTimer sets the timer (in ms) used to determine whether or not a call has been answered “too soon”.
The Lync Monitoring server shows those ignored answers with a SIP Response Code of 480 and a Reason of: ’Terminating call as it is answered earlier than the specified voicemail escape timer’
The Lync Server Logging tool (Component: S4, Level: All) shows the timer in the SIP INVITE packet as:
ms-vm-escape-timer: 5000
You may have to tune the timer depending on your setup and the providers you are using. I had to set it pretty high to actually see an effect.
so long,
tom
During Windows Server 8 Beta times, I wrote about virtualizing Domain Controllers and the VM-GenerationID attribute, since the old post was in German and about the beta version, this will be an updated translation.
The problem in Active Directory versions before 2012 was, that the restore of a snapshot would introduce a condition known as USN-Rollback, breaking replication between Domain Controllers. For that reason, DCs could not leverage all features of a modern, virtualized environment. Cloning a DC was pretty much unthinkable. Until now!
The Active Directory replication model assigns an ongoing number to every transaction (Update Sequence Number). DCs keep track of these numbers, along with a unique identifier (Invocation ID) for each replication partner. If a DC was rolled back in time (applying a snapshot), that DC would start reusing aged USNs and, therefore, replication partners would refuse the updates and terminate the replication partnership. The only resolution for this problem was to manually remove the DC from the Active Directory.
Now, Windows 2012 introduces a feature to tackle that problem. The Hypervisor exposes a VM-Generation ID through the ACPI table, this ID is saved in the Domain Controllers memory. If the VM-Generation ID changes (e.g. when a snapshot is applied), the restored DC knows that something happened and resets it’s invocation ID.
As replication partners have never heard of the new Invocation ID before, they don’t care about USN reuse and replicate like it was a new relationship. Apart from resetting the Invocation ID, the DC also, non-authoritatively restores SYSVOL and logs the following Event to the “Directory Services” Event Log.
The new Active Directory attribute used to store the VM-Generation ID is ms-DS-Generation-Id, find more information about that attribute on MDSN.
There is no need (and no way) to configure VDC Safe Restore, as long as the Hypervisor supports VM-Generation ID, it automatically works. In a recent blog post VMware announced support for VM-Generation ID for it’s vSphere platform, so now you can choose Hyper-V 2012 and VMware’s ESXi as Hypervisor for your Domain Controllers.
A word of caution at the end, never, and I mean NEVER, stop taking regular (AD aware) backups! The feature discussed in this post is meant just to solve the USN-Rollback issue, it is in no way a replacement for a backup as the DC is restored in a non-authoritative way.
Stay tuned for DC cloning :)
so long, have a nice weekend!
tom
This function leverages the new ‘Invoke-WebRequest’ cmdlet, available in PowerShell v3, so, obviously V3 is required.
Example use:
Update-SysinternalsSuite -Path C:\tools\sysinterals –AsJob
This downloads the Sysinternals Tools to C:\tools\sysinternals. If the specified folder does not exist, the script creates it. It also makes use of background jobs, so you can keep using PowerShell during the download.
I’ve posted the Function to PoshCode:
enjoy,
tom
So what are we going to do here? We will be leveraging SCEP to obtain a digital certificate from a CA. As a prerequisite to this, the router needs a key-pair, that is, private and public keys. The public key will be sent to the CA (using SCEP), the CA will sign that public key and send the certificate (signed public key) back to the router.
If you are already using services like “ssh” or “ip http secure-server” you can use the existing keys. If no keys exist, the router will create a new set of keys as we enroll for a certificate. This auto generated key-pair is only using a 512 bit key, that is not considered secure anymore.
To create a new key-pair, using a reasonable secure key length:
Having the keys in place, we need to get the CA certificate. The router will use the CAs public key to authenticate the CA and other digital certificates issued by that same CA.
To download the CA certificate we define a new trustpoint and set to enrollment URL to the SCEP URL, if you have no name resolution configured, be sure to use the IP address of the SCEP server instead of the name.
The SCEP URL defaults to: http://servername:80/CertSrv/mscep/mscep.dll
After configuring the trustpoint, we tell the router to download the CA certificate:
IOS shows the Thumbprint (fingerprint) of the digital certificate, so one could verify that this is the correct certificate using an out-of-band method.
A quick look at the running-config shows that the key was received.
Now that the router does trust our CA we can go ahead and request a digital certificate:
IOS prompts for a password that would be used to revoke the certificate, and you can choose to add the IP address or serial number to the certificate.
The request gets signed by the CA and the certificate is sent back to the router, you should see the following messages in the log or on “terminal monitor”
CRYPTO_PKI: Certificate Request Fingerprint MD5: 4C9C472F 605AA33F 869EB167 9F097C56
CRYPTO_PKI: Certificate Request Fingerprint SHA1: E943141D 19A5C4EB 6B5EE5D2 B87AAF57 B829FFED
%PKI-6-CERTRET: Certificate received from Certificate Authority
The IIS Log on the SCEP server shows the successful transaction like this:
2012-11-30 18:58:19 192.168.1.21 GET /CertSrv/mscep/mscep.dll/pkiclient.exe operation=PKIOperation&message=MIIJUgYJKoZIhvcNAQcCoIIJQzCCCT8CAQExDjAMBggqhkiG…
…2Bw6Q1AJGzQs4wl7jA4GvWvikdP1wnPzAkVP7KZ%2FZ1%2Fz4hCYNpP4%3D%0A 80 - 192.168.1.1 - - 200 0 0 277
In the “Certificate Authority” MMC Snap-In you see the certificates that have been issued:
That was the second, and final part on NDES and IOS routers.
so long,
tom
]]>So, NDES sounds pretty cool, but what is it, you may wonder. It’s Microsoft’s implementation of SCEP or Simple Certificate Enrollment Protocol, which is a PKI communication protocol that leverages existing PKCS#10 and #7 technology over HTTP. It provides a simple means of requesting and issuing digital certificates across different devices and vendors.
To use SCEP with your existing ADCS based PKI simply add the Role to the Server that provides CA Web Enrollment. I’m not going through the details of setting up a ADCS based PKI here, that might very well be a topic for a future post, though.
Add the Role using ServerManager or Windows PowerShell:
Install-WindowsFeature –Name ADCS-Device-Enrollment
After successful installation of the Role, ServerManager informs you that there is some sort of configuration required for the newly added feature.
An AD user account is required for the NDES service to use. That account must be member of the local IIS_IUSRS group on the NDES Server. I created a user with the name of scep and added it to the group before starting the configuration wizard.
Select the Service Account:
Fill in information required for the RA certificate. What happens here, is that the NDES Server is issued two Registration Authority certificates, which are then used for SCEP:
Configure cryptographic settings for the RA keys:
After reviewing the settings, and clicking “Configure” you will see the RA certificates in the “personal” store of the NDES Server:
The certificate template used by NDES defaults to “IPSECIntermediateOffline”, that can be changed by modifying the following registry keys:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\MSCEP
EncryptionTemplate
GeneralPurposeTemplate
SignatureTemplate
I decide to go with the WebServer template, so I update the registry and restart the “certsvc” service. Keep in mind, that the service-user account (TOMT\scep, in my lab) needs permissions to enroll for the selected certificate template. This can be configured using the “Certificate Templates” MMC Snap-In:
NDES requires a challenge for every certificate transaction, unfortunately there seems to be no such setting in Cisco’s SCEP implementation. That default can be changed by setting the following registry key to “0”:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\MSCEP\EnforcePassword\EnforcePassword
Warning: This disables the need for a challenge, so that essentially anyone with knowledge of your NDES server can enroll for certificates.
Restart the “certsvc” service after modifying the registry:
Get-Service certsvc | Restart-Service
IIS request filtering sets the value for MaxQueryString to 2048 by default, a reasonable key length is at least 1024, more often 2048. You see the problem, that value needs to be changed in order to support strong keys.
Use appcmd to change the value for MaxQueryString:
%systemroot%\system32\inetsrv\appcmd.exe set config /section:system.webServer/security/requestFiltering /requestLimits.maxQueryString:"4096" /commit:apphost
If you don’t update MaxQueryString you will see error 404.14 “Query string too long” in the IIS Log.
There is a really good guide to NDES on TechNet Wiki.
That’s it for the first part, our NDES on Windows Server 2012 is configured and ready to go.
Stay tuned for part 2
tom
]]>When the server boots up you have a nice feature “Easy access” on the logon screen.
In the next steps, we change the “Easy Access” function with a cmd command prompt:
1. Boot with the Server 2012 CD and select “Repair your computer”
2. Select “Troubleshooting” and “Command prompt”
3. Get the drive letter of your System Volume with diskpart
4. Rename the utilman.exe file to utilman.old and copy cmd.exe to utilman.exe
5. Reboot the server and start the “Easy Access” feature. You will get a command prompt. Now type whoami and you will see that you can run commands under the local system account
ND
]]>When the pop-up appears the checkbox “Overwrite existing files” is checked. To change the default setting we have to change 2 aspx files:
The checkbox is now not selected default anymore.
Greetings
nd
You can start using OWA offline from the OWA Website:
OWA informs you to that it will save some content of your mailbox on the computer.
What you can see now is that OWA safes mailbox content on your local disk under C:\Users\user\AppData\Local\Microsoft\Internet Explorer\Indexed DB
Like Exchange also the offline files are some edb an log files.
There is a full list of all offline OWA features: http://technet.microsoft.com/en-us/library/aa997437(v=exchg.80).aspx
Greetings
nd
Windows Server 2012 and Windows 8 really simplify the configuration required for DA, making it much easier to deploy a remote access solution.
The only requirement is the installation of a Windows Server 2012 member server, providing the “head end” of the connection. No Active Directory, schema, forest, domain-level updates are required.
The DA Server needs two network adapters, one connected to the internal LAN, the other one connected to a DMZ or public network.
If the DA Server is located behind a firewall, https (tcp/443) has do be allowed from the internet to the “public” network adapter.
DirectAccess relies on IPv6 technology, the only hosts that require an IPv6 address are the DirectAccess Server and clients, though. The DA server performs NAT64 and DNS64 in order to enable the DA client to access IPv4 only servers.
Use ServerManager or PowerShell to install the Remote Access server role on the designated DirectAccess server.
Once installed, use the “Getting started” wizard to configure DirectAccess. The wizard can be started from ServerManager or from within the “Remote Access Management Console”.
Select “Deploy DirectAccess only” in the wizard.
Select the network topology to be used, in this example I am using a server with two network adapters, one connected to a DMZ and one connected to my LAN. Specify the name (or public IP) that clients will be using to connect.
And that’s all there is about it, it’s called “simplified deployment”. The Wizard goes ahead and creates Group Policies for DA Servers and Clients, creates DNS records for Network Location. Pretty cool, eh?
To modify the settings, click the “here” link on the last page of the wizard, for my test environment I go with the defaults.
As the wizard finishes, it shows some information about what it did.
The DirectAccess Configuration can be shown and changed in the Remote Access Management Console.
The Dashboard and Operations Status panels do provide information about the servers status, required services and connected clients.
The wizard created a Group Policy Object, named “DirectAccess Client Settings” and a WMI Filter, to apply that GPO to Notebooks running Windows 7 or 8 Enterprise editions. So all I had to do was to update the group policies on the notebook (gpupdate).
As long as it was connected to the LAN nothing changed, if I connected the notebook to the internet, the DA (Workplace Connection) was established automatically and I was able to access internal resources as if I was on the LAN.
I think this “simplified deployment” really does make it easier to get started with DirectAccess, to deploy it in an enterprise network, one should be a little more familiar with the technology :)
So this post was meant to be a quick-and-dirty intro, stay tuned for more in-depth information.
so long,
tom
WTG requires a “fixed drive”, that is, you cannot use any USB drive, it must be “Certified”. I am using a Kingston DataTraveler Workspace (www.kingston.com/wtg) other supported devices are listed on TechNet: Windows To Go: Feature Overview
Even though its not required USB 3 is highly recommended to speed things up. If you have no WTG certified drive handy, try using a USB hard disk.
Deployment is really simple, simply open “Windows To Go” from Control Panel. The WTG Wizard starts, and the first thing you have to select is which drive to use.
In the next step you select the Windows 8 Image, for testing I mounted a Windows 8 Enterprise DVD. In a real-world scenario you would use your customized Image for deployment.
Set a password to BitLocker the device (highly recommended).
Obviously all data on the drive is lost, so if that is not a problem, click “Create”.
Yeah, that’s it. In the last step you can choose to reboot the machine or just finish and close.
So now you have created a new WTG Workspace that can be used to boot Windows from almost any PC. If the PC can run Windows 7 or 8, it almost certainly will run Windows to Go. The first time you boot WTG it takes some time, just as every new Windows installation takes some time. After the quick, first steps you can start working, you’ll notice that there is no access to the hard drives of the host computer. If local access is needed, simply open “Disk Management” and make the disks available (Requires Administrative permissions).
If you shut down Windows To Go and remove your USB drive, the local Computer starts, absolutely unaffected by WTG. BYOD just got a lot simpler, IT just needs to hand out USB drives and doesn’t need to be supporting all kind of different environments Users might have on their devices.
On the other hand, Users do not have to worry about IT enforcing policies on there private-owned devices.
If you ask me, that’s pretty cool :)
tom
More info: What's new in search in SharePoint Server 2013
Windows 7 and later support the connection of external sources through OpenSearch, which essentially is a Web Service that receives search queries by the client and returns results in either RSS or Atom XML format. This allows users to search remote data and view search results within Windows Explorer.
More info: Federated Search in Windows
Now to get SharePoint search into Windows Explorer you need to create an OSDX (OpenSearch Description) file and deploy it to your clients.
Here is an example file that works for my SharePoint 2013 and Windows 8:
<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
<ShortName>SharePoint Search</ShortName>
<Description>Search the SharePoint Search Center</Description>
<Url type="application/rss+xml" template="http://intranet.ntsystems.local/sites/searchcenter/_layouts/srchrss.aspx?k={searchTerms}&web.count=50"/>
<Url type="text/html" template="http://intranet.ntsystems.local/sites/searchcenter/Pages/results.aspx?k={searchTerms}"/>
</OpenSearchDescription>
Simply create a new file using notepad, adjust the URLs to point to your SharePoint Enterprise Search Center and save it with the .osdx extension.
There are many possibilities for customization within the OSDX specification, check out MSDN to learn more about Creating an OpenSearch Description File.
To test the OSDX files, double-click it and click "Add" to add the search connector to Windows Explorer.
This adds a link to "Favorites" so you can easily search SharePoint from there.
Now, to deploy this to more than one client, you could publish a link to the OSDX file and have your users click on that link to add the search provider.
Alternatively Group Policy Preferences can be used to deploy the search connector:
So that's how to get results from SharePoint into Windows Explorer.
So long,
tom
Office 2013 RTM'd some time ago and so did all the server products. So with SharePoint 2013 available on TechNet I decided to set up some demo sites to get a feel for the product, after looking for a new version of the Office Web Apps I realized that there was some change coming here.
Office 2013 Web Apps are no longer installed on SharePoint servers directly, it became a stand-alone product instead. Not only does that stand-alone product bring new design and scalability possibilities, it is also possible to share the Web Apps with Exchange and Lync 2013.
To install Office Web Apps Server on a Windows Server 2012 box the following roles and features must be installed as a prerequisite:
Add-WindowsFeature Web-Server,Web-Mgmt-Tools,Web-Mgmt-Console,Web-WebServer,Web-Common-Http,Web-Default-Doc,Web-Static-Content,Web-Performance,Web-Stat-Compression,Web-Dyn-Compression,Web-Security,Web-Filtering,Web-Windows-Auth,Web-App-Dev,Web-Net-Ext45,Web-Asp-Net45,Web-ISAPI-Ext,Web-ISAPI-Filter,Web-Includes,InkandHandwritingServices
If you want to use https for the Web Apps a proper certificate must be available on the server, too. To display the certificates installed on a computer try the following command:
Get-ChildItem Cert:\LocalMachine\my | select Subject,FriendlyName
The Web Apps Server can also be installed on Windows Server 2008R2, find the prerequisites on TechNet.
The actual installation of the Server is pretty straightforward, just download the ISO and double click it (love that…). The only thing you can choose during setup is the installation path.
Once done with the installation, you can go ahead and use PowerShell to create a new Web Apps Farm. Not surprisingly the cmdlet to be used is New-OfficeWebAppsFarm, the following parameters have to be used to create a farm:
-InternalUrl: the URL used for internal Clients
-ExternalUrl: the URL used for Clients on the Internet
-CertificateName: set the FriendlyName of the certificate to be used for the farm
-EditingEnabled: enable editing of files in the browser (SharePoint)
The following example creates a farm
New-OfficeWebAppsFarm -InternalUrl "https://myOWAserver.tomt.local" -ExternalUrl "https://office.ntsystems.it" –CertificateName "ntSystems OfficeWebApps" –EditingEnabled
To verify that the farm has been created successfully, open a browser and go to https://myowaserver.tomt.local/hosting/discovery you should see some XML information about your internal and external URLs.
Now to connect your SharePoint 2013 farm to the brand new Web Apps farm, fire up an administrative SharePoint Management Shell and use the New-SPWOPIBinding cmdlet. Use the –ServerName parameter to specify the internal URL of the Web Apps farm:
New-SPWOPIBinding -ServerName https://myOWAserver.tomt.local
After that you can have a look at the WOPI Zone, if users are accessing the SharePoint from internal and external clients you might want to change the zone from its default value of "internal-https" to "external-https":
Set-SPWOPIZone –zone "external-https"
Almost done, if you are using https on your SharePoint web applications you should be ready to go. If you are using http for SharePoint you need to set AllowOAuthOverHttp to true. This needs to be done in the SharePoint Management Shell using the following commands:
$config = (Get-SPSecurityTokenServiceConfig)
$config.AllowOAuthOverHttp = $true
$config.Update()
To check if it worked, use:(Get-SPSecurityTokenServiceConfig).AllowOAuthOverHttp
Ready to see it? Open a browser, go to your SharePoint 2013 sites and create a new Document or open an existing one, should be looking like that:
So long,
tom
Event ID: 1021
Event Source: MSExchangeTransport
Message Text: Receive connector 'Connector Name' rejected an incoming connection from IP address '10.10.10.10'. The maximum number of connections per source ('20') for this connector has been reached by this source IP address.
The sender of a mail might receive the following message:
Deferred: 421 4.3.2 The maximum number of concurrent connections has exceeded a limit, closing transmission channel" Status 4.0.0, "Transient failure"
According to RFC this is not a permanent error, so the sender's mail server should try to send the message again after some delay.
"The command was not accepted, and the requested action did not occur. However, the error condition is temporary, and the action may be requested again."
To view the configured value of MaxInboundConnectionPerSource use the Get-ReceiveConnector cmdlet, to change the value use the Set-ReceiveConnector cmdlet with the –MaxInboundConnectionPerSource parameter.
The following example increases the value to 100
Get-ReceiveConnector default* | Select Name,MaxInbound*
Get-ReceiveConnector default* | Set-ReceiveConnector -MaxInboundConnectionPerSource 100
More info on: TechNet
So long
tom
So as I have mentioned before I'm no PowerShell expert at all and I'm sure all that stuff can be done many other ways, but then this thing is working for me…
If you have been using PowerShell ISE you might know what Snippets are, if you don't, just open powershell_ise.exe and press 'ctrl+j'. Snippets are code samples that can be added to your script easily. You can create your own snippets like that:
$code = @'
# this is my sample code
'@
New-IseSnippet -Title 'Sample' -Description 'Just a sample' -CaretOffset $code.Length -Text $code -Force
This will create a 'Snippets' folder at your Documents\WindowsPowerShell where your new snippet is saved for later use. Having that said let's move on to scheduled jobs.
Until now it was quite a pain in the butt to run PowerShell scripts as scheduled tasks, you had to specify the path to powershell.exe and then use some params to make it run the script you choose. You could even pass arguments to those scripts, but it was no real fun. So now we can do all that very easy and directly from within PowerShell.
For starters we need to create a job trigger, to tell PowerShell when to execute out script.
$trigger = New-JobTrigger -At 22:00 –Once
This will create a variable containing our trigger, as you can see the script will be executed today, at 22:00 and it will be executed only once.
Next we can define some job options, it's not necessary though
$option = New-ScheduledJobOption –RequireNetwork -StartIfOnBattery -ContinueIfGoingOnBattery
Using the New-ScheduledJobOption cmdlet we can specify all kinds of different options, you might already know them from Task Scheduler.
Now that we have a trigger and some options we need to define a scriptblock that is going to be executed by our scheduled job.
$sb={
param([System.IO.FileInfo]$path,[string]$string)
Add-Content -Path $path -Value $string -Force
}
This, obviously, is just a simple example. It will simply append a string to a file, should be enough to demo what I mean though.
Last thing we need to specify is the account that should be used to run the task.
$cred = Get-Credential
This will create a variable containing the credential you type in. We will pass this to the –Credential parameter of the next step.
We have defined everything we need so we can go ahead and register the job.
Register-ScheduledJob -Name "test" -Trigger $trigger -Credential $cred -ScheduledJobOption $options -ScriptBlock $sb -ArgumentList ("c:\temp\test.txt","abcde")
This creates a scheduled task at \Microsoft\Windows\PowerShell\ScheduledJobs, it can be viewed using Task Scheduler or using the Get-ScheduledJob cmdlet.
If you want to specify a script file instead of a scriptblock, simply change the –ScriptBlock param and use –FilePath.
The job can be deleted in Task Scheduler or by using the Unregister-ScheduledJob cmdlet.
I hope you will find this feature as exciting as I do, I'll provide you with the code snipped so you can easily use 'crtl+j' to create a task the next time. Just copy the ps1xml file to your Documents\WindowsPowerShell\Snippets folder and enjoy. J
Scheduled Job.snippets.ps1xml (1.35 kb)
So long, have a nice weekend!
tom
]]>
To fix this behavior and make Outlook showing the attachment you have to do the following:
- Stop the Exchange Transport service.
- Locate the EdgeTransport.exe.config file. This file is located in the following path:
C:\Program Files\Microsoft\Exchange Server\Bin\
In the EdgeTransport.exe.config file, add the following entry between the
<appSettings> element and the </appSettings> element:
<add key="TreatInlineDispositionAsAttachment" value="true" />
- Start the Transport service
Greetings
dn
Key points are the the minor schema change and the maximum file size of 10KB. Images can be max. 96x96 pixels in size.
Now in the last couple of days I wrote a “cmdlet” to make batch importing images easier. For starters, the cmdlet gets all *.jpg files in folder, then it uses the files BaseName to find corresponding Exchange Mailboxes. After that the image’s physical dimensions as well as file size are verified, if they are ok, the image is imported using Import-RecipientDataProperty.
The folder containing the images can be set using the cmdlet’s –FilePath parameter, the cmdlet takes pipeline input from Get-ChildItem too.
Here are two examples of how the cmdlet could be used:
PS C:\> Import-GalPhoto -FilePath 'c:\temp\pics'
PS C:\> dir 'c:\temp\pics' | Select-Object -First 2 | Import-GalPhoto
I’ve pasted the function to PoshCode, here it goes:
enjoy,
tom
Mit Diskpart sieht das dann so aus: “Diskpart encountered an error starting the COM service”
Im EventLog ist folgender Fehler zu finden:
Unable to start a DCOM Server: {9C38ED61-D565-4728-AEEE-C80952F0ECDE}. The error:
"1260"
Happened while starting this command:
C:\Windows\System32\vdsldr.exe –Embedding
Workaround
Hierzu habe ich einen kleinen Workaround um die Disk schnell zu extenden: CMD öffnen und folgendes Kommando starten: C:\Windows\System32\vdsldr.exe –Embedding
Nun funktioniert Diskpart und die Disk kann extended werden.
Grüße
dn
Well, basically a profile is a PowerShell script file (.ps1) that is stored in a preconfigured location and that gets executed every time PowerShell starts. This script enables you to customize your PowerShell session and predefine settings as you find them useful. There is a built-in variable, $Profile, which stores the location of the script that is executed every time PowerShell starts.
The profile file is located in the WindowsPowerShell folder in every users “My Documents” folder. It has to be named Microsoft.PowerShell_profile.ps1.
By default there is no profile and everything is left to their defaults, to create the profile script you can create the WindowsPowerShell folder and then use notepad to save a file containing some PowerShell commands in that folder. You can also use the New-Item cmdlet to create the folder and an empty file by typing:
New-Item –Path $Profile -Type File –Force
Now that we know what a profile is and where it is located we can go on and take a look at an example profile, it’s actually my profile so if you have any tips for me, feel free to leave a comment.
I am starting my Profile with setting some variables, some are predefined and some are custom, I use them for the following settings:
$MaximumHistoryCount is used to set the number of commands that are stored in History. Defaults to 64. Maximum 32767.
$Transcript is used to set the path for Start-Transcript
$env:PSModulePath is an environment variable (‘env:’) and it is used to customize the path where PowerShell will look for modules to import.
$cert is a variable I use to store my CodeSigningCert to sign scripts.
After that I use Get-Host to figure out which version of PowerShell is running in the current session, if version 3 is detected, I set some DefaultParameterValues using $PSDefaultParameterValues. After that I check if the current session was started with “Run as administrator” if it was, the Update-Help cmdlet is run.
Since I am writing a module I have a short function to just make my life a little easier, it signs the module file using Set-AuthenticodeSignature and then copies the file to some network share for my coworkers.
At the end I am creating a new PSDrive of the FileSystem PS provider, after creating the drive the current location is set to that drive. This is my working directory, it contains all the scripts and test files I need.
I pasted the file to http://poshcode.org, I really like their “embed code” feature.
Now again, this is my profile, I use it to simply show what can be done, since I am still a beginner I appreciate ideas and tips from anyone!
tom
]]>Anbei der Code:
Public Function RunCreatePasswordPowerShell(ByVal script As String) As Integer
Dim execProcess As New System.Diagnostics.Process
Dim psScriptTextArg = "-Command ""& " + script + " " + "'" + System.Environment.CurrentDirectory + "'" + """"
execProcess.StartInfo.WorkingDirectory = Environment.SystemDirectory & "\WindowsPowershell\v1.0\"
execProcess.StartInfo.FileName = "powershell.exe"
execProcess.StartInfo.Arguments = psScriptTextArg
execProcess.StartInfo.UseShellExecute = True
Return execProcess.Start
End Function
Erklärung:
Die Funktion RunCreatePasswordPowerShell wird mit einer String Variable als Argument aufgerufen (script). Diese String Variable beinhaltet den Pfad zu unserem PowerShell Script.
In meinen speziellen Fall geben ich beim zusammenstellen der Argumente noch die den aktuellen Pfad mit.
Eventuell noch interessant: Dieses PowerShell Script welches ich hier aufrufe erstellt verschlüsselte PasswordFiles, welche dann über die PowerShell weiter verwendet werden können. Anbei der Code dazu:
param(
[parameter(Mandatory = $true)]
[string]$CurrentDirectory
)
$PasswdFilename = read-host "Filename"
$Passwd = read-host "Password" -assecurestring | convertfrom-securestring
$PasswdPathFile = $CurrentDirectory + $PasswdFilename + "-Pass.txt"
$Passwd | Out-File $PasswdPathFile
Grüße
dn
Zunächst muss das Migrationstool iasmigreader auf den Windows Server 2003 kopiert werden.
Das Migrationstool befindet sich entweder auf der Server 2008 R2 CD unter D:\sources\dlmanifests\microsoft-windows-iasserver-migplugin oder auf dem Server 2008 R2 unter C:\Windows\SysWow64
Über die Kommandozeile wird das Tool aufgerufen um auf dem 2003 Server die Konfiguration in das vordefinierte Textfile ias.txt zu exportieren.
ACHTUNG: Beim Import von 32BIT zu 64BIT Systemen muss folgendes vorher gemacht werden. Sonst gibt es Probleme mit der PEAP Authentifizierungsmethode:
Import File öffnen den Wert 0 in SystemInfo auf 0000000009 ändern:
Nun kann das File auf dem 2008 Server importiert werden:
Netsh nps import filename="paht\ias.txt"
Grüße
dn
A manual backup can always be taken using the ‘copy startup-config' command, typing a question mark ‘?’ after that command lists possible backup destinations:
RT#copy startup-config ?
archive: Copy to archive: file system
flash: Copy to flash: file system
ftp: Copy to ftp: file system
http: Copy to http: file system
So to backup a routers current startup-config to a FTP server you would simply type something like this:
RT#copy startup-config ftp://user:pass@10.10.10.1
The username and password can also be configured so that you don’t need to type them in every time you are performing a backup.
RT(config)#ip ftp username tom
RT(config)#ip ftp password secret
Ok, that’s better but since the backup still has to be started manually chances are that one could forget it…
The archive feature allows for automatic configuration backup that is triggered by a timer and the ‘write memory’ command. The following example configures the archive feature on router RT to create a backup once every 24 hours and additionally every time someone enters the ‘write-memory’ command, that is, every time someone makes a configuration change and decides to save that change:
RT(config)#archive
path ftp://10.10.10.1/History/rt-config-
write-memory
time-period 1440
The time-period keyword simply configures how often a scheduled backup runs, if the write-memory command is configured a configuration backup is performed every time someone saves the config. The ‘show archive’ command displays the 10 latest configuration files:
RT#show archive
The maximum archive configurations allowed is 10.
The next archive file will be named ftp://10.10.10.1/History/rt-config--<timestamp>-50
Archive # Name
1 ftp://10.10.10.1/History/rt-config-Jul-10-13-51-57.153-47
2 ftp://10.10.10.1/History/rt-config-Jul-10-13-52-57.245-48
3 ftp://10.10.10.1/History/rt-config-Jul-10-13-53-57.337-49
Obviously other backup destinations such as tftp or flash can be configured. IOS does not take care of the removal of old files, so even though only the 10 latest configuration versions are shown in the ‘show archive’ output, there might be more on the server.
If a configuration change needs to be rolled back the ‘configure replace’ command can be used. So if a configuration change had unintended consequences the ‘configure replace ftp://10.10.10.1/History/rt-config-Jul-10-13-52-57.245-48’ command could be used to restore the current running-config from a backup.
tom
]]>Microsoft hold a live webcast today where they kicked off the new Office 15 wave.
Ballmer gave a quick overview of the latest announcements, including Surface, Windows Phones 8, Windows 8 and some Server products, before he gets going with the introduction of Office 2013.
He calls the new version of Microsoft Office the “most ambitious release of office” ever. It’s was designed for cloud and touch enabled devices, a full featured version of Office 15 will also be available on ARM devices.
View the recorded webcast: http://www.microsoft.com/en-us/news/presskits/office/liveevent.aspx
Ballmer talked about Microsoft’s recent acquisitions, namely Yammer and PPI. Yammer provides integration to all kind of social media for Office 15 client and Server products. PPI build huge, high definition displays which could be great for meetings and collaboration.
One of the most important points Ballmer makes is the ability of ink and touch support in every application, so that one can take digital annotations through the new generation of hardware. It seems like a big effort to finally move away from pen and paper.
After that, Ballmer introduced Kirk Koenigsberger for some live demo of the product. Kirk is very excited too and shows some sneak peaks of what is to come with a focus on consumer usage. Office 15 is heavily integrated into Skydrive and stores all content in the cloud by default, if you install the Office preview you will soon notice that you can sign-in with you Windows Live ID directly into Office.
Office 15 features integration with social networking, multimedia, Skype and Lync offer presence information for the People Card (kind of an evolution from that thing we know from Outlook 2010).
Really neat is the “last location” feature, where a toast notification brings you back to the section of the document that you have been editing when you left one device and switched to another.
SharePoint 2013 comes with fully featured enterprise social networking, with mentions, #hashtags and like buttons all packed into a sleek, new design. A Newsfeed will provide the user with “Facebook” style updates from co-workers and friends, again using Yammer to aggregate news from different sources into one feed. Office documents and multimedia content can be previewed directly from the new timeline, the People Card quickly shows all contact information and presence status of the team members.
The next generation of Office can be downloaded from Office.com.
What is at least as exciting as the new version of Office client products is that the Server products are already listed on the website. Can’t wait to get my hands dirty on that stuff…
http://www.microsoft.com/office/preview/en/try-more-products
so that’s it for now,
tom
So obviously things have changed, for starters I’m not working for said small businesses any more. There are now a lot of tasks that would take hours to be completed manually. And there is this shiny, new toy out there, called Windows PowerShell. Ok, it’s not really new, but a lot of people still stick to there old tools as they knew how they worked for years, so why change something that got the job done in the past? Well, here are my key points:
This is the most important point for me, think about some task where you have to repeat a configuration change for like 8 times. It’s not that scripting or automating is that much faster than making the change manually, that would be the case if it were 100 times or more, but 8, come on. The one key thing is, that by using automation the configuration is exactly the same every single time you have to do it. Sure, you have to spend a little more time in planning your steps (instead of just clicking your way through), you have to write a few lines of script, or just chain together some commands. Once your little tool is complete and tested, you can use it over and over again, it will produce the same result every time you run it. So we are getting to my second point.
PowerShell enables you to create reusable tools very easily, if you are typing some commands into the command line interface, the exactly same commands can be saved to a ps1 file and executed by a co-worker, a scheduled task or... you get the point. The first point still applies here, if you create a tool and share it with your colleagues or co-workers not only are you simplifying certain tasks, you are again eliminating a common source of error.
The transcript feature simply writes anything you type and all output of the current command line window to a file, this file can easily be used to document configuration changes.
So where do I start? First of all, remember one key command: Get-Help. It’s simple, it comes with PowerShell and the help content is very, very well written! Try this: ‘Get-Command | Get-Random | Get-Help –Full’
A good place to start is the Windows PowerShell Survival Guide on the TechNet Wiki.
There are some good books on the topic available, I’m looking forward to PowerShell in Depth by three of the most well-known PowerShell gurus: Don Jones, Richard Siddaway, and Jeffery Hicks.
Have fun!
tom
If a mobile device connects to an Exchange Server the following sequence evaluates the access state of the device (from TechNet: http://technet.microsoft.com/en-us/library/ff959225.aspx)
The last step in the above list determines the ‘default access level’ organizational setting. This setting defaults to ‘Allow’ so if no other device access rules are configured, all ActiveSync devices (which meet enforcement criteria) are allowed. That means, any user with an ActiveSync enabled mailbox (another default) is able to connect up to 10 devices using ActiveSync.
To change this behavior the ‘default access level’ setting can be modified using the ‘Set-ActiveSyncOrganizationSettings’ cmdlet. Other than ‘Allow’ this can be set to ‘Quarantine’ or ‘Block’.
Quarantine: Enables devices to connect to the Server but grants only limited access to the device. Users will be able to add content to their calendar, tasks and notes folders, however no content can be retrieved from the server. The user will receive an email stating that the mobile device has been quarantined, that email can be retrieved by the mobile device and will be available in the users mailbox through Outlook and OWA. If a device is quarantined an administrative email address is notified too, so that they can decide to allow or block the device.
An admin (or any user with the required privileges) who receives the notification can use the Exchange Control Panel to allow or block the device:
Devices listed in a users ‘ActiveSyncAllowedDeviceIDs’ attribute are allowed.
Block: Simply blocks all new or unknown devices. Devices listed in a users ‘ActiveSyncAllowedDeviceIDs’ attribute are allowed.
If users are already using ActiveSync to access their mailboxes the Exchange Management Shell can be used to add the DeviceID of currently used ActiveSync devices to the ActiveSyncAllowedDeviceIDs property.
The following command sets the recipient of the admin notification to support@ntsystems.local. Every time a device is quarantined that email address is notified.
Set-ActiveSyncOrganizationSettings –AdminMailRecipients support@ntsystems.local
The following command sets the ‘default access state’ to quarantine.
Set-ActiveSyncOrganizationSettings –DefaultAccessLevel Quarantine
Manual approval might not work for environments with many users or when users change their mobile devices frequently. Device Access Rules can be used to allow or block devices based on Family or Model so that users can connect approved device types without the need to be manually allowed by an admin:
Using Device Access Rules allows for some amount of scalability, even though it’s not perfect – it comes with Exchange.
so long,
tom
I created a PowerShell script the other day where I was passing a variable to a scriptblock. As long as the variable was a simple string everything was just fine, but when the variable was of the type System.Array only the first item would have been passed to the scriptblock.
[more]
Example 1 shows what I mean.
$myArray = "a","b","c" $myBlock = { param($p1) write $p1 } Invoke-Command -ScriptBlock $myBlock -ArgumentList $myArray
This example would produce an output of “a” even though I assumed it would output “a”,”b”,”c”.
So I was scratching my head for a while and then tried to do it that way:
$myArray = "a","b","c" $myBlock = { param($p1) write $p1 } Invoke-Command -ScriptBlock $myBlock –ArgumentList (,$myArray)
This one works as expected, so it produces an output of “a”,”b”,”c”.
have a nice weekend!
tom
]]>
"One must have a good memory to be able to keep the promises that one makes" - F. Nietzsche
So, having that said, what was going on that we have not been blogging about:
Go, give it a try. And check out all the cool content over at Windows Server Blog and Building Windows 8. Really.
I’m personally looking forward to that, I came to love my Windows Phone 7 and I think this is going to be even better. Read more on the Windows Phone Blog.
- Device encryption: To help keep everything from documents to passwords safe, Windows Phone 8 includes built-in technology to encrypt the entire device, including the operating system and data files.
- Better security: Windows Phone 8 supports the United Extensible Firmware Interface (UEFI) secure boot protocol and features improved app “sandboxing,” so the phone is better protected from malware with multiple layers of security.
- Remote management: With Windows Phone 8, IT departments can manage apps and phones remotely, with tools similar to ones they now employ for Windows PCs.
- Company Hub and apps: Companies can create their own Windows Phone 8 Hub for custom employee apps and other critical business info.
Hm, looks nice… but we will see.
Get more (well, not too much more) at surface.com
Some efforts are made to put more trust into the struggling SSL Certificate business and I guess it also gives us more security. Personally I think that education is the key point when it comes to “trust” and SSL and IT security in general. People should really be aware of what it means to just ignore Certificate warnings…
Its up to us IT Pros to make (our) internal servers trustworthy and sort of train users to rely on SSL and watch out for it.
Lets get back to MD5. So, recently there has been a some media coverage of the so called “Flame” malware which used phony certificates to make a man-in-the-middle attack against Windows Update possible. Whoever created the malware used a flaw in Microsoft's Terminal Server Licensing certificate infrastructure to create a code signing certificate that chained up to Microsoft's Root CA. In essence this was possible because of the TS Licensing certs using MD5 hashes which are prone to collision attacks.
More information about Flame on: NakedSecurity; Remote Desktop Services Blog; Security Research & Defense; the Security Advisory can be found here.
Some days after that I (and other customers) received an email from RapidSSL stating that MD5 is to be abandoned by June 1, that is all (RapidSSL) certificates that have been using the MD5 hashing scheme have been revoked. They did also revoke any certificate using a key size under 1024 bits.
Microsoft is also going to release an update that blocks certificates with keys less than 1024 bits. More information on this on the Windows PKI Blog.
Exchange 2010 has been available for little more than two years when Microsoft kicked off the “Office 15” technical preview (for few, select people) back in January 2012. Not much information has been published since then, although a beta is expected for “late summer”. Since the Exchange Conference happens to take place by the end of September I suppose we all will know more by then.
That’s it for now. Have a nice weekend!
tom
]]>Mit Microsoft Network Monitor 3.4 und Windows 7 kann man jetzt auch “normale” Adapter im Monitor Mode betreiben um Wireless Frames zu sniffen.
Dazu die entsprechende Version von NetMon herunterladen (x86 oder x64) und installieren.
NetMon öffnen und unter “Select Networks” den Wireless Adapter auswählen. Alle anderen Adapter deaktivieren.
Dann auf “Properties” klicken und die “Scanning Options” konfigurieren.
Der “Monitor Mode” muss aktiviert werden, außerdem kann man den Frequenzbereich sowie den Kanal auswählen. Wählt man keinen Kanal aus, scannt NetMon alle Kanäle.
Mit “Apply” werden die Einstellungen übernommen, das Fenster “Scanning Options” muss man offen lassen, der “Network Interface Configuration” Dialog kann mit “OK” geschlossen werden.
Jetzt kann man auf “New Capture” klicken und mit “Start” einen neuen Trace starten.
Die Analyse des Traffics ist mit NetMon etwas ungewohnt, es hilft allerdings sehr wenn man sich von http://nmparsers.codeplex.com/ die aktuellsten Parser installiert.
Alternativ kann man das Ergebnis aus NetMon als “.cap” Datei speichern und mit Wireshark öffnen.
btw. das funktioniert genauso mit Windows 8 Beta
have fun!
tom
]]>Im Active Direcotry Replikationsmodell wird jede Transaktion mit einer fortlaufenden Nummer (Update Sequence Number) versehen. Domain Controller “merken” sich diese Nummern sowie eine eindeutige ID des Replikationspartners (Invocation ID) von dem sie die jeweilige Änderung erhalten haben. Wird ein DC auf einen früheren Zeitpunkt zurückgesetzt (Snapshot) könnte er bereits verwendete USNs wiederverwenden, seine Replikationspartner akzeptieren diese Transaktionen nicht mehr, sie haben diese bereits erhalten. Der wiederhergestellte DC kann nicht mehr replizieren und wird in den sogenannten “USN Rollback Protection” Status gesetzt. Der DC muss jetzt manuell aus dem AD entfernt werden.
In Windows Server 8 Active Directory gibt es ein Feature das dieses Problem verhindern soll. Über die ACPI Table stellt der Hypervisor die VM-Generation ID zur Verfügung, diese wird im RAM des jeweiligen Domain Controllers gespeichert.
Wird ein Snapshot angewandt, wird diese VM-Generation ID zurückgesetzt, so merkt der Domain Controller dass er wiederhergestellt wurde.
Der wiederhergestellte DC setzt seine Invocation ID zurück und da seine Replikationspartner diese ID noch nicht kennen kann die Replikation wieder aufgenommen werden. Außerdem wird der SYSVOL Ordner “nicht autorisierend” wiederhergestellt und folgendes Ereignis wird im “Directory Service” Event Log protokolliert.
Folgendes Active Directory Attribut wird für die VM-Generation ID verwendet. Hier geht’s zum entsprechenden Eintrag im MSDN.
ms-DS-Generation-Id
VDC Safe Restore muss (und kann) nicht konfiguriert werden, sofern der Hypervisor das VM-Generation ID Feature unterstützt ist es automatisch aktiv. Aktuell unterstützt nur Windows Server 8 Hyper-V dieses Feature, andere Herstellen werden hoffentlich bald nachziehen.
Achtung, dieses Feature soll die USN Rollback Problematik lösen, es ist auf keinem Fall ein Ersatz für ein konsistentes Backup! Der DC wird “nicht autorisierend” wiederhergestellt.
so long,
tom
]]>Set-DistributionGroup GroupName -GrantSendOnBehalfTo UserName
Grüße
dn
]]>Als erstes muss der USB Stick bootfähig gemacht werden. Diese Prozedur ist dieselbe, die Thomas bereits in folgenden Post erklärt um Windows 7/8 vom USB Stick zu installieren.
Anbei nochmal kurz die Befehle:
- diskpart
- list disk
- select disk X (USB Datenträger auswählen)
- create partition primary
- format fs=ntfs quick
- active
Jetzt muss noch der PC neu gestartet werden und Windows 8 installiert werden. Als Datenträger empfiehlt sich hier ein USB 3.0 Speichermedium.
Grüße
dn
]]>Für ein erfolgreiche Kerberos Authentifizierung muss der Service Principal Name den der Client verwendet um sich mit dem Server zu verbinden im Active Directory Account des Servers registriert sein. Der SPN muss im gesamten Forest eindeutig sein, d.h. nur ein Account kann den SPN für die NBL IP Adresse verwenden. Verbinden sich Clients mit anderen Knoten im Cluster schlägt die Kerberos Authentifizierung fehl, da der SPN nicht stimmt.
Bisher konnte der “Microsoft Forefront TMG Firewall Service” nur als Network Service laufen, d.h. für Kerberos Authentifizierungen wurde das Computerkonto jedes TMG Servers verwendet.
Mit Service Pack 2 kann man den Firewall Dienst als Domänenbenutzer starten, registriert man auf diesen Domänenbenutzer die benötigten SPNs funktioniert die Kerberos Authentifizierung im Clusterbetrieb.
Aus Sicherheitsgründen sollte man ein eigenes Benutzerkonto für den TMG Service anlegen, dieses Benutzerkonto sollte ausschließlich für TMG verwendet werden und keine weiteren Berechtigungen in der Domain haben. Außerdem sollte man das Konto aus der Gruppe “Domain Users” entfernen, und eine andere Gruppe als primäre Gruppe definieren. Auch dieses Gruppe sollte kein Berechtigungen in der Domain oder auf einem anderen System haben.
Forefront TMG erteilt dem Benutzerkonto automatisch die minimal benötigten Berechtigungen wenn man den Firewall Service für dieses Konto konfiguriert. Auch auf dem TMG ist somit keine Konfiguration von Berechtigungen für das Service Account notwendig.
Nach der Installation von Service Pack 2 kann man in den Eigenschaften des Arrays, im Reiter “Credentials” das Konto auswählen unter dem der Firewall Service in Zukunft laufen soll.
Um einen Serivce Principal Name zum Service Account hinzuzufügen, kann man z.B. das Tool “setspn” verwenden.
Registrierte SPNs anzeigen:
setspn –L benutzername
setspn –L computername
Neuen SPN registrieren:
setspn -S http/myArray.ntsystems.local tmgSvcUsr
Der Parameter –S überprüft zuerst ob der SPN nicht bereits von einem anderen Konto verwendet wird, anschließend wird er zum Konto hinzugefügt.
Mit einem Netzwerk Analyse Tool sieht man dass vor der Registrierung des SPN NTLM für Proxy Authentifizierung verwendet wird.
Wurde der Firewall Service als Domain User gestartet und der benötigte SPN registriert, wird Kerberos verwendet.
Der Client verwendet jetzt GSS-API, also Kerberos, um sich zu authentifizieren. Mit “klist” kann man sehen dass der Client jetzt ein Ticket für den Array Namen hat.
Achtung: Es müssen alle Mitglieder im Array aktualisiert werden, bevor der Firewall Service als Domain User gestartet werden kann. Außerdem sollte man den SPN erst dann hinzufügen, wenn der Firewall Service als Domain User läuft da es sonst zu Authentifizierungsproblemen kommt.
Weitere Informationen zu “Kerberos authentication on an NLB array” im TechNet: http://technet.microsoft.com/en-us/library/hh454304.aspx
Um Forefront TMG SP2 installieren zu können muss Forefront TMG SP1 Update 1 installiert sein, Download: http://www.microsoft.com/download/en/details.aspx?id=11445
so long, tom
]]>DHCP Server Failover bietet die Möglichkeit zwei DHCP Server für einen Bereich zu konfigurieren. Es muss sich dabei um Windows 8 DHCP Server handeln, andere Hersteller oder ältere Server Betriebssysteme werden nicht unterstützt. Im Load Sharing Modus bedienen beide Server Client Anfragen und replizieren die Lease Informationen. Fällt ein Server aus kann der zweite Server bereits bestehende Leases verlängern. Außerdem verfügen beide Server über den gesamten Bereich, Reservierungen und Optionen werden ebenfalls zwischen den Servern repliziert und sind so konsistent.
Im Standard Modus wird ein Failover Relationship im Load Sharing betrieben, das bedeuted Clientanfragen werden gleichmäßig auf die beiden DHCP Server verteilt. Die Verteilung der Anfragen kann über den Wert load-balancing ratio konfiguriert werden. Der Load Sharing Mode eignet sich für Server im selben Standort.
Alternativ können die DHCP Server im Hot Standby Mode betrieben werden, dabei ist ein Server “aktiv” und bedient Clientanfragen. Der zweite Server übernimmt diese Aufgabe sobald er erste nicht mehr verfügbar ist. Die Entscheidung ob ein Server “aktiv” oder “standby” ist, kann für jeden DHCP Bereich getroffen werden, ein Server kann also standby für einen Bereich sein und gleichzeitig aktiv für einen andern. Der Hot Standby Mode eignet sich für Außenstellen oder kleinere Standorte an denen kein zweiter Server vor Ort ist und ein Server im entfernten Rechenzentrum nur im Problemfall übernehmen soll.
Die DHCP Server Rolle wird über den Server Manager hinzugefügt, dazu verwendet man den Add Roles and Features Wizard.
Die entsprechende Rolle auswählen, und entscheiden ob der Server automatisch neustarten soll, das ist für DHCP nicht notwendig.
Nach der Installation weißt der Post-Install configuration Wizard darauf hin, dass man den Server noch im Active Directory autorisieren muss.
Natürlich kann man die Rolle auch mit der PowerShell hinzufügen, verwendet wird dazu das Modul ServerManager (PowerShell v3 importiert Module automatisch, also kein Import-Module):
Auch nach dieser Insatllation weißt der ServerManager auf notwendige Post-Install Schritte hin
Es sind jetzt zwei DHCP Server verfügbar, nun geht es an die Failover Konfiguration.
Über einen Rechtsklick auf einen DHCP Server im Server Manager öffnet man die bekannte dhcpmgmt Konsole (doch nicht überall Metro).
Ein neuer Bereich wird, wie immer, mit einem Rechtsklick auf den IPv4 Knoten erstellt. Dabei hat sich mit WS8 nichts geändert, man wählt einen Namen, das Subnet bzw. den IP Range sowie Optionen wie Gateway und DNS Server.
Jetzt kann man entscheiden ob man DHCP Failover für den gesamten Server oder für jeden einzelnen Bereich konfigurieren will. Je nach dem für welche Konfiguration man sich entscheidet, beginnt man mit der Konfiguration auf dem IPv4 Knoten oder auf dem jeweiligen Bereich.
Mit “Configure Failover” wird die Konfiguration gestartet, als ersten Schritt muss man den Partner-Server angeben.
Nach der Auswahl des Partner-Servers werden einige Voraussetzungen für eine erfolgreiche Failover Beziehung überprüft, unter anderem wird überprüft ob der Server erreichbar ist, ob mindestens Windows Server 8 Beta installiert ist, ob der angemeldete Benutzer über ausreichende Rechte verfügt (Mitglied der Gruppe DHCP Administrators) und ob auf dem Partner überhaupt ein DHCP Server läuft. Sind die Vorrausetzungen ok, wird ein Dialog für die Konfiguration des Failover Relationships angezeigt.
In diesem Dialog wird der Failover Mode konfiguriert. Außerdem kann die Load Sharing ratio hier festgelegt werden. Maximum Client Lead Time gibt die temporäre Lease Zeit für neue Clients an, deren Anfragen der Failover Server bedient. Auch die Zeit nach der ein Server im Partner-Down-State den gesamten Bereich übernimmt wird durch die MCLT gesetzt.
Wird der Hot Standby Mode gewählt, kann anstelle der Load Sharing ratio die Menge an Adressen Konfiguriert werden, welche für den Standby Server reserviert werden. Sollten keine Adressen reserviert werden, kann der Standby Server erst dann neue Clients bedienen, wenn er den gesamten Bereich übernommen hat, das dauert standardmäßig eine Stunde (MCTLT).
Das Auto State Switchover interval gibt an nach welcher Zeit ein Server vom communication interrupted in den partner down state wechselt. Standardmäßig passiert das nach 10 Minuten.
Hat man die Optionen konfiguriert wird die Partnerschaft konfiguriert. Für die Failover Konfiguration wird TCP Port 647 verwendet.
In den Eigenschaften des Bereiches gibt es den neuen Reiter Failover, dort kann man den Status der Failover Partnerschaft und die konfigurierten Optionen sehen.
Um die Konfiguration zu ändern, öffnet man die Eigenschaften des IPv4 Konten und wählt dort unter Failover die entsprechende Partnerschaft aus.
Mit Edit kann man die ausgewählte Partnerschaft ändern, mit delete wird diese gelöscht.
Mit einem Netzwerk Analyse Tool sieht man die DHCP Kommunikation, hier ist zu beobachten dass der Client zwei DHCP Offers bekommt. Eine von jedem Server in der Failover Konfiguration.
Beide DHCP Offers sind bis auf die angebotene Lease Time identisch, der “aktive” Server bietet eine Adresse mit der im Bereich konfigurierten Lease Time an (8 Tage).
Während die Lease Time im Offer des “standby” Servers der Maximum Client Lead Time entspricht.
so long, tom
]]>Nach der Installation auf Windows 8 konnte ich keine neuen Captures starten, es war kein Interface verfügbar.
Das Problem scheint am WinPCAP Treiber zu liegen, die Lösung war einfach. Ich habe den WinPCAP im “Kompatibilitätsmodus” Windows 7 neu installiert.
Download WinPCAP: www.winpcap.org
have fun!
]]>Das Verwaltungscenter in Windows 8 Server Beta kommt im Metro Style daher und ist Teil der ADDS Simplified Administration. Es bietet einige sehr nützliche Funktionen, unter anderem endlich eine grafische Oberfläche für PSO und den AD Papierkorb. Außerdem werden die neuen Dynamischen ACLs über das Verwaltungscenter konfiguriert.
Da es auf PowerShell aufsetzt, ist ein PowerShell History Viewer integriert.
Geöffnet wird das Administrative Center über “Tools” im Server Manager oder man führt “dsac.exe” aus.
“Reset Password” und “Global Search” sind schon aus dem ADAC von 2008R2 bekannt, neu ist die PowerShell History im unteren Bereich. Öffnet man diesen sieht man die PowerShell Befehle welche das ADAC zuletzt ausgeführte.
Auch der AD Papierkorb wurde mit Windows Server 2008R2 eingeführt, die Verwendung war zwar etwas kompliziert (keine grafische Oberfläche), trotzdem war es eine nützliche Erweiterung. Mit Windows Server 8 gibt es ein GUI um gelöschte Objekte einfach zu finden und wiederherzustellen.
Sollte der AD Recycle Bin noch nicht aktiv sein, kann man ihn im ADAC gleich aktivieren. Dafür muss sich der Forest im “Windows Server 2008R2” Functional Level befinden.
Einfach auf “Enable Recycle Bin…” klicken und den Dialog bestätigen, schon ist der Recycle Bin aktiv. Natürlich muss die Änderung auf alle DCs repliziert werden, erst wenn dieser Vorgang abgeschlossen ist funktioniert er zuverlässig.
Im der PowerShell Histroy sieht man sofort welcher Befehl ausgeführt wurde:
Enable-ADOptionalFeature -Confirm:$false -Identity:"766ddcd8-acd0-445e-f3b9-a7f9b6744f2a" -Scope:"ForestOrConfigurationSet" -Target:"tomt.local"
Löscht man jetzt ein Objetk aus dem AD wird es in den neu erstellten Container “Deleted Objects” verschoben. Dort bleibt es (mit all seinen Attributen und Links) bis die Deleted Objects Lifetime (msDS-DeletedObjectLifetome)abgelaufen ist, dann wird es zum recycled Object. Nach Ablauf der Recylced Object Lifetime (tombstoneLifetime) wird es vom Garbage Collection Process endgültig aus der AD Datenbank gelöscht.
Im “Deleted Obejects” Container findet man gelöschte Objekte die nach aktiveren des Recylce Bin Features gelöscht wurden und deren Deleted Objects Lifetime noch nicht abgelaufen ist. Man kann in dem Container suchen und die Ansicht filtern um die gewünschten Objekte zu finden.
Hat man die Objekte gefunden kann man diese einzeln oder mehrere zusammen wiederherstellen. Einfach rechts auf das Objekt klicken und “Restore” oder “Restore To…” auswählen.
“Restore” stellt die Objekte an ihrem Ursprünglichen Ort wieder her (lastKnownParent), mit “Restore To…” erhält man folgenden Dialog und kann das Ziel auswählen.
Auch hier werden in der PowerShell History die ausgeführten Befehle angezeigt:
Restore-ADObject -Confirm:$false -Identity:"bb127a94-277f-4a7d-a09b-5893906cb16b" -Server:"WIN8CP-DC1.tomt.local"
Fine-Grained Password Policies wurden mit Windows Server 2008 eingeführt, sie waren eine wichtige Neuerung und auch sie waren in der Verwendung nicht ganz einfach.
Mit dem neuen ADAC gibt es eine GUII für die sogenannten PSOs oder Password Setting Objects. Um ein neues PSO zu erstellen öffnet man den Container Password Settings (“CN=Password Settings Container,CN=System,DC=tomt,DC=local”) und klickt auf New, Password Settings.
Im Dialog “Create Password Settings” kann man die Fine-Grained Password Policy konfigurieren und diese gleich einer Gruppe oder einem Benutzer zuweisen. Ist ein Benutzer Mitglied in mehreren Gruppen auf die ein PSO angewendet wird, hat jenes mit dem niedrigerem Precedence Wert (msDS-PasswordSettingsPrecedence) Vorrang.
Und auch hier wieder die entsprechenden PowerShell Befehle:
Add-ADFineGrainedPasswordPolicySubject -Identity:"CN=pso_group1,CN=Password Settings Container,CN=System,DC=tomt,DC=local" -Server:"WIN8CP-DC1.tomt.local" -Subjects:"CN=group1,OU=groups,OU=tomt,DC=tomt,DC=local"
New-ADFineGrainedPasswordPolicy -ComplexityEnabled:$true -LockoutDuration:"00:30:00" -LockoutObservationWindow:"00:30:00" -LockoutThreshold:"0" -MaxPasswordAge:"42.00:00:00" -MinPasswordAge:"1.00:00:00" -MinPasswordLength:"7" -Name:"pso_group2" -PasswordHistoryCount:"24" -Precedence:"20" -ReversibleEncryptionEnabled:$false -Server:"WIN8CP-DC1.tomt.local"
Set-ADObject -Identity:"CN=pso_group2,CN=Password Settings Container,CN=System,DC=tomt,DC=local" -ProtectedFromAccidentalDeletion:$true -Server:"WIN8CP-DC1.tomt.local"
Durch diese neuen grafischen Oberflächen wird das ADAC wahrscheinlich mehr Verwendung finden als sein Vorgänger. Auch an den Metro Style wird man sich gewöhnen (müssen).
so long,
tom
Man wählt die OU aus in der sich die Computerkonten befinden auf denen man das Update ausführen möchte. Achtung: Man kann das GP Update nur auf Computerkonten initiieren, es werden aber Computer und Benutzerrichtlinien aktualisiert.
Mit einem Rechtsklick auf die OU kann man “Group Policy Update…” auswählen. Der Dialog um das Update zu bestätigen zeigt an um wie viele Computer es sich handelt.
Klickt man auf “Yes” wird “gpupdate /force” auf den erreichbaren Computern ausgeführt.
Ein kurzer Report wird angezeigt, in dem evtl. Fehler sichtbar sind.
Mit dem cmdlet “Invoke-GPUpdate” aus dem Modul “GroupPolicy” kann man das GP Update auch per PowerShell starten.
Invoke-GPUpdate –Computer “win8cp-dc1”
Damit das Remote GP Update funktioniert müssen folgende Windows Firewall Regeln aktiviert sein (Verbindungen akzeptieren)
tom
]]>Der neue Server Manager ist natürlich im Metro Style und ist über die RSAT (Remote Server Administration Tools) auch für das neue Client OS (Windows 8 Consumer Preview) verfügbar.
Download RSAT (Beta/CP): http://www.microsoft.com/download/en/details.aspx?id=28972
Über das Dashboard sieht man eine Zusammenfassung der verwalteten Server und Rollen. Der Status wird automatisch aktualisiert, standardmäßig alle 10 Minuten. Man wird so auf evtl. Probleme hingewiesen.
Über “Manage” kann man Server hinzufügen oder Rollen und Features auf bereits verwalteten Server installieren.
Fügt man einen Server hinzu, kann man diese aus dem Active Directory suchen oder den DNS Namen angeben, außerdem kann man Textdateien die Servernamen enthalten importieren.
Damit man einen Server hinzufügen kann muss die Remoteverwaltung (WinRM) dort aktiviert werden, DCOM wird nicht mehr benötigt.
Mit Server Gruppen können mehrere Server die z.B. dieselbe Aufgabe erfüllen zu einer Gruppe hinzugefügt werden.
Über den Server Manager können Rollen und Features auf allen verwalteten Server hinzugefügt oder entfernt werden. In folgendem Beispiel füge ich einen weiteren Domain Controller hinzu. Alle Schritte führe ich auf meinem Windows 8 CP Client mit RSAT aus.
Unter “Manage” klicke ich auf “Add Roles and Features” um den Wizard zu starten.
Ich wähle die Art der Installation und den Zielserver aus.
Ich wähle Active Directory Domain Services aus und bestätige dass ich die nötigen Rollen sowie die Management Tools installieren möchte.
Wurden die ADDS Binaries auf dem Zielserver installiert erhält man eine Notification im Server Manager, hier wird auch gleich der “Task” angezeigt um den Server zum Donain Controller zu machen (zu promoten)
Ich klicke also auf “Promote this server to a domain controller” und komme so zu folgendem Wizard.
Wie bereits mit “dcpromo” kann man auch hier auswählen ob man den DC zu einer bestehenden Domain, eine neue Domain in einem bestehenden Forest hinzufügen, oder gleich einen neuen Forest erstellen möchte.
Im nächsten Schritt werden die DC Options konfiguriert. Der DC soll DNS sowie Global Catalog sein, außerdem wird hier die Site ausgewählt und das DSRM Passwort gesetzt.
Man kann noch die Pfade für die ADDS Datenbank und Log Files sowie den SYSVOL Share setzen.
Ist die Konfiguration abgeschlossen kommt man zur “Review Options” Seite, man kann die ausgewählten Optionen nochmal überprüfen. Das eigentlich interessante an dieser Seite ist jedoch der Button “View Script” er zeigt das PowerShell Script an, welches auf dem Remote Server ausgeführt wird.
Der Server Manager erledigt alle Tasks mit PowerShell Befehlen, dcpromo kann noch für “unattended” Insatllationen verwendet werden, die Empfehlung von Microsoft ist es allerdings “dcpromo” nicht mehr zu verwenden.
Server Manager führt einen prerequisite Check auf dem Zielserver durch, dabei wird überprüft ob der Server zum DC promoted werden kann.
Nach dem Klick auf “Install” gehts los, der Server wird hochgestuft, und DNS sowie die AD Tools werden installiert. Anschließend wird der Server neu gestartet und ich habe einen neuen DC.
tom
]]>Die vollständige Liste der Eigenschaften (und Methoden) gibt es im MSDN. Oder natürlich mit folgendem Befehl:
Get-WmiObject -Class win32_OperatingSystem -Property * | select *
OperatingSystemSKU: Enthält die installierte Version des Betriebssystems, z.B. Ultimate, Enterprise, Datacenter Server Edition
ProductType: Workstation, Domain Controller, Server
BuildNumber: Enthält die Build Nummer des Betriebssystems
OSArchitecture: 32-Bit oder 64-Bit
Man kann aufgrund dieser Eigenschaften einfache Filter für Scripts erstellen und so z.B. sicherstellen dass ein bestimmtes Script nur auf einem bestimmten Betriebssystem ausgeführt wird.
#Variable OS erstellen, enthält alle Informationen der angegebenen Klasse
$OS = Get-WMIObject –Class Win32_OperatingSystem
if($OS.OperatingSystemSKU -eq "4" -and $OS.Caption -like "*Windows 7*") {
#Code für Windows 7 Enterprise
} else {
#Code für jedes andere OS
}
if ($os.OSArchitecture -eq "64-bit"){
#Code für x64
} else {
#Code für x86
}
Das sind natürlich sehr einfache Beispiele, wie mächtig WMI ist kann man sich am besten in der WMI Reference ansehen. Außerdem enthält das Beispiel keine Fehlerüberprüfung, läuft irgendwas schief, wars das.
Natürlich kann man auch Informationen über einen oder mehrere remote Computer auswerten. Das cmdlet Get-WmiObject hat den Parameter Computername über den man einen oder mehrere Computernamen (getrennt mit Komma) abfragen kann. Über Pipline Input kann man dem cmdlet Computernamen aus einem Textfile oder dem ActiveDirectory übergeben.
Get-WmiObject –Class win32_OperatingSystem –Computer mypc1,mypc2
Get-ADComputer -Filter 'Name -like "*Server*"'| Get-WmiObject –Class win32_OperatingSystem
so long,
tom
]]>Nun gibt es verschiedene Module für das Verwalten von Serverrollen wie z.B. Active Directory, Exchange 2010 oder Lync 2010. Will ich von meinem Client aus diese cmdlet’s verwenden muss ich die Module installieren. Oder?
Man erstellt eine neue PSSessoin mit einem Computer auf dem das entsprechende Modul installiert ist.
$ADSession = New-PSSession –ComputerName dc01.domain.local
Dann wird das Modul in der gerade erstellten Session geladen:
Invoke-Command {Import-Module ActiveDirectory} -Session $ADSession
Befehle aus einer Session können mit Import-PSSession in die aktuelle PowerShell Sitzung übernommen werden, man kann entweder alle Verfügbaren cmdlet’s importieren oder nur einen Teil. In diesem Beispiel interessieren mich die cmdlets aus dem ActiveDirectory Modul, die entsprechenden Nouns beginnen mit AD, ich kann also auf *-AD* Filtern und so nur ActiveDirectory cmdlet’s übernehmen.
Import-PSSession -Session $ADSession-CommandName *-AD*
So kann ich in meiner aktuellen PS Sitzung die AD cmdlet’s wie Get-ADUser verwenden. Schließe ich das aktuelle PS Fenster wars das mit den AD cmdlet’s.
Damit man sich diese Befehle nicht merken muss und die cmdlet’s einfach wiederverwendet kann, erstellt Export-PSSession automatisch ein Modul mit den gewünschten remote cmdlet’s.
Export-PSSession $ADSession -OutputModule AD -CommandName *-AD* –AllowClobber
Jetzt kann man das aktuelle PowerShell Fenster schließen, ein Modul wurde erstellt das wie gewohnt geladen werden kann.
Import-Module AD
Die Befehle aus dem Modul sind jetzt verfügbar, allerdings gibt es noch keine PSSession. Diese muss jedoch nicht manuell erstellt werden, führt man den ersten Befehl aus dem Modul aus (Get-ADUser username) wird automatisch eine PS Session mit dem remote Computer erstellt und das cmdlet ausgeführt.
So kann man also auf jedem beliebigen Client (auf dem nur PowerShell v2 installiert ist) cmdlet’s ausführen die auf dem Server laufen.
Exchange und Lync bieten einen eigenen Endpoint für PowerShell Verbindungen, man gibt diesen bei der Erstellung der PSSession als ConnectionURI an.
$exSession = New-PSSession -ConnectionUri 'http://ex14.domain.local/powershell/’ -ConfigurationName Microsoft.Exchange -Authentication Kerberos
$lyncSession = New-PSSession –ConnectionUri ‘https://lync.domain.local/ocspowershell’
Hat man die gewünschte Session erstellt kann man sie wie gehabt mit Import-PSSession gleich verwenden oder mit Export-PSSession ein Modul erstellen.
Damit man die lokalen und remoten cmdlet’s unterscheiden kann, gibt es den Parameter –Prefix für die cmdlet’s Import-Module und Import-PSSession.
Import-Module AD –Prefix ‘r’
So wird jedem Noun ein ‘r’ vorgestellt, ich verwende also z.B. Get-rMailbox, Get-rADUser usw.
Ich denke diese wenig bekannte Funktionalität zeigt wie genial das Konzept der PowerShell ist, mit Windows 8 sollen jede Menge weitere cmdlet’s dazukommen. PowerShell wird das ultimative Admin Werkzeug werden.
so long, happy hacking!
tom
]]>Es gibt ein neues Active Directory Schema, ein paar Infos dazu hier: http://blogs.technet.com/b/exchange/archive/2012/01/17/custom-aka-extension-attributes-in-exchange-2010-sp2-and-their-use.aspx
Um das AD Schema zu aktualisieren benötigt man “Schema Admin” Berechtigungen, installiert man Exchange 2010 SP2 mit einem Benutzer der diese Rechte hat wird das Schema automatisch erweitert. Alternativ kann man die Setup Files von SP2 auf den Schema-Master kopieren und mit setup.com /prepareAD das Update durchführen.
Die aktuelle Schema Version findet man folgendermaßen:
Active Directory Schema:
Get-ADObject "cn=schema,cn=configuration,dc=ath,dc=int" -Properties ObjectVersion
Exchange Schema:
Get-ADObject "cn=ms-Exch-Schema-Version-Pt,cn=schema,cn=configuration,dc=domain,dc=local" -Properties RangeUpper
Genauere Infos und die genauen Schema Versionsnummern gibt es im TechNet Wiki.
Die Systemvoraussetzungen für die Client Access Rolle wurden geändert, hinzugefügt wurde IIS 6 Wmi Compatibility oder “web-wmi”.
Das Feature kann automatisch installiert werden wenn die entsprechende Option beim Setup aktiviert wird, alternativ kann man es im Servermanager oder per Powershell installieren.
Import-Module Servermanager
Add-WindowsFeature Web-WMI
In vielen Umgebungen werden Einstellungen wie z.B. die PowerShell Execution Policy über Gruppenrichtlinien gesteuert. Diese Gruppenrichtlinie führt zu einem Problem bei der Installation des Service Packs das den Server in einem Status zurücklässt in dem Exchange nicht mehr läuft und die Installation nicht fortgesetzt werden kann. Der Fehler “AuthorizationManager check failed” wird angezeigt. Klingt nach Restore.
Um das zu verhindern muss man die Gruppenrichtlinie vor dem Update deaktivieren, überprüft werden kann das so:
Get-ExecutionPolicy –List
Wichtig ist hierbei dass MachinePolicy und UserPolicy auf “Undefined” stehen.
Genaueres gibt es in der Knowledge Base.
Release Notes
Wie vor jedem Update empfehle ich hier auf jeden Fall einen Blick auf die Release Notes zu werfen.
so long,
tom
Um in den Genuss der neue Features wie “automatic module loading” und “robust sessions” zu kommen benötigt man ein englisches Windows 7 und das .NET Framework 4. Ist das Betriebssystem in einer anderen Sprache installiert muss man vor der Installation des Management Frameworks das englische Sprachpaket installieren.
Achtung: Es handelt sich um pre-release Code, sollte natürlich nur in Testumgebungen verwendet werden!
.NET Framework 4 - http://go.microsoft.com/fwlink/?LinkID=212547
Windows Management Framework 3.0 - Community Technology Preview (CTP) #2 - http://www.microsoft.com/download/en/details.aspx?id=27548
Die Installation ist denkbar einfach, zuerst wird das .NET Framework installiert, anschließend je nach Platform WINDOWS6.1-KB2506143-x64.msu oder WINDOWS6.1-KB2506143-x86.msu. Nach einem neustart ist die neue PS verfügbar.
Wie bereits erwähnt enthält die neue PowerShell eineige neue Features sowie jede Menge neue cmdlets. Besonders gut gefallen mir die “Robusten Sessions”, verliert man die Netzwerkverbindung ist eine PowerShell Session mit einem remoten Host für gewöhnlich weg. Mit PS v3 wird die Session automatisch wieder hergestellt.
Außerdem angenehm ist das autmatische Laden von Modulen, wer z.B. diverse Admin-Tools (Active Directory, Exchange) installiert hat muss in einer neuen PowerShell Session immer Module nachladen (oder ein entsprechendes Profil erstellen). Mit v3 wird ein Modul automatisch geladen wenn ein cmdlet aus dem Modul verwendet wird.
Man kann natürlich auch mit installierter PS v3 die Version 2 verwenden, da es sich um pre-release Code handelt kann es durchaus zu Problemen kommen. Um v2 zu starten wird die powershel.exe mit dem Parameter “-version 2” gestartet.
Ein guter Start ist das TechNet Wiki: http://social.technet.microsoft.com/wiki/contents/articles/4741.powershell-v3-featured-articles-en-us.aspx
tom
]]>Man kann jetzt einzelne Elemente oder ganze Mailboxen löschen um diese vom Backup wieder zurück zu holen. Zwar gibt es mit Single Item Recovery eine bessere Möglichkeit für das Widerherstellen einzelner Mails, dazu aber ein anderes mal mehr.
Die Datenbank wird von der Sicherung zurück geholt, dazu starte ich Windows Backup und wähle Recovery. Ich kann nun aus den erstellten Backups wählen und entscheide mich für eines auf einem Netzlaufwerk.
Nun kann ich wählen was ich Wiederherstellen möchte, in meinem Fall einzelne Dateien oder Ordner. Ich hole mir also die .edb Datei (Datenbank) und den kompletten Log Folder derselben zurück. Das Ganze darf natürlich nicht an der ursprünglichen Stelle widerhergestellt werden, sondern in einem neuen Ordner.
Ist die Wiederherstellung abgeschlossen wird mit der Exchange Management Shell eine Recovery Database erstellt, diese verwendet die wiederhergestellte .edb Date sowie die wiederhergestellten Log Files.
Dieses Beispiel erstellt die Recovery Database RDB01 auf dem Server MBX01, X:\restore ist dabei der Ort an dem die Edb Datei und der Log Ordner wiederhergestellt wurden.
New-MailboxDatabase RDB01 –Recovery –Server MBX01 –EdbFilePath x:\restore\db.edb –LogFolderPath x:\restore
Die Datenbank wurde also erstellt, allerdings wird man darauf hingewiesen dass die Datenbank noch nicht gemounted wurde, sie muss erst in einen “Clean Shutdown State” gebracht werden.
Um die Datenbank in einen sauberen Status zu bringen wird eseutil.exe verwendet. Dabei ist es wichtig die richtigen Parameter zu verwenden.
Als erstes kann man überprüfen in welchen Zustand sich die Datenbank befindet:
Eseutil /mh x:\restore\db.edb
Die Datenbank ist also im “Dirty Shutdown” State und kann so nicht gemounted werden, mit “eseutil /r” wird die DB ohne Datenverlust in einen “Clean Shutdown” State gebracht. Mit dem Parameter /r wird der Präfix der Logs angegeben, also am besten zuerst den Dateinamen den Logs überprüfen. Die Parameter /l und /d geben den Pfad zu den Logs bzw. zur Datenbank an.
Eseutil /r “E01” /l x:\restore\ /d x:\resotre
Achtung: Sollte das nicht funktionieren kann mit eseutil /p ein Hard Repair durchgeführt werden, dabei wird die Datenbank ohne Rücksicht auf Verluste in den “Clean Shutdown” State gebracht. Datenverlust ist möglich!
Nachdem Eseutil durchgelaufen ist und sich die Datenbank im Clean Shutdown State befindet kann sie gemounted werden, das geht in der EMC mit einem Rechtsklick auf die RDB oder mit der Management Shell und folgendem Befehl:
Mount-Database RDB01
Wenn die Recovery Database online ist kann man beginnen Mailbox Inhalte wiederherzustellen, dazu verwendet man das cmdlet New-MailboxResotreRequest. Folgendes Beispiel stellt den Inhalt der Mailbox “Test User” in den Ordner Restore derselben Mailbox wieder her.
New-MailboxRestoreRequest –SourceDatabase ‘RDB01’ –SourceStoreMailbox ‘test user’ –TargetMailbox ‘test.user@ntsystems.it’ –TargetRootFolder ‘Restore’
Folgendes Beispiel stellt den Inhalt aller Mailboxen der Datenbank DB01 wieder her. Es wird für jede Mailbox ein Restore Request erstellt, auch hier wird der Inhalt in den Ordner Restore der jeweiligen Mailbox wiederhergestellt.
Get-Mailbox –Database ‘DB01’ |foreach { New-MailboxRestoreRequest -SourceStoreMailbox $_.Guid –SourceDatabase ‘RDB01’ -TargetMailbox $_.Guid –TargetRootFolder ‘Restore’}
Bei diesem cmdlet ist zu beachten dass die Parameter –SourceStoreMailbox und -TargetMailbox verschiedene Eingaben unterstützen, am Besten die Mailbox GUID verwenden, diese wird von beiden unterstützt.
Weitere Infos zu New-MailboxRestoreRequest gibt es im TechNet: http://technet.microsoft.com/en-us/library/ff829875.aspx
Wenn der Restore Vorgang abgeschlossen ist kann man die Recovery Database wieder entfernen, dazu muss sie zuerst mit folgendem Befehl dismounted werden:
Dismount-Database RDB01
Anschließend kann man die RDB löschen, dazu verwendet man folgenden Befehl:
Remove-MailboxDatabase RDB01
Die Datenbank ist jetzt aus der Konfiguration entfernt, die Files sind jedoch nach wie vor auf dem Server. Diese müssen manuell gelöscht werden.
so long,
tom
Um die Unified Messaging Rolle mit der “traditionellen” Telefonwelt zu verbinden braucht man ein IP Gateway oder eine IP Telefonzentrale wie den Cisco Call Manager.
Die Unified Messaging Server Rolle kann auf einem bestehenden Exchange Server hinzugefügt werden, alternativ kann man einen separaten UM Server installieren.
Die notwendigen Voraussetzungen müssen auf einem Windows Server installiert werden, dazu verwendet man am besten die Powershell. Folgendes Beispiel installiert die Voraussetzungen für einen Server der nur die UM Rolle betreibt.
Add-WindowsFeature NET-Framework,RSAT-ADDS,Web-Server,Web-Basic-Auth,Web-Windows-Auth,Web-Metabase,Web-Net-Ext,Web-Lgcy-Mgmt-Console,WAS-Process-Model,RSAT-Web-Server,Desktop-Experience –Restart
Achtung: Neustart erfolgt automatisch, sollte das nicht gewünscht sein den Parameter –Restart entfernen.
Um die Exchange UM Rolle zu installieren wird Setup.exe von einer aktuellen Version der Installationsmedien ausgeführt. Auf einem neuen Server wird dann nur die Unified Messaging Rolle installiert, ein bestehender Server wird über den “Maintenance Mode” um diese Rolle erweitert.
Wie nach jeder Installation sollte man auch hier Windows Update ausführen und evtl. Updates installieren.
Nach der Installation der Rolle muss diese konfiguriert werden.
Ein UM Dial Plan muss erstellt werden, dazu unter Organization Configuration auf Unified Messaging klicken und “New UM Dial Plan” wählen, hier wird der URI Type “Telephone Extension” ausgewählt sowie die länge der internen Telefonnummern (Extension) angegeben.
Der UM Dial Plan ist die zentrale Komponente der UM Konfiguration und entspricht der Telefonzentrale bzw. Gruppen von Benutzern mit gleichen Telefonnummern (4 stellig) und dem selben URI Type (Telephone Extension).
Der Dial Plan wird im Active Directory unter “CN=My 4 Digit DP, CN=UM DialPlan Container, CN=Organization, CN=Microsoft Exchange, CN=Services, CN=Configuration, DC=Domain, DC=Local” gespeichert.
Gleichzeitig mit dem Dial Plan wird eine UM Mailbox Policy erstellt, auch diese wird im AD unter “CN=My 4 Digit DP Default Policy, CN=UM Mailbox Policies, CN=Organization, CN=Microsoft Exchange, CN=Services, CN=Configuration, DC=Domain,DC=Local” gespeichert.
Über die UM Mailbox Policy werden Einstellungen für UM aktivierte Postfächer konfiguriert.
Als nächstes wird ein UM IP Gateway angelegt, das Gateway ist die SIP Gegenstelle. In diesem Fall gebe ich den Cisco Call Manager an. Um ein UM IP Gateway anzulegen klickt man unter Organization Configuration, Unified Messaging auf “New UM IP Gateway”.
Für jedes IP Gateway wird im AD unter “CN=UM IPGateway Container, CN=Organization, CN=Microsoft Exchange, CN=Services, CN=Configuration, DC=Domain, DC=Local” ein neuer Container angelegt.
Eine Hunt Group verbindet das IP Gateway mit dem Dial Plan, wird beim erstellen des UM IP Gateways ein Dial Plan angegeben wird automatisch die “Default Hunt Group” erstellt. Dieser Default Hunt Group wird kein Pilot Identifier zugewiesen, d.h. alle eingehenden Calls (SIP Invites) werden angenommen.
Wird die Hunt Group manuell erstellt kann ein Pilot Identifier angegeben werden, dadurch antwortet Exchange UM nur mehr auf Calls die eine konfigurierte Nummer anrufen. Ich verwende hier 9999 als Pilot Identifier, d.h. der Call Manager muss Anrufe an 9999 über den SIP Trunk routen.
Um eine neue Hunt Group zu erstellen wählt man unter Organization Configuration, Unified Messaging das IP Gateway aus und klickt dann auf “New UM Hunt Group”.
Die Hunt Group wird im Container des entsprechenden IP Gateways gespeichert, in diesem Fall unter: “CN=MY_CUCM_HuntGroup, CN=CUCM1, CN=UM IPGateway Container, CN=Organization, CN=Microsoft Exchange, CN=Services, CN=Configuration, DC=Domain, DC=Local”
Die Verbindung zum Dial Plan wird im Attribut msExchUMHuntGroupDialPlanLink gespeichert.
Die Exchange Unified Messaging Organisationskonfiguration ist somit abgeschlossen.
In der Server Configuration wird der Dial Plan mit einem oder mehreren Exchange UM Servern verbunden. Dazu unter Server Configuration auf Unified Messaging klicken und den entsprechenden Server auswählen. In den Eigenschaften “UM Settings” wählen und den Dial Plan hinzufügen.
Die Exchange Unified Messaging Serverkonfiguration ist damit abgeschlossen und die Exchange Umgebung ist bereit für die erste “unified” Mailbox.
Um eine Mailbox für UM zu aktivieren wählt man die Mailbox unter Recipient Configuration, Mailboxes aus und klickt auf Enable Unified Messaging.
Jedem Benutzer muss eine UM Mailbox Policy zugewiesen werden, außerdem muss er eine eindeutige “Extension” erhalten. Die Extension ist die Telefonnummer unter der die Voice Mailbox antwortet, also die Interne Telefonnummer des Benutzers.
Der Benutzer erhält ein Willkommens-E-mail von Unified Messaging in dem sein PIN und seine Extension mitgeteilt werden.
Die Extension wird dem Benutzer als “E-Mail Adresse” vom Typ EUM zugewiesen:
ProxyAddressString: EUM:1000;phone-context=CUCM1.domain.local
Soll ein Benutzer mehrere Extension erhalten kann man diese einfach als zusätzliche “E-Mail Adressen” hinzufügen.
Damit der Call Manager mit dem Exchange Server verbunden werden kann wird ein SIP Trunk benötigt. Außerdem muss eine Route erstellt werden über die der Call Manager weiß welche Nummern hinter dem SIP Trunk zu finden sind.
Der SIP Trunk wird unter Device, Trunk “Add New” erstellt.
Man muss dem Trunk einen Namen geben, den Device Pool auswählen, die IP Adresse des Exchange UM Servers als Destination angeben und ein SIP Profile sowie das SIP Trunk Security Profile auswählen. Sind mehrere Exchange UM Server vorhanden muss ein Trunk pro Server angelegt werden.
Wichtig: Für Outbound Calls muss “Redirecting Diversion Header Delivery – Outbound” aktiviert werden, durch die Informationen im Diversion Header kann der Exchange Server das Postfach aufgrund der Extension zuweisen.
Für alle anderen Einstellungen sind die Defaults des Call Managers ok. Je nach Umgebung kann es sein dass man “Media Termination Point Required” aktivieren muss.
Damit der Call Manager Anrufe an 9999 routen kann muss man eine Route Pattern erstellen, dazu unter Call Routing, Route/Hunt auf Route Pattern klicken. Mit Add New kann eine neue Pattern hinzugefügt werden. Auch hier muss ein Device Pool sowie der SIP Trunk als Gateway angegeben werden. In Umgebungen mit mehrere Exchange UM Servern empfiehlt es sich eine Route List für die SIP Trunks anzulegen und die Pattern auf die Route List zu binden.
Die minimale Konfiguration ist dadurch abgeschlossen, wenn der UM aktivierte Benutzer mit der Nummer 1000 jetzt die Nummer 9999 anruft erhält er Zugriff auf sein Postfach über OVA. Wenn derselbe Benutzer eine Umleitung auf 9999 einrichtet werden alle eingehenden Calls auf sein Voicemail Postfach umgeleitet.
Wenn jemand eine Nachricht hinterlässt wird diese in der Inbox angezeigt, zusätzlich kann am Phone ein MWI Status angezeigt werden (rotes LED). Der Benutzer sieht so sofort dass er eine neue Voicemail hat. Um dieses Feature zu aktivieren muss das “SIP Trunk Security Profile” geändert werden. Dazu unter System, Security auf SIP Trunk Security Profile klicken und das Profil auswählen das dem Trunk zugewiesen wurde. Bei diesem Profil muss die Option “Accept Unsolicited Notification” aktiviert werden.
Um den Voice Mail Button am Phone zu konfigurieren muss ein Voice Mail Pilot sowie ein Voice Mail Profile konfiguriert werden.
Dazu unter Advanced Features, Voice Mail auf Voice Mail Pilot klicken und mit Add New einen neuen Voice Mail Pilot erstellen.
Unter Advanced Features, Voice Mail, Voice Mail Profile kann ein neues Profil angelegt werden.
Achtung: Wird “Make this the default…” ausgewählt wird das Profil automatisch auf allen Phones konfiguriert die keine diesbezügliche Konfiguration haben.
Nun kann man unter Device, Phone in der entsprechenden Direct Number Configuration ein Voice Mail Profile konfigurieren.
special thanks to pk :)
tom
]]>
Grüße
dn
Nun, das funktioniert genau gleich für das Windows 8 Developer Preview! Hier nochmal eine kuze Zusammenfassung:
Der neue Bootmanager ist übrigens auch im Metrostyle ;)
Wie Windows 7 kann man auch Windows 8 vom USB Stick installieren, auch diese Anleitung funtioniert weiterhin!
enjoy!!
]]>Seit dem frühen Morgen kann man sich ein “Developer Preview” Build von Windows 8 herunterladen. Verfügbar sind 32 und 64 Bit Images mit oder ohne Entwicklungstools. Hier der Link zur Seite: http://dev.windows.com
Das neue Startmenü im Metro Style
Windows Explorer mit Ribbon, und den neuen Copy/Cut/Paste Dialogen
Außerdem kann man jetzt ISO und VHD Files direkt im Windows Explorer mounten/öffnen.
Auch der Task Manager wurde erneuert
Hyper-V Support, der Hammer! Hyper-V für den Client mit 64 Bit Guest Support. Außerdem Support für Standby Mode und WLAN
PowerShell 3
Das ist nur ein schneller Überblick, in den nächsten Tagen gibt es Details. Sehr Empfehlenswert sind folgenden Links:
enjoy!
tom
Anders als < Office 2007 öffnet Outlook 2003 die Verbindung direkt zu den Mailboxserver und nicht über den Address-Book Service. Um dieses Problem zu beheben, muss das Verbindungslimit, welches standardgemäß 20 beträgt, angehoben werden. Hierzu erstellen wir eine neue ThrottlingPolicy und weisen diese dem Benutzer zu:
New-ThrottlingPolicy –name Outlook2003Calendar
Set-ThrottlingPolicy –identity Outlook2003Calendar –RCAMaxConcurrency 100
Set-Mailbox –Identity “MAILBOX-USER” –ThrottlingPolicy Outlook2003Calendar
Grüße
dn
PS X:\> Get-ChildItem C:\Windows\Logs -Recurse | Sort-Object -Property LastWriteTime –Descending | Where-Object {$_.Mode -notlike "d*"} | Select-Object -First 10 | Format-Table -Property LastWriteTime,FullName –AutoSize
Dieses Beispiel durchsucht C:\Windows\Logs rekursiv und sortiert Absteigend nach “LastWriteTime”. Ordner werden standardmäßig auch zurückgegeben, diese werden mit “Where-Object” gefiltert. Da mich nur die 10 Dateien interessieren die zuletzt geändert wurden verwende ich “Select-Object”. Anschließend wird die Ausgabe noch Formatiert. Das Ganze sieht dann so aus:
Möchte man das Ergebnis in eine Datei schreiben, bietet sich das cmdlet “Export-CSV” an, dafür ändert man die “Select-Object” Abfrage z.B. folgendermaßen:
PS X:\> Get-ChildItem C:\Windows\Logs -Recurse | Sort-Object -Property LastWriteTime -Descending | Where-Object {$_.Mode -notlike "d*"} | Select-Object –Property FullName,CreationTime,LastWriteTime,LastAccessTime,Length,Attributes | Export-Csv Report.csv
Das Ergebnis sieht dann so aus:
Durch Änderungen der Where, Select, Format cmdlets bzw. Parameter lässt sich eine Vielzahl von Ausgaben erzeugen, für weitere Informationen und Hilfe zu den einzelnen cmdlets:
Get-Help cmdlet –Online
Achtung: Der Parameter “Recurse” geht durch alle untergeordneten Verzeichnisse, das kann je nach Struktur ziemlich lange dauern. Außerdem gelten Berechtigungen natürlich auch für die PowerShell, man kann also nicht Ordner durchsuchen auf die man keine Rechte hat, das sieht dann so aus:
have fun!
tom
Unter den Zertifikaten befinden sich folgende Wildcard Zertifikate:
Eine vollständige Liste der Zertifikate gibt es hier.
Der Angriff wurde entdeckt weil in Googles Chrome Browser die gültigen Zertifikate fix hinterlegt sind, der Browser also beim Anzeigen vermeintlich authentischer Google Inhalte gemeckert hat. Wenn die “Täter” den “User Agent String” von Chrome gefiltert hätten, wer weiß wann (und ob) dieser Hack öffentlich geworden wäre…
Vermutungen wie viele derartige Angriffe bisher unerkannt geblieben sind und wer dahinter steckt überlasse ich anderen. Ich hoffe allerdings dass die Debatte um Sicherheit und das “Web of Trust” weitergeführt wird und durch solche krassen Vorfälle mehr Aufmerksamkeit bekommt.
Folgende Zertifizierungsstellen müssen aus allen Browsern, Applikationen und Betriebssystemen verschwinden, sie gelten als NICHT mehr Vertrauenswürdig:
Certificate | Issued by | Thumbprint |
DigiNotar Root CA | DigiNotar Root CA | c0 60 ed 44 cb d8 81 bd 0e f8 6c 0b a2 87 dd cf 81 67 47 8c |
Root CA G2 | DigiNotar Root CA G2 | 43 d9 bc b5 68 e0 39 d0 73 a7 4a 71 d8 51 1f 74 76 08 9c c3 |
PKIoverheid CA Overheid | Staat der Nederlanden Overheid CA | b5 33 34 5d 06 f6 45 16 40 3c 00 da 03 18 7d 3b fe f5 91 56 |
PKIoverheid CA Organisatie - G2 | Staat der Nederlanden Organisatie CA - G2 | 5d e8 3e e8 2a c5 09 0a ea 9d 6a c4 e7 a6 e2 13 f9 46 e1 79 |
PKIoverheid CA Overheid en Bedrijven | Staat der Nederlanden Overheid CA | 40 aa 38 73 1b d1 89 f9 cd b5 b9 dc 35 e2 13 6f 38 77 7a f4 |
Microsoft hat inzwischen reagiert und ein Windows Update zur Verfügung gestellt, genauere Informationen findet man im Microsoft Security Advisory (2607712).
Wie an vielen Stellen zu lesen ist soll es mit diesen Zertifikaten möglich sein gefälschte Windows Updates zu verteilen, das ist laut Microsoft NICHT der Fall. Der Windows Update Client installiert ausschließlich Pakete die mit dem “Microsoft Root Certificate” signiert sind.
Für Mozilla Firefox wir ein Update in kürze erwartet, hier empfiehlt es sich die genannten CAs manuell zu entfernen!
Unter Einstellungen, Erweitert, Verschlüsselung klickt man auf “Zertifikate anzeigen”. Jetzt bekommt man eine Liste der Zertifizierungsstellen und kann das Vertrauen entziehen.
Weitere Infos im Mozilla Security Blog.
Apple hat wohl zur Zeit andere Prioritäten, MAC Benutzer sollten auf jeden Fall manuell die oben genannten Zertifikate entfernen. Chester Wisniewski von Sophos beschreibt das Ganze so:
What about Apple users? Well, apparently they are too busy playing Angry Birds and making pictures in Photoshop to worry about pesky certificate issues.
My advice if you run a Mac? Use BootCamp and Windows 7 until Apple decides to provide a patch. Or I guess you could use Firefox (not Chome, it also uses Apple's KeyChain)...
Ein erster Bericht der Security Consultants Fox-IT zum Thema ist verfügbar:
stay secure
tom
Die Scratch Partition ist optional und wird standardmäßig während der Installation von ESXi auf lokalem Storage angelegt. Wenn lokaler Storage verfügbar ist wird die Scratch Partition mit 4GB angelegt, sie wird verwendet um den Output von “vm-support” zu speichern, gibt es keine Scratch Partition wird dieser wird dieser Output in den RAM geschrieben.
Wird die Scratch Partition automatisch erstellt ist es nicht empfohlen die bestehende Konfiguration zu ändern, wird die Scratch Partition nicht automatisch angelegt (z.B. bei Installation auf USB) ist es empfohlen manuell einen Speicherort für “Scratch” zu konfigurieren.
Um die Scratch Location manuell zu konfigurieren muss man zuerst einen Ordner auf einem Datastore anlegen, der ESXi Host muss natürlich Zugriff auf diesen Datastore haben. Dazu wechselt man im vSphere Client auf “Configuration” und wählt unter “Storage” einen Datastore aus, mit rechtsklick “Browse Datastore” öffnet man den Datastore Browser und legt einen Ordner an.
Achtung: Es muss einen eindeutigen Ordner pro ESXi Host geben, man kann nicht einen Scratch Ordner für mehrere Hosts verwenden!
Die Scratch Location wird in den “Advanced Settings” unter “Configuration”, “Software” konfiguriert. Dort gibt es einen Abschnitt “ScratchConfig” welcher ein Textfeld für die Einstellung “ScratchConfig.ConfiguredScratchLocation” anzeigt. In dieses Textfeld muss der vollständige Pfad zum Order eingegeben werden, also z.B: /vmfs/volumes/<myDatastore>/.scratch-esx1
Achtung: diese Einstellung wird erst nach einem Neustart des ESXi Hosts wirksam.
Wird eine Active Directory Domain zur Authentifizierung angegeben und es ist keine Scratch Partition Konfiguriert kann man sich am vSphere Client nicht anmelden und bekommt eine (sehr vielsagende) Fehlermeldung, entweder: “A general system error occured” oder “gss_acquire_cred failed”
Der Grund für den Fehler ist offensichtlich dass ESXi versucht Informationen über die Anmeldung in ein Logfile unter /scratch/var/tmp zu schreiben.
Genauere Infos zum Thema gibts hier:
http://blogs.vmware.com/esxi/2011/04/scratch-partition-best-practices-for-usbsd-booted-esxi.html
http://blogs.vmware.com/esxi/2011/03/ops-changes-part-5-scratch-partition.html
so long,
tom
Windows could not start Citrix Independent Management Architecture on Local Computer. For more information, review the System Event Log. If this is a non-Microsoft service, contact the service vendor, and refer to service-specific error code –2147483647
Opening the Event Viewer of the affected server shows this event on the System Log:
“Failed to load plugin C:\Prgoram Files (x86)\Citrix\System32\Citrix\IMA\Subsystems\RADESessionsSs.dll with error IMA_RESULT_FAILURE”
In den meisten Fällen ist die lokale Streaming Offline Datenbank korrupt. Dies lässt sich meist durch den Befehl dsmaint recreaterade beheben.
Lässt sich der IMA Dienst immer noch nicht starten, sind wahrscheinlich die Verbindungseinstellungen im File C:\Program Files (x86)\Citrix\Independent Management Architecture\RadeOffline.dsn korrupt:
Fehlerhafte Konfiguration:
Diese muss durch eine gültige Konfiguration ersetzt werden:
Nun ist es noch notwendig die Streaming Offline Datenbank neu zu erstellen:
dsmaint recreaterade
Der Citrix IMA Dienst sollte sich jetzt normal starten lassen.
Grüße
dn
Sobald man den Webservice startet und einen Verbindungsversuch unternimmt, beendet sich der ApplicationPool und Verbindungen werden terminiert.
Im EventLog wird folgender Fehler protokolliert:
Log Name: Application
Source: Microsoft-Windows-IIS-W3SVC-WP
Date: 17/06/2011 09:37:36
Event ID: 2307
Task Category: None
Level: Error
Keywords: Classic
User: N/A
Computer: ts1.ntsystems.it
Description:
The worker process for application pool 'CitrixWebInterface5.3.0AppPool' encountered an error 'Failed to decrypt attribute 'password'
' trying to read configuration data from file '\\?\C:\inetpub\temp\apppools\CitrixWebInterface5.3.0AppPool.config', line number '150'. The data field contains the error code.
Lösung
Um den Fehler zu beheben und das Webinterface richtig starten zu können, müssen in der Datei C:\Windows\System32\inetsrv\config\applicationHost.config die Zeilen zwischen
<configProtectedData> gelöscht werden. Wichtig ist dabei, dass IIS vorher beendet wurde. Danach muss der Service wieder gestartet, der ApplicationPool lässt sich nun auch normal starten. Eingehende Verbindungen zum Webinterface werden nun auch richtig verarbeitet.
Grüße
dn
Um den Import durchzuführen muss jetzt das entsprechende Benutzerkonto der neuen Gruppe “Mailbox Import Export Group” hinzugefügt werden:
New-RoleGroup "Mailbox Import Export Group" -Roles "Mailbox Import Export"
Add-RoleGroupMember "Mailbox Import Export Group" -Member "Administrator"
Nun kann das PST File über den Befehl New-MailboxImportRequest in das Archiv importiert werden.
Anbei ein Script, wo man im File Users.csv PST Files den jeweiligen Benutzern zuweisen und den Import Request generieren kann:
import-csv "Users.csv"|ForEach{
New-MailboxImportRequest -Mailbox $_.user -FilePath $_.Path -BadItemLimit 50 -IsArchive
}
Bsp für Users.csv:
User,Path
daniel.nitz,\\share\daniel-PST.PST
Grüße
dn
Auch Outlook Web App kann als Lync Client konfiguriert werden, folgende Features werden direkt von OWA unterstützt, es wird dafür kein Client auf dem PC benötigt:
Folgende Pakete herunterladen:
Als erstes wird jetzt CWAOWASSPMain.msi installiert, dieses Paket erstellt einen Ordner (Standard: C:\Web Service Provider Installer Package\) und kopiert die benötigten Installationsdateien für den OC Web Service Provider in diesen Ordner. Jetzt in diesen Ordner wechseln und die Pakete in folgender Reihenfolge installieren
Jetzt fehlen noch die Hotfixes aus den Downloads 2 und 3, auch diese Pakete installieren
Die benötigte Software ist somit installiert, jetzt muss Instant Messaging noch aktiviert werden. Die Konfiguration dafür wird am OWA Virtual Directory gemacht. Der InstantMessagingType wird auf OCS geändert, als InstantMessagingServerName wird der Lync Server angegeben. Außerdem muss der Thumbprint des Zertifikates das für TLS verwendet werden soll angegeben werden und InstantMessaging aktiviert werden. Folgende PowerShell Befehl erledigt dieses Schritte:
$iiscert = (Get-ExchangeCertificate | Where {$_.Services -like "*IIS*"}).Thumbprint
Get-OWAVirtualDirectory -Server ex14.ntsystems.local | Set-OWAVirtualDirectory -InstantMessagingType OCS -InstantMessagingEnabled:$true -InstantMessagingCertificateThumbprint $iiscert -InstantMessagingServerName lync.ntsystems.local
Achtung: Wenn bei Get-OWAVirtualDirectory der Parameter Server weggelassen wird werden alle Virtual Directories der Exchange Umgebung konfiguriert. Bei InstantMessagingServerName muss der FQDN des Lync Servers angegeben werden.
In einem CAS Array müssen diese Schritte auf allen Servern wiederholt werden.
Mit dem Lync Server Topology Builder wird jetzt unter “Trusted Application Servers” ein neuer Application Pool angelegt. Dieser Pool wird als Single Computer Pool angelegt, der FQDN muss dabei entweder dem Namen des Client Access Server oder dem Namen des CAS Arrays entsprechen.
Jetzt wird der Lync Server Frontend Pool ausgewählt, welcher für diese Applikation verwendet werden soll.
Der Server ist jetzt erstellt, Standardmäßig ist “Enable replication of configuration data to this pool” aktiviert, das wird nicht benötigt und kann in den Eigenschaften des soeben erstellten Objektes deaktiviert werden.
Jetzt kann die Änderung der Topologie veröffentlicht werden, dazu klickt auf Action, Topology und Publish.
Es fehlt noch die CSTrustedApplication, diese wird über die Lync Server Management Shell angelegt. Auch dabei muss wieder der FQDN des Client Access Servers oder des CAS Arrays angegeben werden, außerdem wird ein Port für die Applikation angegeben, natürlich muss ein Port verwendet werden der frei ist. (netstat –an zeigt verwendete Ports an). Mit folgendem PowerShell Befehl wird die Applikation erstellt:
New-CsTrustedApplication -ApplicationID OWA -TrustedApplicationPoolFqdn ex14.ntsystems.local -Port 4999
Diese Konfiguration muss noch aktiviert werden, das wird mit folgendem PowerShell cmdlet gemacht:
Enable-CsTopology
Die Konfiguration ist jetzt abgeschlossen, ab jetzt sind die neuen Features in Outlook Web App aktiv…
viel Spaß
tom
Bei Cisco muss dazu das “neue” AAA Model aktiviert werden. Das geht einfach mit folgendem Befehl:
aaa new-model
Achtung: nach absetzen dieses Befehls ist das neue Model aktiv, d.h. man kann sich nur mehr mit Benutzername und Passwort anmelden. Man sollte jetzt einen lokalen Benutzer angelegen, dieser kann auch im Fallback Fall, also wenn der RADIUS Server nicht erreichbar ist, verwendet werden. Mit folgendem Befehl legt man einen lokalen User cisco mit Passwort cisco an:
username cisco secret cisco
Bevor man RADIUS als Authentifizierung verwenden kann muss ein RADIUS Server konfiguriert werden. Mit folgenden Befehlen konfiguriert man den RADIUS Server 10.1.1.100 und den entsprechendem Pre-Shared Key. RADIUS verwendet standardmäßig die UDP Ports 1812 und 1813 für Authentifizierung und Accounting, Cisco Geräte verwenden die Ports 1645 und 1646, das kann man evtl. mit “auth-port 1812 acct-port 1813” ändern. Der NPS RADIUS Server antwortet auf beide Varianten, man muss das also nicht definieren.
radius-server host 10.1.1.100 key PRE_SHARED_KEY
Mit “radius-server retransmit x” kann man angeben wie oft eine Anfrage gesendet wird wenn innerhalb des Timeouts keine Antwort kommt. Das Zeitfenster für das Timeout kann mit “radius-server timeout x” auf x Sekunden erhöht werden. Das Interface über welches der Cisco Switch die RADIUS Anfrage schickt kann mit “ip radius source-interface x” angegeben werden.
Das AAA Authentication Model arbeitet mit Listen, man definiert eine Liste und weißt diese Liste einem Interface zu. Die Liste “default” gilt für alle Interfaces auf denen keine andere Liste gebunden ist. Folgender Befehl setzt die Standardauthentifizierung auf RADIUS, Fallback (RADIUS nicht erreichbar) ist local:
aaa authentication login default group radius local
Ab diesem Zeitpunkt muss man sich an allen Interfaces mit Benutzername und Passwort vom RADIUS Server anmelden.
Wenn die Netzwerkgeräte in sicheren Serverräumen untergebracht sind kann man sich überlegen die Authentifizierung für den Console Port zu deaktivieren, damit man im Desaster Fall noch eine letzte Hoffnung auf Zugriff hat. Dazu legt man eine Liste an und setzt die Authentifizierung auf “none”, danach bindet man die Liste auf “line con 0”:
aaa authentication login liste1 none
line con 0
login authentication liste1
Am RADIUS Server habe ich in den Settings das Attribut Service-Type auf “Administrative” gesetzt. Dadurch müsste ich eigentlich im “enable” Mode landen. Das funktionier jedoch erst nachdem auch die Authorization auf RADIUS gesetzt wurde. Folder Befehl legt fest dass RADIUS für alle Interfaces verwendet wird, die Console ist dabei ausgeschlossen:
aaa authorization exec default group radius local
Um Authorization auf der Console über RADIUS zu aktivieren wird folgender Befehl verwendet:
aaa authorization console
Wenn ich mich erneut anmelden lande ich direkt im “Enable” Mode des Switches.
Am NPS wird im Event Log Security ein Event 6272 aufgezeichnet, außerdem wird im Logfile (D:\NPS\LogFiles) ein Eintrag hinzugefügt.
Mit Wireshark o.ä. sieht man ein RADIUS Access-Request Paket vom Switch zum NPS Server und ein RADIUS Access-Accept Paket vom NPS Server zum Switch.
Das Access-Request Paket enthält unter anderem folgende Informationen:
User-Name: Der Benutzer der sich am RADIUS Client anmeldet
Calling-Station-Id: IP Adresse des Clients (der z.B. die Telnet Session öffnet)
NAS-IP-Address: IP Adresse des RADIUS Clients
Das Access-Accept Paket enthält die AV-Pair Informationen:
AVP: Attribute Value Pair das am NPS konfiguriert wurde (Service-Type: Administrative)
tom
]]>Die NPS Serverrolle muss auf einem Server hinzugefügt werden, ob das ein dedizierter Server ist oder ob man die Rolle auf einem andern mitlaufen lässt hängt von der Größe der Umgebung ab. Die Rolle kann wie jede andere über den Servermanager oder das PowerShell cmdlet Add-WindosFeature hinzugefügt werden. Damit das cmdlet verfügbar ist muss das Modul ServerManager geladen werden.
Für RADIUS reicht der NPAS-Policy-Server. Wen die Rolle hinzugefügt wurde kann NPS konfiguriert werden, der erste Schritt ist es den NPS Server im Active Directory zu registrieren. Rechtsklick auf NPS (local) und “Register Server in Active Directory” wählen"
Der zweite Schritt ist die Konfiguration des Accounting, bzw. Logging, dafür gibt es in der NPS Konsole unter dem Punkt “Accounting” drei Einstellungsmöglichkeiten.
Der “Configure Accounting Wizard” erleichtert einem Konfiguration:
Ich entscheide mich für das Logging in ein Textdokument, je nach Umgebung kann man auch einen zentralen SQL Server angeben.
Den Ordner für die Log Files lege ich auf eine zweite Partition.
Der NPS Server ist nun konfiguriert, es fehlen noch die RADIUS Clients sowie das Regelwerk das definiert wer sich anmelden darf.
Jedes Netzwerkgerät das über NPS authentifizieren will muss dort als RADIUS Client angelegt werden, in diesem Schritt werden der Name, die IP Adresse und der Pre-Shared Key für jeden Client festgelegt. Der Pre-Shared Key wird verwendet um den RADIUS Client zu authentifizieren, der Benutzer meldet sich mit seinem Benutzernamen und Passwort an.
Um einen RADIUS Client anzulegen erweitert man den Ordner “RADIUS Clients and Servers” in der NPS Konsole, Rechtslick auf “RADIUS Clients” und “New” öffnet den Dialog “New RADIUS Client”.
Unter dem Reiter “Settings” wird der Friendly name konfiguriert, dieser ist später wichtig für die Konfiguration der Regeln. Außerdem gibt man hier die IP Adresse des Clients an, der Pre-Shared Key kann manuell eingegeben werden, ich empfehle jedoch ihn automatisch zu generieren. (Achtung: einige alte Geräte unterstützen nur Keys bis zu einer bestimmten Länge)
Unter Advanced könnte man noch ein bestimmtes RADIUS Feature Set auswählen, normalerweise reicht aber der Standard aus.
Über die Connection Request Policy wird definiert welcher RADIUS Client wie authentifiziert wird. NPS kann auch als RADIUS Proxy arbeiten und könnte daher anfragen eines Clients selbst authentifizieren und die eines andern an einen Remote RADIUS Server weiterleiten, dieser Server muss zuerst unter “RADIUS Clients and Servers” angelegt werden.
Die Standardregel ist so konfiguriert dass alle anfragen Lokal, also gegenüber Active Directory, authentifiziert werden.
Die Network Policy definiert wer sich unter welchen Umständen authentifizieren darf. Da beide Standardregeln keinen Zugriff zulassen müssen wir eine neue Network Policy anlegen, Rechtsklick auf “Network Policy” und “New” öffnet den Dialog “New Network Policy”.
Auf der ersten Seite wird eine Name für die neue Richtlinie konfiguriert, der Rest bleibt Standard.
Auf dieser Seite werden die Konditionen definiert unter welchen die Authentifizierung erfolgreich ist. Man kann z.B. den RADIUS Client und eine bestimmt AD Gruppe hinzufügen, die beiden Kriterien sind “AND” verknüpft, müssen also beide zutreffen. Der Benutzer der sich am Client “cisco_1” anmeldet muss also Mitglied der Gruppe NetworkAdmins sein damit er sich authentifizieren darf.
Im nächsten Schritt wird festgelegt ob diese Regel den Zugriff erlaubt oder verweigert.
PAP muss als Authentifizierungsmethode hinzugefügt werden, man wird darauf hingewiesen dass diese Methode nicht sicher ist da das Passwort in Clear-Text über die Leitung geht, das muss man wohl oder übel in kauf nehmen.
Hier könnte man weitere verbindungsspezifische Einstellungen machen, für die Authentifizierung an Netzwerkgeräte wird das allerdings nicht benötigt.
Im letzten Schritt werden die Einstellungen konfiguriert die der RADIUS Server in der Antwort mitschickt, hier kann man sogenannte Attribute-Value (AV)-Pairs konfigurieren. Diese AV-Pairs sind Herstellerabhängig, bei Cisco z.B. kann man mit Attribut 6 den Service-Type definieren, gibt man “Administrative” an landet ein authentifiziert User direkt im “enable” Mode. Framed-Protcol PPP kann gelöscht werden, Service-Type ändere ich auf “Administrative”
Somit ist der NPS Server fertig konfiguriert und bereit Anfragen von einem RADIUS Client mit der IP 10.1.1.254 und dem richtigen Pre-Shared Key zu beantworten. Nur Benutzer die Mitglied der Gruppe NetworkAdmins sind dürfen sich am RADIUS Client anmelden, ist die Authentifizierung erfolgreich sollte der Benutzer gleich im “enable” Mode sein.
Im nächsten Artikel konfiguriere ich einen Cisco Switch für RADIUS Authentifizierung.
tom
]]>Anbei ein paar Daten aus 2 Jahren ntSystems:
Allgemeine Informationen
- 20.000 Besucher
- 40.000 Seitenaufrufe (derzeit sind es ca. 100 Besucher täglich)
Top 5 Länder
- Deutschland
- Schweiz
- Österreich
- Italien
- USA
Quellen
- 66% Suchmaschinen
- 15% Twitter und sonstige
- 19% Direkt
Top 3 Posts
- Exchange 2010 - Dynamic Signature
- Buchen einer Ressource in Outlook 2010 mit Exchange 2003
- NLB – Unicast vs. Multicast, Konfiguration, Port Rules
Grüße
dn
Vor ein paar Tagen ist mir aufgefallen, dass die Suche in OneNote ein tolles Feature beinhaltet: Es kann Screenshots nach Text durchsuchen!!
Testet es einfach aus, erstellt einen Screenshot und sucht im Suchfeld nach Text, welcher sich im Screenshot befindet. Ihr werdet überrascht sein
Grüße
dn
Danach ist es notwendig den Server neu zu starten, welcher das Zertifikat erhalten soll.
Nun kann das Zertifikat ausgestellt werden.
Grüße
dn
Die aktuelle Version kann unter http://vmware.com/go/powercli heruntergeladen werden.
Die Installationsroutine installiert außer den PowerShell Snapins die VMware VIX API, die das Management von virtuellen Maschinen ermöglicht. Diese API erlaubt es Programme direkt im Gastsystem der VM ausführen bzw. Dateien zu manipulieren.
Nachdem das License Agreement akzeptiert wurde, kann man den Pfad für die Installation festlegen, jetzt noch auf installieren klicken und das wars.
Auf dem Desktop wurde eine Verknüpfung zu PowerCLI angelegt, sonst findet man sie unter Start, Programme, VMware, VMware vSphere PowerCLI.
Wenn man die PowerCLI startet wird das PSSnapin “VMware.VimAutomation.Core” geladen, dieses kann natürlich auch in einer “normalen” PowerShell Session mit Add-PSSnapin hinzugefügt werden.
Wie in der Titelleist zu erkennen ist, ist die PowerCLI standardmäßig “not connected”, um auf die Virtuelle Umgebung zugreifen zu können muss man eine Verbindung mit dem vCenter Server herstellen. Dazu verwendet man das Connect-VIServer cmdlet, z.B.:
Connect-VIServer vcenter.ntsystems.local –credential (Get-Credential)
Mit diesem Befehl verbindet man die PowerCLI mit dem vCenter Server und kann alternative Anmeldeinformationen mitgeben, wenn der Benutzer mit dem die PowerCLI gestartet wurde ausreichende Rechte im vCenter hat kann man –credential natürlich weglassen.
Wenn die Verbindung hergestellt wurde kann man mit PowerCLI arbeiten und sich z.B. eine Liste der VMs ausgeben lassen die nicht eingeschaltet sind:
Get-VM | ?{$_.PowerState -notlike "*On*"}
Alternativ kann man PowerCLI auch direkt mit einem ESX/ESXi Host verbinden, das ist z.B nötig um mit Get-ESXTop Performance Informationen über einen Host zu sammeln.
Die Hilfe zur PowerCLI kann einfach mit dem cmdlet Get-PowerCLIHelp aufgerufen werden, empfehlenswert ist auch Get-PowerCLICommunity.
Hier noch ein kleiner Tipp: Wer die PowerShell ISE verwendet kann eigene Add-Ons hinzufügen. Ich habe ein einfaches Add-On gebastelt um das PowerCLI Snapin in die ISE Session zu laden. Dazu einfach folgendes Script in das ISE Profil kopieren. Um die ISE Profil Datei zu öffnen “notepad $profile.CurrentUserCurrentHost” in der ISE ausführen.
$psISE.CurrentPowerShellTab.AddOnsMenu.SubMenus.Add(
"Connect to vCenter",
{
Add-PSSnapin VMware.VimAutomation.Core
$VIServer = Read-Host -Prompt "ESX/ESXi Host or vCenter Server FQDN"
if(Test-Connection $VIServer -Quiet) {Connect-VIServer $VIServer}
else {Write-Output "Server not reachable"}
},
"Control+Alt+V"
)
Die Profildatei sollte signiert sein, wie man das macht habe ich hier beschrieben.
so long
tom
BBMonitoringService_APP - BlackBerry Monitoring Service - Application Core
BBMonitoringService_DCS - BlackBerry Monitoring Service - Data Collection Subsystem
BBMonitoringService_ENG - BlackBerry Monitoring Service - Polling Engine
Im Eventlog (Application) werden folgende Fehler protokolliert:
Source: BBMonitoringService_ENG Event ID: 3
Source: BBMonitoringService_DCS Event ID: 3
Source: BBMonitoringService_APP Event ID: 3
Die Lösung: Im %temp% Verzeichnis gibt es einen Ordner “gen_py”, die Inhalte dieses Ordners müssen gelöscht werden, dann starten die Dienste wieder.
Achtung: Der Ordner “gen_py” muss in allen Temp Verzeichnissen gelöscht werden, also C:\Windows\Temp und im User Verzeichnis des BesAdmin Accounts.
Hier ein Link zum Artikel in der RIM KB.
tom
]]>Script Error: An Error has occurred in the script on this page.
Forefront TMG Error: Refresh failed
Error 0x80020003: Member not found
Dieses Problem kann man einfach lösen, man schnappt sich ein Notepad (Achtung: mit administrativen Rechten) und öffnet die Datei “TabsHandler.htc”. Diese befindet sich standardmäßig unter folgendem Pfad: “C:\Program Files\Microsoft Forefront Threat Management Gateway\UI_HTMLs\TabsHandler”
In dieser Datei gibt es drei Zeilen die mit “m_aPages [niPage].m_tdMain.style.paddingTop” beginnen. Diese drei Zeilen müssen mit “//” auskommentiert werden und schon läuft die Konsole wieder normal. Hier noch ein Beispiel:
// m_aPages [niPage].m_tdMain.style.paddingTop = ((m_nBoostUp < 0) ? -m_nBoostUp : 0) ;
so long,
tom
Für RemoteFX gibt es 2 Verwendungsbereiche:
1) RemoteDesktop Virtualization Host
Auf dem Host ist dafür folgendes notwendig:
INFO: Wenn Live-Migration verwendet wird, müssen alle Server dieselbe Grafikkarte haben.
RemoteFX benötigt für die Grafikkarte einen WDDM Treiber, ist dieser nicht verfügbar (z.B. ILO), muss entweder die Grafikkarte im BIOS deaktiviert, oder der RemoteFX CAP-Treiber installiert werden. Bevor aber der RemoteFX CAP Treiber installiert wird, sollte der WDDM Treiber installiert und RemoteFX aktiviert sein. Danach kann der CAP Treiber über folgenden Befehl installiert werden:
dism /online /enable-feature /featurename:Microsoft-Windows-RemoteFX-EmbeddedVideoCap-Setup-Package
Um den CAP Treiber zu deinstallieren reicht folgender Befehl: dism /online /disable-feature /featurename:Microsoft-Windows-RemoteFX-EmbeddedVideoCap-Setup-Package
Verwendet der Client mehrere Monitore, so muss folgende Tabelle bezüglich der RAM Benutzung auf der Grafikkarte beachtet werden:
Maximun resolution | 1 monitor | 2 monitor | 3 monitor | 4 monitor |
1024 x 768 | 75 MB | 105 MB | 135 MB | 165 MB |
1280 x 1024 | 125 MB | 175 MB | 225 MB | 275 MB |
1600 x 1200 | 184 MB | 257 MB | 330 MB | N/A |
1920 x 1200 | 220 MB | 308 MB | N/A | N/A |
2) Remote Desktop Session Host
Damit RemoteFX für Remote Desktop Session läuft, muss der Prozessor zwingend das Feature SSE2 unterstützen. Zusätzlich kann noch ein sog. „Remote FX Hardware Decoder“ eingebaut werden um die Leistung zu erhöhen.
Grüße
dn
Man erstellt den Virtual WIFI Adapter mit Hilfe des Command-Line Tools "netsh", dazu benötigt man eine Administrative Eingabeaufforderung in die man dann folgenden Befehl eintippt:
netsh wlan set hostednetwork mode=allow ssid=* key=* keyUsage=persistent
An der Stelle der "*" kommt die SSID (ohne Leerzeichen) und der WPA2 Key, wurde dieser Befehl abgesetzt wird der virtuelle Adapter erstellt.
Jetzt muss das Hostednetwork gestartet werden, damit sich Clients verbinden können:
netsh wlan start hostednetwork
Internet Connection Sharing
Wenn man auf dem Windows 7 Rechner eine Internetverbindung hat kann man diese dem Hostednetwork zur Verfügung stellen. Dazu öffnet man die Eigenschaften des Adapters der die Internetverbindung herstellt und wählt "Freigabe". Hier muss man die Checkbox bei "Anderen Benutzern im Netzwerk gestatten...." setzen und darunter den Virtual WIFI Adapter auswählen.
Bei einem Neustart des Rechners startet das Wlan nicht automatisch mit. Ohne neustart kann das Hostednetwork mit folgendem Befehl gestoppt werden:
netsh wlan stop hostednetwork
Um den Status des Hostednetwork zu sehen verwendet man folgenden Befehl:
netsh wlan show hostednetwork
Daniel Melanchthon beschreibt in diesem Artikel weitere Details zu Virtual WIFI.
Update
Das Ganze funktioniert natürlich auch unter Windows 8 :)
Gut zu wissen: Das "hostednetwork" unterstützt leider nur das völlig überfüllte 2,4 GHz Band: "Radio types supported (Direct Sequence Spread Spectrum [DSSS], 802.11g, 802.11b)"
Hier der Link zur entsprechenden TechNet Seite: http://technet.microsoft.com/en-us/library/cc755301(v=WS.10).aspx
Tom
]]>Der AppV Streaming Server könnte die Lösung für dieses Problem sein. Mit dem Desktop Optimization Pack kommen neben den Installationsdateien für den AppV Management (Full) Server auch die Dateien für den Streaming Server. Die Installation gestaltet sich einfach, man wählt das Streaming Protokoll, sollte natürlich jenes sein das der Management Server verwendet. Außerdem muss man den Pfad für den “Content” Ordner angeben, diesen muss man manuell anlegen und freigeben (\\servername\Content, Leseberechtigungen für Benutzer reichen aus).
Die Installation ist abgeschlossen und der Dienst “Application Virtualization Streaming Server” (AppVirtServer) sollte gestartet sein.
Im Application Event Log wird bei jedem Start des AppVirtServer Dienstes folgender Fehler Protokolliert:
Error:
Source: Application Virtualization Server
Event ID: 44937
Empty package map for package content root: [D:\Content\].
Dieser Fehler wird für jedes Packet das auf dem AppV Management Server verfügbar ist einmal Protokolliert, und zwar so lange bis man die Daten aus dem Content Share des AppV Management Servers auf den Streaming Server kopiert. Es reicht aus die .sft Files zu kopieren, wichtig ist dabei dass eventuelle Unterordner auch angelegt werden.
Sind die Daten kopiert (d.h. beide Content Shares gleich) kann ist der Streaming Server bereit.
Die Clients im Remote Netzwerk wissen allerdings nichts von diesem Server, d.h. Updates werden immer noch vom Management Server heruntergeladen. Über folgenden Registry Key gibt man den Clients die Information, in diesem Fall verwendet der Streaming Server RTSP:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\SoftGrid\4.5\Client\Configuration
REG_SZ ApplicationSourceRoot
rtsp://servername:554/
Ab jetzt ist es nur mehr Wichtig bei Paket Updates daran zu denken alle Content Shares zu aktualisieren.
tomt
]]>Dazu braucht man:
Dann kanns losgehen, mit VMWare Workstation (oder Player) wird eine neue Virtuelle Maschine erstellt.
Als Pfad für das Installationsimage wird das Image von ESXi 4.1 angegeben.
Als Gastbetriebssystem wird VMware ESX ausgewählt.
Ein Ordner für die Konfigurationsdateien und die virtuelle Festplatte muss angegeben werden, hier kann einfach ein Ordner auf der Lokalen Festplatte verwende werden.
Die Größe der virtuellen Festplatte kann man so akzeptieren, diese wird nicht verwendet.
Die virtuelle Maschine ist eigentlich erstellt, allerdings muss noch ein USB Controller hinzugefügt werden, dazu auf “Customize Hardware” klicken
und den USB Controller hinzufügen.
Jetzt kann man die virtuelle Maschine starten, und auch gleich über “VM” und “Removable Devices” den USB Stick verbinden (muss natürlich am PC angeschlossen sein…)
Bei der Installation des ESXi Servers wird der USB Stick als Ziel angegeben, ACHTUNG: Alle Daten auf dem USB Stick werden gelöscht, der Stick wird neu formatiert.
Sobald die Installation abgeschlossen ist, kann man die VM herunterfahren, auf dem USB Stick ist jetzt VMWare ESXi installiert. Von diesem Stick kann man jeden (unterstützten) Server booten und als ESXi Host verwenden.
Achtung: bei der Installation auf USB wird keine Scratch Partition erstellt, Infos dazu hier: http://www.ntsystems.it/post/ESXi–Persistent-Scratch-Location.aspx
so long,
tom
Der Dialog zum Eingeben der Credentials wird immer wieder angezeigt, die Authentifizierung kann jedoch nicht richtig verarbeitet werden.
Um das Problem zu beheben, muss im IIS die Kernelmodus-Authentifizierung aktiviert werden, die standardmäßig nach der Installation von SharePoint deaktiviert ist:
Nun können sich die Clients wieder ganz normal an der SharePoint-Webseite authentifizieren.
Grüße
dn
Unter dem Schlüssel: “HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Outlook\Preferences” wird ein REG_DWORD mit dem Namen “DelegateSentItemsStyle” und dem Wert “1” erstellt.
In einer Active Directory Umgebung bieten sich natürlich die Group Policy Preferences dafür an.
]]>
Daraufhin habe ich den SQL Server überprüft, konnte aber keine Probleme feststellen. Im Management Studio ließen sich die Logs durch SELECT Anweisung abfragen.
Das Problem liegt an der Formatierung des Datums und taucht durch das Service Pack 1 (KB2288910) auf TMG’s in deutscher Sprache auf.
Das Problem lässt sich aber relativ einfach beheben: Man verbindet sich mit dem Management Studio auf die SQL Instanz und ändert die Standard-Sprache des Benutzerkontos “NT Authority\NetworkService” auf Schwedisch um. Nachdem man nun die SQL Dienste neu startet kann man problemlos wieder das Abfragen im LOG starten.
Grüße
dn
Will man allerdings die CA umziehen und den aktuellen Server nicht abbauen sind ein paar zusätzliche Schritte nötig. Wichtig ist hier zu sagen dass man zwar den Servernamen ändern kann, allerdings nicht den Namen der Zertifizierungsstelle!
Tipp: Auch wenn die Microsoft Dokumentation das nicht wirklich bestätigt funktioniert eine Migration von 32Bit auf 64Bit. Also Backup auf x86 Restore auf x64 ist Möglich.
Um zu überprüfen ob alles läuft kann man ein Zertifikat anfordern. Funktioniert das ausstellen der Zertifikate sollte man noch überprüfen ob der Zugriff auf die Sperrlisten funktioniert. Dazu Exportiert man das Zertifikat (in eine .cer Datei) und führt “certutil –url datei.cer” aus.
tom
]]>Wie man ein SelfSigned Zertifikat erstellt ist ausführlich in der Hilfe beschrieben, einfach “Get-Help about_signing” ausführen.
Um ein Code Signing Zertifikat von Enterprise Zertifizierungsstelle anzufordern muss man “Enroll” Berechtigungen auf die Zertifikatsvorlage haben, oder man kopiert die Vorlage und erstellt eine eigene, z.B. mit längerer Gültigkeit.
Hat man also ein Zertifikat erhalten findet man es mit folgendem cmdlet:
Get-ChildItem cert:\CurrentUser\My –codesigning
Mit Set-AuthenticodeSignature wird ein Script signiert, dieses cmdlet benötigt zwei Parameter, das zu Signierende Script und das Zertifikat.
Im Folgenden Beispiel signiere ich die Datei C:\scripts\my-test.ps1 mit dem einzigen Zertifikat das in meinem Zertifikatsstore ist.
$cert = Get-ChildItem cert:\CurrentUser\My –codesigning
Set-AuthenticodeSignature C:\scripts\my-test.ps1 $cert
Erscheint folgender Fehler, hat man das Script mit PowerShell ISE erstellt. Diese verwendet eine Codierung mit der Set-AuthenticodeSignature nicht zurechtkommt. Man erhält den vielsagenden Fehler: UnknonError.
Um das Script trotzdem zu signieren erstellt man ein einfach eine neue Textdatei und speichert das Scripts mit notepad ab.
Und schon ist das Script signiert.
Wenn man das Script jetzt auf einem Host ausführt auf dem die ExecutionPolicy auf AllSigned gesetzt ist wird man informiert dass der Herausgeber unbekannt ist. Das Zertifikat welches zum Signieren verwendet wurde muss im TrustedPublisher Zertifikatstore sein.
Um das Zertifikat zu exportieren kann man die MMC Certficates verwenden, das Code Signing Zertifikat auswählen und auf Export klicken. Den Privat Key kann man nicht exportieren, dieser wird auch nicht benötigt um die Signatur zu bestätigen.
Die .cer Datei die man nach dem Export erhält kann man mit Gruppenrichtlinien auf alle Clients/Server verteilen oder manuell in den Store für Vertrauenswürdige Herausgeber importieren.
Gruppenrichtlinie:
Nach dem nächsten GP Refresh läuft das Script ohne Fehlermeldung.
Wird ein Script verändert nachdem es signiert wurde, wird die Ausführung verhindert. Folgende Fehlermeldung erscheint.
tom
]]>Auch das EventLog protokollierte folgende Fehler:
Im ADAM Log wurde folgender Fehler protokolliert:
Mein Problem habe ich dadurch gelöst, indem ich ein Computer-Zertifikat für den FQDN des TMG von meiner Zertifizierungsstelle angefragt und installiert habe. Anschließend habe ich den Netzwerkdienst Lesen-Berechtigungen für das Verzeichnis C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys gegeben (hier werden die Computerzertifikate gespeichert).
INFO: Wenn der Request für das Zertifikat fehschlägt, muss in den Systemregeln der strikte RPC Filter deaktiviert werden:
Nachdem diese Schritte abgeschlossen wurden, konnte ich im EventLog sehen wie die SSL-Verbindungen erfolgreich hergestellt wurden:
Nach einem Neustart werden Verbindungen nun sofort authentifiziert.
Grüße
dn
Zunächst muss das Feature für die Remote-Domänen aktiviert werden. Mit den folgenden Befehl wird das Feature für alle Remote-Domänen aktiviert:
Get-RemoteDomain | Set-RemoteDomain –UseSimpleDisplayName $true
In den Einstellungen der Mailbox befindet sich die Eigenschaft Simple display name. Hier lässt sich der angepasste Display Name einfügen.
ACHTUNG: Befindet sich kein Wert im Feld Simple Display Name nachdem das Feature aktiviert wurde, sendet Exchange die Mail-Adresse.
Alle Mails, die nun die Organisation verlassen, werden mit den angepassten Display Name versendet:
Anbei noch ein Shell-Beispiel um schnell für eine Liste (CSV-Import Datei) von Benutzern den Simple Display Name mit Name + Firma GmbH zu setzen.
Import-CVS "C:\Import-File.csv" | Foreach {Set-Mailbox -Identity $_.Name -SimpleDisplayName ($_.Name + " - Firma GmbH/Srl")}
Beispiel für CSV-Import Datei
Name
Daniel Nitz
Max Mustermann
Grüße
dn
Heute ist ein guter Tag für beide Autoren von ntSystems.it.
Nachdem wir über eine halbe Stunde vor dem Prometric Test Centre warten mussten weil es dort Probleme mit den PCs gab konnten wir unsere Examen in Angriff nehmen.
Daniel hat erfolgreich das “70-432 TS: Microsoft SQL Server 2008, Implementation and Maintenance” Examen absolviert und erweitert so seinen MCITP: Enterprise Administrator mit dem MCTS: SQL Server 2008, Implementation and Maintenance.
Ich habe mit dem “70-663 Pro: Designing and Deploying Messaging Solutions with Microsoft Exchange Server 2010” nun den Status MCITP: Enterprise Messaging Administrator 2010 erreicht.
In diesem Sinne,
tom
· wird eine Mailbox über das AD Attribut msExchDelegateListLink verbunden sehen Benutzer keine als „Privat“ markierten Mails
· verbindet ein User die Mailbox über Datei -> Konto hinzufügen sind alle Objekte sichtbar, auch die als „Privat“ markierten
Die Vertraulichkeit einer Nachricht wird mit dem Sensitivity Header geregelt, dieser wird in dem Fall auf “private” gesetzt. Mit Transportregeln in Exchange kann man Message Header löschen oder bearbeiten. In diesem Fall reicht das Löschen des Headers nicht aus, man muss ihn auf “Normal” ändern. Man erstellt also eine neue Transportregel für alle eingehenden Nachrichten welche an die Shared Mailbox gesendet werden. Diese Regel soll der Wert des Headers “Sensitivity” von “private” auf “normal” ändern.
Transportregeln kann man an drei verschiedenen Orten pflegen, EMS, EMC und ECP. Natürlich muss man die entsprechenden Berechtigungen besitzen.
Das Exchange Control Panel ist über https://meinexchange/ecp erreichbar, dort muss unter Options “My Organization” ausgewählt werden. Dann kann man unter “Mail Control” Regeln mit Hilfe eines Wizards erstellen.
In der Management Console sind die Regeln unter “Organization Configuration” – “Hub Transport” und “Transport Rules” zu finden, auch hier kann man Regeln einfach über einen Wizard erstellen.
Natürlich kann man Transportregeln auch mit der Managment Shell erstellen. Dazu am Besten im TechNet vorbeischauen.
Hier ein Beispiel:
New-TransportRule -Name 'Remove Header' -Comments '' -Priority '0' -Enabled $true -SentTo 'shared.mailbox@domain.com' -HeaderMatchesMessageHeader 'Sensitivity' -HeaderMatchesPatterns 'private' -SetHeaderName 'Sensitivity' -SetHeaderValue 'normal'
so long,
tom
Externen Inhaltstyp definieren
In diesem Schritt definieren wir den Inhaltstyp und somit die Verbindung zu SQL Server. Dies kann alles mit dem Sharepoint Designer erledigt werden. Unter Externe Inhaltstypen definieren wir die Verbindung.
Nun kann ein Name und die Verbindung zu SQL Server angegeben werden, indem wir auf “Klicken Sie hier, um externe Datenquellen zu ermitteln und Vorgänge zu definieren” klicken
Wir erstellen eine neue Verbindung vom Typ SQL Server und geben die Datenbankinformationen an
Nun können wir die Tabellen auswählen, die für diesen Inhaltstyp zur Verfügung stehen. Dabei klicken wir auf die Tabelle und können verschiedene Vorgänge definieren:
Nun ist der Inhaltstyp definiert und steht in Sharepoint zur Verfügung.
BCS Berechtigungen definieren
Standardmäßig haben wir keine Berechtigung um auf den Inhaltstyp zuzugreifen. Dies müssen wir erst in den BCS Einstellungen definieren. Am schnellsten kann dies über die Zentraladministration erledigt werden.
Zentraladministration / Anwendungsverwaltung / Dienstanwendungen verwalten
Nun wählen wir den Business Data Connectivity-Dienst und definieren die Berechtigungen für den Inhaltstyp.
Info: Mindestens 1 Account muss das Buntzerrecht “Berechtigungen festlegen” haben.
Jetzt können wir die externe Liste erstellen und hätten theoretisch Zugriff darauf, wäre da nicht das Double-Hop Problem. Beim Zugriff erhalten wir folgende Fehlermeldung:
Double-Hop Problem beheben
Um das Double-Hop Problem zu lösen gehen wir folgendermaßen vor:
1. Zunächst erstellen wir einen neuen SPN (Service Principal Name) für unseren SQL Server:
setspn –A MSSQLsvc/NETBIOSNAME.DOMAIN:1433 DOMAIN\SQL-Service-Account
Der SQL Service Account kann am schnellsten unter den Diensten ermittelt werden.
2. Danach müssen wir in ActiveDirectory die Delegierungen für folgende Objekte aktivieren
Ich empfehle den Sharepoint sowie den SQL Server neu zu starten um sicherzugehen, dass die Konfiguration aktiv ist.
Jetzt haben wir Zugriff auf die SQL Tabelle über Sharepoint.
Nähere Informationen zur Double-Hop Problematik unter folgenden Link
Grüße
dn
Wenn man nun über das Management Studio eine Verbindung mit SQL Server herstellen möchte, kann es vorkommen, dass man selbst mit dem Farm-Administratorkonto keine Änderungen an den entsprechenden Datenbanken vornehmen kann. Ein Blick auf die verbunden Gruppen des Farm-Administratorkontos verrät, dass sich das Benutzerkonto nur in der Gruppe public befindet und somit keine Einstellungen ändern darf.
Zudem ist kein Benutzerkonto ersichtlich mit dem man sich anmelden könnte um das Farm-Administratorkonto den entsprechen Gruppen zuzuweisen. Mit dem Benutzer SA kann man sich ebenfalls nicht anmelden, da der “SQL Server- und Windows-Authentifizerungsmodus” nicht aktiviert ist.
Der Grund dafür liegt hier: Wenn man Sharepoint Foundation 2010 über den Rechtsklick auf das Setup-File und “Als Administrator ausführen” installiert, wird das Produkt über das lokale Administratorkonto mit logischerweise den entsprechenden Administratorrechten installiert. Das wäre eigentlich auch kein Problem, wäre nicht die folgende Änderung ab SQL Server 2008 fest implementiert:
In den Versionen vor SQL 2008 wurde der Gruppe lokale Administratoren (die enthält wiederum den Domain-Admin und geg. andere Benutzer) das SQL Benutzerrecht sysadmin zugewiesen. Folglich konnte jeder Admin,die Datenbanken verwalten. Ab SQL Server 2008 erhält diese Gruppe nicht mehr das sysadmin-Recht. Bei der manuellen Installation von SQL wird man danach gefragt welche Benutzer das sysadmin-Recht erhalten sollen. Als die Installation mit der Option “Als Administrator ausführen” durchgeführt wurde, hat der lokale Administrator die sysadmin-Rechte erhalten.
Lösung: Wir erhalten mit dem Farm-Administrator Konto keine Ändern-Rechte in SQL, bis wir uns mit dem lokalen Administrator anmelden, Management Studio öffnen und den Benutzerkonten die entsprechenden Rechte zuweisen.
PS: Wenn die Datenbank in den Sinlge User Mode geschalten wird, erhält die Gruppe lokale Administratoren (folglich auch Domain-Admins) die sysadmin-Rechte.
Grüße
dn
WPAD
Das Web Proxy Autodiscovery Protocol (WPAD) ist ein Protokoll, mit dem Web-Clients automatisiert zu verwendende Web-Proxies innerhalb eines Computernetzwerkes finden können, indem eine Proxy autoconfiguration (PAC)-Datei unter einer erratbaren URL gespeichert wird, beispielsweise http://wpad.example.com/wpad.dat
WPAD wird in den DHCP Einstellungen sowie in DNS konfiguriert um DHCP Clients und jene Geräte mit den automatischen Einstellungen zu versorgen, die eine statische IP Adresse besitzen.
Das Problem nach Migrationen / Serverumzug des ISA / TMG Servers bei DHCP Clients erklärt sich so:
Am DHCP Server wird eine neue Option (252) konfiguriert, die den Pfad zur WPAD.dat Datei bereitstellt. Sobald ein neuer DHCP Client sich vom DHCP Server eine IP Adresse holt, bekommt er auch eine Lease-Zeit zugewiesen, wie lange er die Adresse verwenden darf. Die Lease wird standardmäßig nach der Hälfte der Lease-Zeit verlängert.
Solange sich der Client in dieser Lease befindet und die IP Adresse dem DHCP Server anbietet, wird die WPAD Datei nicht aktualisiert.
Ändert sich jetzt der Servername des ISA / TMG Servers und ist in der Option 252 vom DHCP Server der jeweilige Servername eingetragen, so erhalten die DHCP Clients nicht die neue Konfiguration. Man müsste bei jedem Client, der sich in einer Lease befindet die Befehle ipconfig /release und ipconfig /renew ausführen um einen manuellen Refresh durchzuführen.
Es gibt mehrere Methoden das Problem zu umgehen:
Methode 1 – Option 252 von Anfang an mit dem CNAME WPAD konfigurieren
Wenn man in den DHCP Einstellungen nicht den FQDN des Servers verwendet, sondern den CNAME WPAD (so wie man es für DNS konfigurieren muss), so wird der CNAME WPAD immer auf den jeweiligen aktuellen Server zeigen.
ACHTUNG: Dies muss natürlich von Anfang an so erfolgen!!
Methode 2 – Clients daran hindern die WPAD Option von DHCP zu zeihen.
Durch hinzufügen des Registry Keys: AutoProxyDetectType mit dem Wert 2 unter
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
werden die Clients angewiesen das WPAD File über DNS anzufragen.
Grüße
dn
Ich werde im Beispiel zwischen einer einzelnen Datenbank und einer Datenbank in einer DAG mit mehreren Kopien unterscheiden.
Der Datenbankpfad kann mit der EMC sowie mit der EMS verschoben werden.
Exchange Management Console
Exchange Management Shell
Achtung:
Wenn Circular Logging für die Datenbank aktiviert ist muss das vor der Änderung deaktiviert werden!
Einstellungen wie ReplayLagTime und TruncationLagTime notieren, durch das entfernen und wieder erstellen der Datenbankkopien gehen diese Einstellungen verloren!
Beim entfernen einer Mailboxdatenbankkopie kann es zu einem Fehler mit folgender Meldung kommen:
Error:
Registry key has subkeys and recursive removes are not supported by this method.Warning:
An unexpected error has occurred and a Watson dump is being generated: Registry key has subkeys and recursive removes are not supported by this method.
Obwohl der Fehler auftritt wird die Datenbankkopie gelöscht. Allerdings bekommt man beim wiedererstellen der Datenbankkopie den selben Fehler und die Kopie wird nicht erstellt. Es hilft folgender Workaround.
Jetzt wird das Add-MailboxDatabaseCopy cmdlet erneut ausgeführt und die Kopie wird erstellt.
tom
]]>Wer Online Archive bereits mit Exchange 2010 RTM verwendet hat und diese jetzt auf eine andere Datenbank schieben muss kann wie folgt vorgehen.
In der EMC wurden mit SP1 die Wizards für einen neuen Move Request angepasst, dort kann man das Archiv auswählen und nur dieses verschieben.
In der EMS gibt es neue Parameter für das cmdlet New-MoveRequest, hier ein Beispiel in dem das Archiv des Benutzers test.user in die Datenbank adb01 verschoben wird.
new-MoveRequest test.user –ArchiveOnly –ArchiveTargetDatabase adb01
tom
]]>Der Wizard befindet sich unter der Serverkonfiguration und wird über den Menüpunkt “New Exchange Certificate” aufgerufen.
Sobald der Wizard startet, muss zunächst ein Namen vergeben werden. Auf der nächsten Seite kann das Zertifikat noch für alle Subdomains freigegeben werden.
Nun können die Einstellungen gesetzt werden, wie der Certificate-Request erstellt werden soll. Als Beispiel habe ich hier einige Parameter aufgelistet:
OWA
ActiveSync
Outlook Anywhere und Autodiscover
Als Ergebnis werden dann die Domains angezeigt, die im Zertifikat registriert werden
Nachdem die Informationen zu Organisation und Standort ausgefüllt wurde, kann der Certficate-Request abgespeichert und bei der CA eingereicht werden. Bevor die CA das Zertifikat ausstellen kann, muss die CA noch für die Registrierung mehrere Subject Names aktiviert werden.
Nachdem die CA das Zertifikat ausgestellt hat, muss der Request noch abgeschlossen werden. Hier klickt man rechts auf das Zertifikat in der EMC und wählt die Option “Complete Pending Request”.
Sobald das Zertifikat installiert ist, muss es noch mit den jeweiligen Diensten verbunden werden. Hier ist uns wieder ein Wizard behilflich. Rechtslick auf das Zertifikat und “Assign Services to Certificate”
Nun kann man sämtliche Services auswählen, für die das Zertifikat zuständig ist.
Mit Assign wird das Zertifikat dann hinzugefügt.
Grüße
dn
live vom ntSystems techDAY :)
]]>Damit die CA ein SAN Zertifikat ausstellen kann muss folgender Befehl von einer Eingabeaufforderung mit administrativen Rechten ausgeführt werden:
certutil –setreg policy\EditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2
Anschließend müssen die CA Dienste neu gestartet werden. Am besten mit "net stop certsvc && net start certsvc”.
Will man jetzt einen Certificate Request über die MMC einreichen erscheint folgender Fehler:
“The request contains no Certificate template information. 0x80094801 (-2146875391) Denied by Policy Module 0x80094801, the request does not contain a Certificate template extension or the Certificate Template request attribute.”
Man muss den Request über die Certificate Web Services einreichen, standardmäßig läuft die auf der CA unter /certsrv, in unserem Fall also: http://dc01.ntsystems.local/certsrv. Dort wählt man Request a Certificate, advanced certificate request und submit a certificate using a (…) file. In das Textfeld wird der gesamte Inhalt der .req Datei kopiert, bei Certificate Template wird Web Server ausgewählt. Wenn der Request erfolgreich war, kann man die .cer Datei herunterladen und in Exchange den Request fertigstellen (Complete Pending Request).
Alternativ kann der Request mit “certutil” eingereicht werden, wobei mit dem Parameter “/attrib” das Template gewählt wird.
Beispiel: certreq.exe -submit -attrib "CertificateTemplate:WebServer" c:\certreq.req
tom
live vom ntSystems techDAY :)
Als erstes erstellen wir eine neue Webveröffentlichungsregel:
Wir geben an, dass wir eine einzelne Webseite veröffentlichen und wählen bei Sicherheit SSL aus
Nun müssen wir den Sitenamen inkl. IP Adresse (sofern dieser nicht aufgelöst werden kann) vergeben
Danach geben wir den Pfad an, für welchen die Veröffentlichungsregel wirken soll, bzw. auf welchen Ordner der externe Zugriff beschränkt werden soll.
Nun tragen wir noch den externen Namen ein
INFO: Sollte euer Pfad Leerzeichen haben, ist das für den ISA Server kein Problem. Man muss die Leerzeichen nicht durch %20 ersetzen, sondern kann die URL ganz normal eingeben.
Als nächstes erstellen wir einen neuen Listener und weisen ihn an, dass eine SSL Verbindung erforderlich ist
Jetzt wählen wir IP Adresse und das entsprechende Zertifikat aus. Sofern dies noch nicht auf dem ISA Server installiert wurde, muss es jetzt nachinstalliert werden.
Als Authentifizierung wählen wir die HTTP Authentifizierung – Standard
Als Authentifizierungsdelegierung nehmen wir NTLM
Zum Schluss kann man noch eine Gruppe angeben, auf welche die Veröffentlichungsregel beschränkt ist.
Das Standardverhalten des Client ist es, den veröffentlichen Ordner selbst durch die HTTP Methode OPTIONS abzufragen. Damit die Verbindung nicht fehlschlägt, müssen wir dies zulassen und dürfen es nicht wie durch die bereits erstellte Regel mit den zugelassenen Pfaden blockieren. Wir kopieren die neu erstelle Regel und platzieren sie unter der ersten Regel. Danach werden die die HTTP Methode auf OPTIONS beschränken.
Nun geben wir der kopierten Regel einen neuen Namen (Bsp: WebDav – OPTIONS) um sie von der ersten Regel zu unterscheiden. Wir löschen zudem unter dem Reiter Pfade die Ordnerbeschränkung.
Als nächstes wird die HTTP Methode auf OPTIONS beschränkt. Wir öffnen die HTTP Richtlinie und tragen die Methode ein:
ACHTUNG: Ordner mit Umlaute
Wenn ihr Ordner mit Umlaute verwendet, wird die Verbindung beim versuch die Ordner zu öffnen, immer zusammenbrechen. Der Grund hierfür liegt darin, dass das High Bit-Zeichen standardmäßig deaktiviert ist. Dieses High Bit-Zeichen lässt Umlaute in der URL zu. Ich empfehle auf beiden Veröffentlichungen WebDav und WebDav Options das High Bit-Zeichen zu erlauben.
Dies kann ebenfalls in der jeweiligen HTTP Richtlinie vorgenommen werden:
Nun kann der Client den Ordner via HTTPS von Extern mappen.
Grüße
dn
Dies ist der erste aus 2 Teilen zum Thema WebDav. WebDav (Web-based Distributed Authoring and Versioning) ist ein offizieller Standard, Dateien im Internet bereitzustellen.
Der Vorteil von WebDav ist, dass es nicht wie FTP oder SSH spezielle Ports verwendet, sondern über HTTP und HTTPS übertragen wird und somit durch jede Firewall kommt, welche Port 80 und 443 geöffnet hat.
Im ersten Teil werde ich zeigen wie ein Verzeichnis unter IIS7 erstellt und über WebDav freigegeben wird. Im 2. Teil werde ich beschreiben wie man das Ganze über den ISA Server veröffentlicht.
Server
Sofern IIS nicht installiert ist, besteht der erste Schritt darin den Webserver zu installieren
Zusätzlich zum Webserver muss das Feature WebDav hinzugefügt werden.
Der nächste Schritt besteht darin, eine neue Webseite in IIS zu erstellen. Als physikalischen Pfad geben wir das Verzeichnis ein, welches über WebDav freigegeben werden soll.
Zusätzlich binden wir die Webseite auf Port 443 HTTPS und wählen das jeweilige Zertifikat aus.
Als nächstes müssen unter Authentifizierung die Anonyme Authentifizierung deaktivieren und Windows- und Standardauthentifizierung aktivieren.
Bei den Webseiteneinstellung befindet sich das Feature WebDav-Erstellungsregeln.
In den Einstellungen muss zunächst WebDav aktiviert werden und danach eine neue Erstellungsregel erstellt werden. Die Erstellungsregel definiert die jeweiligen Zugriffsrechte.
Die Konfiguration ist nun abgeschlossen. Ich empfehle jedoch um Probleme mit Zielpfade auf entfernten Servern zu vermeiden, zusätzlich unter den Verbindungseinstellungen der Webseite, einen Benutzer anzugeben, der Zugriffsrechte auf die Webseite hat.
Client
Um das WebDav-Verzeichnis zu mappen, muss der Client ein neues Netzlaufwerk verbinden und die Option “Verbindung mit einer Webseite herstellen, auf der Sie Dokumente und Bilder speichern können” auswählen.
Als Adresse geben wir https://Servername ein
Jetzt können wir auf das Verzeichnis über HTTPS zugreifen.
Grüße
dn
Es gibt in Exchange 2010 65 vordefinierte Rollen die man sich mit Get-ManagementRole anzeigen lassen kann.
Will man die Role Entries zu einer Rolle sehen führt man folgendes cmdlet aus: Get-ManagementRoleEntry Rolle\*
Beispiel: Get-ManagementRoleEntry "Move Mailboxes\*"
Soll eine Benutzerdefinierte Rolle bzw. ein Scope erstellt werde, dann in dieser Reihenfolge:
So sieht die soeben erstellte Rolle aus:
Get-ManagementRoleEntry "Create Move Request Gruppe1\*"
Meine soeben erstellte Rolle soll nur Berechtigungen haben einen Move Request zu erstellen. Mitglieder sollen den Move Request nicht löschen, anhalten oder weiterführen können. Also passe ich die RoleEntries entsprechend an.
Nachdem die nicht erwünschten cmdlets entfernt wurden sieht das Ganze so aus:
Get-ManagementRoleEntry "Create Move Request Gruppe1\*"
Wichtig: RBAC Rollen sind nicht gleichzusetzen mit ACLs (Sicherheitsberechtigungen), das heißt es wird nicht die restriktivste Rolle angewandt. Benutzer erhalten durch alle Rollen die ihnen zugewiesen sind Zugriff auf ein bestimmtes “Set” an Funktionen. Mehr Rollen = Mehr Funktionen.
Wenn man das Prinzip einmal verstanden hat, wird einem schnell bewusst wie mächtig dieses neue Berechtigungsmodell ist. Da die Exchange Management Konsole auch nichts anderes macht also PowerShell Befehle abzusetzen kann man so wirklich alles genau an seine Bedürfnisse anpassen.
tom
]]>Um dieses neue Feature zu verwenden muss man nur auf einem Exchange 2010 SP1 Server Berechtigungen auf eine Shared Mailbox setzen, existieren die Berechtigungen bereits müssen sie entfern und nochmal gesetzt werden.
Beim setzen der Berechtigungen werden nämlich die Benutzer, die von der Berechtigung profitieren, in das ActiveDirectory Attribut msExchDelegatedListLink aufgenommen.
Outlook sucht beim starten nach Mailboxen mit dem DN des Benutzers und verbindet diese automatisch. Ein weiterer Vorteil ist dass die Mailbox vom Benutzer nicht geschlossen oder entfernt werden kann, so werden die Helpdesk Calls weiter reduziert ;)
Das Ganze funktioniert übrigens auch für Ressourcen (Room/Equipment) Mailboxen.
tom
special thanks to: Steve Goodman
]]>Mit Exchange 2010 SP1 wurde die Import/Export Funktionalität geändert und die cmdlets werden durch MailboxImportRequest und MailboxExportRequest ersetzt. Die Vorteile die daraus Resultieren sind folgende:
Beispiel:
New-MailboxImportRequest-Mailbox test -IsArchive -FilePath \\server\test.pst
Dieser Befehl Importiert den Inhalt der Datei test.pst in das Online Archiv der Mailbox "test".
]]>Nachdem ich das Eventlog des Quellservers durchforstet habe, bin ich auf folgende Fehler im Anwendungs-Log gestoßen:
Protokollname: Application
Quelle: MSSQL$SHAREPOINT
Datum: 24.08.2010 15:46:37
Ereignis-ID: 18053
Aufgabenkategorie:Server
Ebene: Fehler
Schlüsselwörter:Klassisch
Benutzer: ******\daniel nitz
Computer: Miami.*****.local
Beschreibung:
Fehler: 7884, Schweregrad: 20, Status: 1. (Parameter: ). Der Fehler wird aufgrund eines Formatierungsfehlers im nicht ausführlichen Modus gedruckt. Ablaufverfolgung, ETW, Benachrichtigungen usw. werden ausgelassen.
Protokollname: Application
Quelle: MSSQL$SHAREPOINT
Datum: 24.08.2010 15:46:37
Ereignis-ID: 7105
Aufgabenkategorie:Server
Ebene: Fehler
Schlüsselwörter:Klassisch
Benutzer: ******\daniel nitz
Computer: Miami.*****.local
Beschreibung:
Die Datenbank-ID '6', Seite '(0:0)', Slot '0' für den LOB-Datentypknoten ist nicht vorhanden. Dies ist gewöhnlich auf Transaktionen zurückzuführen, die Daten, für die kein Commit ausgeführt wurde, auf einer Datenseite lesen können. Führen Sie DBCC CHECKTABLE aus.
Um den Fehler zu analysieren muss man zunächst das SQL Server 2008 Management Studio Express installieren. Über das Management Studio erhält man Zugriff auf dem SQL Server und kann mit dem Troubleshooting beginnen.
Zunächst meldet man sich am SQL Server an. Als Servername verwenden wir SERVER\Sharepoint
Nun ist die Verbindung zum Server hergestellt. Jetzt muss die Datenbank mit der ID ‘6’ (wie in der Fehlermeldung 2) gefunden werden. Als erstes öffnen wir ein Abfragefenster und gehen jede Datenbank mit
use NAME-DER-DATENBANK
select db_id()
durch, bis uns die entsprechende ID im Fenster “Meldungen” ausgegeben wird. In meinen Fall war das die Datenbank WSS_CONTENT.
Nun führen wir den Befehl DBCC CHECKDB (WSS_CONTENT) WITH NO_INFOMSGS, ALL_ERRORMSGS aus und bekommen eine Liste mit den entsprechenden Fehlern
In meinem Fall:
Meldung 8965, Ebene 16, Status 1, Zeile 1
Tabellenfehler: Objekt-ID 69575286, Index-ID 1, Partitions-ID 72057594113359872, Zuordnungseinheits-ID 72057594043760640 (LOB data-Typ). Auf den Datenknoten außerhalb von Zeilen auf Seite (0:0), Slot 0, Text-ID 1759772672 wird von Seite (1:4986), Slot 6 verwiesen, er wurde jedoch im Scan nicht betrachtet.
Meldung 8929, Ebene 16, Status 1, Zeile 1
Objekt-ID 69575286, Index-ID 1, Partitions-ID 72057594113359872, Zuordnungseinheits-ID 72057594123255808 (In-row data-Typ): Es wurden Fehler in Daten außerhalb von Zeilen gefunden mit der ID 1759772672, im Besitz von data, Datensatz identifiziert durch RID = (1:4986:6).
Von CHECKDB wurden 0 Zuordnungsfehler und 2 Konsistenzfehler in der 'AllDocs'-Tabelle (Objekt-ID 69575286) gefunden.
Von CHECKDB wurden 0 Zuordnungsfehler und 2 Konsistenzfehler in der 'WSS_Content'-Datenbank gefunden.
repair_allow_data_loss ist die minimale Reparaturstufe für die Fehler, die mit DBCC CHECKDB (WSS_Content) gefunden wurden.
Die Meldungen weisen darauf hin, dass eine Inkonsistenz in der Datenbank vorliegt. Höchstwahrscheinlich handelt es sich dabei um eine Datei, die auf dem Sharepoint Server upgeloaded wurde. Um die Inkonsistenz zu beheben muss DBCC CHECKDB mit dem Parameter repair_allow_data_loss ausgeführt werden.
Dafür müssen zunächst alle Sharepoint Dienste und der IIS Dienst beendet werden.
Danach müssen die folgenden Kommandos ausgeführt werden:
Mit dem Befehl ALTER DATABASE WSS_Content SET SINGLE_USER, wird die Datenbank in den Sinlge_Mode gesetzt, der Befehl DBCC CHECKDB (WSS_Content, REPAIR_ALLOW_DATA_LOSS) startet die Reparatur.
Nachdem die Reparatur abgeschlossen wurde und DBCC CHECKDB keine Fehler mehr protokolliert, kann der Modus wieder zu MULTI_USER geändert werden.
Jetzt können alle Dienste wieder gestartet werden. Die Datenbank sollte jetzt konsistent sein und die Sicherung vollständig durchlaufen.
Grüße
dn
Jetzt muss noch ein Advertisement für das Paket erstellt werden.
Jetzt wurde das Paket und die Zuweisung erstellt, die Clients die in der Collection sind erhalten die Software.
Nachdem die Virtuelle Applikation im Sequencer erstellt wurde (wie z.B. hier erklärt) muss sie im System Center Configuration Manager importiert werden.
Das Virtuelle Paket wurde nun also auch erstellt. Jetzt fehlt noch ein Advertisement für dieses.
Nach kurzer Zeit werden die Clients auch dieses Advertisement erhalten. Sind Desktopverknüpfungen oder Dateizuordnungen konfiguriert werden diese auf dem Client bereits angewandt. Das heißt ein .pdf File bekommt in diesem Beispiel bereits den virtuellen Adobe Reader zugewiesen. Beim ersten Starten des Programmes wird der Inhalt des Paketes heruntergeladen, d.h. der erste Start dauert ein bisschen, alle weiteren Starts verlaufen wesentlich schneller, dabei wird nur auf Updates überprüft, alle anderen Files sind bereits lokal vorhanden.
tom
]]>
Um das Problem zu umgehen empfiehlt es sich die Sharepoint Webseite während der Installation auf Port 80 zu binden. Dazu sind folgende 2 Schritte notwendig:
Danach läuft die Installation vollständig durch und die Webseite kann wieder auf den ursprünglichen Port gebunden werden.
Grüße
dn
I was stumbling upon this error while I was trying to stream virtual Applications with SCCM. If I set the advertisement to “Stream virtual applications from distribution point” the following error occurred, though if I set the advertisement to “Download content from distribution point and run locally” everything worked without any problem.
The problem was caused by the malware inspection feature of my ForeFront TMG Web Proxy Server.
If you see “an unexpected error” with the Error Code like: 0A-400000C8 try to disable the Proxy on the Clients for further research.
If you are using Forefront TMG be sure to add the SCCM (streaming enabled) Distribution Point to the Malware Destination Exceptions.
You wont see this error with Application Virtualization Management Server when using RTSP or RTSPS as streaming protocol.
You wont see it even with SCCM if “Download content from distribution point and run locally” is selected because this uses BITS to transfer the whole package to the client and run it locally. Since SCCM uses HTTP/HTTPS for streaming the connection will go to the proxy server and will be killed by Malware Inspection.
tom
ps. special thanks go to J.C. Hornbeck (http://blogs.technet.com/b/appvcallback/)
]]>
Protokollname: Application
Quelle: Microsoft-SharePoint Products-SharePoint Foundation Search
Datum: 09.08.2010 16:51:10
Ereignis-ID: 14
Aufgabenkategorie:Gatherer
Ebene: Warnung
Schlüsselwörter:
Benutzer: LOKALER DIENST
Computer: Miami.domain.local
Beschreibung:
Die Startadresse 'sts4://jobportal:8015/contentdbid={4cee0e9c-fee5-498f-86b7-9855d89539ff}' kann nicht durchforstet werden.
Kontext: Anwendung 'Suchabfragen_über_Hilfethemen_bedienen', Katalog 'Search'
Details:
Zugriff verweigert. Vergewissern Sie sich, dass das Standardkonto für den Inhaltszugriff Zugriff auf dieses Repository hat, oder fügen Sie eine Durchforstungsregel zum Durchforsten dieses Repositorys hinzu. Wenn es sich bei dem zu durchforstenden Repository um ein SharePoint-Repository handelt, vergewissern Sie sich, dass das verwendete Konto über die Berechtigung "Alles lesen" für die durchforstete SharePoint-Webanwendung verfügt. (0x80041205)
bedeutet das, dass ihr eine Webanwendung unter einer URL betreibt, die nicht dem Computername des Server entspricht. Dafür verantwortlich ist das sog. Loopback check security feature, welches ab Windows Server 2003 SP1 implementiert ist. Es lehnt die Authentifizierung ab, wenn die URL nicht mit dem Computernamen übereinstimmt und verhindert somit, dass die Sharepoint Suche die Webseite indiziert.
Hier ein Workaround um das Problem zu beheben:
In der Registry des Sharepoint Servers muss unter
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
der Schlüssel (DWORD) “DisableLoopbackCheck” mit Wert 1 erstellt werden. Nach einem Neustart ist das Security Feature deaktiviert und es werden keine Warnungen mehr ins EventLog geschrieben.
Grüße
dn
Man kann jetzt einzelne Elemente oder ganze Mailboxen löschen um diese vom Backup wieder zurück zu holen. Zwar gibt es mit Single Item Recovery eine bessere Möglichkeit für das Widerherstellen einzelner Mails, dazu aber mehr in einem anderen Beitrag.
Die Datenbank wird also von der Sicherung zurückgeholt, dazu starte ich Windows Backup und wähle Recovery. Ich kann nun aus den erstellten Backups wählen und entscheide mich für eines auf einem Netzlaufwerk.
Nun kann ich wählen was ich Widerherstellen möchte, in meinem Fall einzelne Dateien oder Ordner. Ich hole mir also die *.edb Datei der Datenbank und den kompletten Log Folder derselben zurück. Das Ganze darf natürlich nicht an der ursprünglichen Stelle widerhergestellt werden, sondern in einem neuen Ordner.
Wurden die Files zurückgeholt, kann man die Recovery Database erstellen. Dazu brauchen wir mal wieder die dunkle Seite der Macht, also öffne ich die Exchange Management Shell. Dort wird mit dem cmdlet new-MailboxDatabase eine Recovery Database aus der widerhergestellten *.edb Datei erstellt.
Dieses Beispiel erstellt die Recovery Database RDB01 auf dem Server mbx01, X:\restore ist dabei der Ort an dem die Edb Datei und der Log Ordner Widerhergestellt wurden.
Die Datenbank wurde erstellt, jedoch wird man darauf hingewiesen dass die Datenbank noch nicht gemounted wurde, sie muss erst in einen “Clean Shutdown State” gebracht werden.
Um die Recovery Datenbank in einen “Clean Shutdown State” zu bringen wird das Tool eseutil.exe verwendet. Dafür öffnet man eine Eingabeaufforderung (oder EMS) und lässt eseutil –p auf die edb Datei los. Der Parameter –p steht hier für Repair. In meinem Beispiel lautet der Befehl:
Nachdem Eseutil durchgelaufen ist, die Datenbank sich also im Clean Shutdown State befindet kann sie gemounted werden, das geht in der EMC mit einem Rechtsklick oder in der Shell mit Mount-Database RDB01.
Die Datenbank wurde erfolgreich gemounted und ich habe jetzt Zugriff auf die Daten.
Mit dem cmdlet Export-Mailbox können jetzt einzelne Mails oder ganze Mailboxen widerhergestellt werden, mehr zum cmdlet Export-Mailbox gibt es hier.
tom
]]>Diese cmdlets sind standardmäßig aber nicht verfügbar, bzw. hat ein „normaler“ Exchange Organization Administrator keine Berechtigungen sie zu verwenden. Bevor diese Berechtigungen gesetzt werden sollte man RBAC (Role Based Access Control) verstehen.
Man erstellt eine neue Universelle Gruppe im Active Directory, ich gebe ihr einen beschreibenden Namen „Enterprise Import Export Users“. Jetzt weiße ich dieser Gruppe die Management Rolle „Mailbox Import Export“ zu, dazu verwende ich folgendes cmdlet in der Exchange Management Shell:
New-ManagementRoleAssignment -Name "Import Export Role" -SecurityGroup "Enterprise Import Export Users" -Role "Mailbox Import Export"
Mitglieder dieser Gruppe haben jetzt die notwendigen Berechtigungen um die Import/Export cmdlets zu verwenden, die Exchange Management Shell bzw. Management Konsole müssen neu gestartet werden.
Wird verwendet um PST Daten in Mailboxen zu importieren. Wenn die PST Dateien im Format <Exchange Alias>.pst vorhanden sind kann man auch mehrere Imports gleichzeitig machen.
Mit diesem Befehlt werden alle Elemente aus c:\pst\test.pst in die Mailbox “test” importiert.
Import-Mailbox –identity test –PstFolderPath c:\pst\test.pst
Mit diesem Befehl werden alle Dateien im Ordner c:\pst in die entsprechenden Mailboxen importiert, wichtig ist dabei der Name der PST Files.
Dir c:\pst |Import-Mailbox
Wird verwendet um Objekte von Mailboxen zu exportieren, als Ziel kann eine andere Mailbox oder eine PST Datei anagegeben werden. Häufig wird dieses cmdlet verwendet um Objekte aus einer Recovery Datenbank wieder in der ursprünglichen Mailbox herzustellen.
Mit diesem Befehl werden alle Elemente aus der Mailbox “test” in den Ordner “testdata” der Mailbox “export” kopiert.
Export-Mailbox -Identity test -TargetMailbox export -TargetFolder testdata
Mit diesem Befehl werden alle Element aus der Mailbox "test" in die PST Datei auf C:\pst exportiert. Achtung: Für diesen Befehl wird Outlook (x64) auf dem Exchange Server benötigt der den Export durchführen soll. Nach Best Practice sollte das ein separater Server sein der sonst keine Mailboxen hält.
Export-Mailbox -Identity test -PstFolderPath c:\pst\test.pst
Genauere Informationen gibts im Technet: Export-Mailbox, Import-Mailbox
tom
]]>Wie der Sequencer vorbereitet wird habe ich hier beschrieben.
Der Sequencer wird gestartet und die AppV Sequencer Console wird geöffnet. Man wählt “Paket erstellen” um ein neues Paket zu erstellen.
Im nächsten Dialog wird der Name und eventuell eine Beschreibung vergeben.
Nachdem man auf “Weiter” geklickt hat kann man mit dem Sequencing beginnen. Durch klicken auf “Überwachung starten” wird man aufgefordert einen Ordner auszuwählen den der Sequencer überwachen soll.
Es wird ein Ordner auf dem Q-Drive erstellt, dieser sollte einen Namen im 8.3 Format haben, also maximal acht Zeichen vor dem Punkt und maximal drei danach.
Jetzt wird das Setup von Adobe Reader gestartet (nicht der Web Installer, sondern das offline Installationspaket). Wichtig ist dabei das man den eben erstellten Ordner auf dem Q-Drive als Zielordner angibt.
Wenn die Installation erfolgreich abgeschlossen ist kann man die Überwachung beenden.
Im nächsten Schritt werden Dateizuordnungen und Verknüpfungen konfiguriert, man kann z.B. wählen ob eine Verknüpfung auf dem Desktop der Clients erstellt werden soll oder nicht.
Jetzt kann die Applikation personalisiert werden, durch klicken auf “Starten” wird Adobe Reader gestartet und man kann die EULA akzeptieren, dann muss das nicht der Benutzer machen. Außerdem empfiehlt es sich die Automatischen Updates des Readers zu deaktivieren. Wenn man alle Einstellungen gemacht hat wird die Applikation wieder beendet.
Noch einmal auf “Weiter” klicken und das Paket ist vorerst fertig.
In den folgenden Fenstern können noch diverse Einstellungen getroffen werden, wichtig ist im Reiter “Bereitstellung” das richtige Protokoll zu wählen, für Testumgebungen wird das RTSP sein. Außerdem kann man hier die unterstützten Betriebssysteme und die “Ausgabeoptionen” wählen. Wird das Paket per Streaming verteilt sollte man die Komprimierung aktivieren. Wenn man die Applikation an “Standalone” Clients verteilt dann muss man auch ein MSI File generieren.
Eine weitere wichtigie Einstellung ist der Hostname des Servers, standardmäßig wird die Variable %SFT_SOFTGRIDSERVER% verwendet, diese muss auf den Clients als Umgebungsvariable mit dem Hostnamen des Servers konfiguriert werden.
Man kann noch mehr personalisieren und sogar die virtuelle Registry bearbeiten, allerdings ist das für Adobe Reader nicht notwendig. Also kann das Paket gespeichert werden.
Wurde das Paket gespeichert erhält man folgende Dateien. Diese können mit einem Application Virtualization Management Server, mit System Center Configuration Manager oder direkt per MSI an die Clients verteilt werden.
Um die Applikation mit dem AppV Management Server zu verteilen wird in der Management Console mit rechts auf Applications gecklickt, dort kann man die *.sprj Datei auswählen und so die virtuelle Applikation erstellen. Die Dateien die mit dem Sequencer erstellt wurden müssen dazu in den “Content” Ordner des AppV Management Servers kopiert werden.
tom
]]>Der Sequencer ist im Idealfall eine virtuelle Maschine, vor jedem „Sequencing“ sollte der Ausgangszustand des Sequencers der Selbe sein.
Man erstellt also eine neue virtuelle Maschine und installiert ein Betriebssystem seiner Wahl. Es müssen zwei Partitionen vorhanden sein, eine für das System und eine für das sogenannte Q-Drive.
Zu diesem Zeitpunkt sollte man so wenig Software wie möglich installieren, alles was auf dem Sequencer installiert wird muss auch auf den Clients installiert werden damit die virtuellen Applikationen laufen.
Es wird also der AppV Sequencer installiert und die zweite Partition mit NTFS Formatiert, dieser Partition weist man den Laufwerksbuchstaben Q: zu. Der Client soll in der Domain hängen und folgende Dienste sollten gestoppt und deaktiviert werden:
· Windows Update
· Windows Search
Jetzt wird die virtuelle Maschine heruntergefahren und das Feature UnDo Disk (VMWare: Nonpersistent Disk) wird aktiviert. Ab jetzt ist die Maschine bei jedem Start auf dem gleichen Stand und bereit ein Paket zu erstellen.
Wie ein Paket erstellt wird erkläre ich in diesem Post.
tom
]]>Dies kann unter Umständen den Mailfluss zu den Öffentlichen Ordnern stören. Man erhält dann folgende Unzustellbarkeitsberichte vom Exchange Server:
Um das Problem zu beheben muss zunächst der ADSI Editor geöffnet werden. In der Unterstruktur
Configuration / CN=Configuration,DC=YOURDOMAIN / CN= Services / CN= YOUR ORGANISATION / CN= Administrative Groups / CN= First administrative Group /
der Ordner CN=Servers gelöscht werden (sofern dieser auch leer ist)
Nun werden Mails den Öffentlichen Ordnern wieder zugestellt
Grüße
dn
Erscheint beim Starten der Applikation der Fehler: “Auf die Angegebene Instanz von Application Virtualization Server konnte nicht zugegriffen werden” mit einem Fehlercode wie “xxxxxxx-xxxxxx0A-10000002” dann wurde die Umgebungsvariable SFT_SOFTGRIDSERVER am AppV Client nicht gesetzt.
Beim Erstellen der virtuellen Applikation (sequencing) wird standardmäßig diese Variable verwendet, der Client kann damit allerdings nicht viel anfangen. Also einfach auf den AppV Clients die Variable setzen und als Wert den FQDN des AppV Management Servers eintragen.
Tipp: Dafür bieten sich natürlich Group Policy Preferences an.
Erscheint der Fehler: “Die angegeben Anwendung ist nicht vorhanden” mit einem Fehlercode wie dem “xxxxxxx-xxxxxxxx-00000A09” deutet das auf einen falschen Namen hin. Der Fehler kann auch auftreten während ein Programm läuft, z.B. wenn es sich bei der Anwendung um einen Proxy des Office Deplyment Kit for AppV handelt. Beim Ausführen von "msiexec /i offvirt.msi" muss auf die richtigen Namen geachtet werden. Mehr dazu in einem separaten Post.
Ein weiterer Fehler ist folgender:
Am AppV Sequenzer wird standardmäßig das RTSPS (322) Protokoll verwendet, das muss allerdings erstmal konfiguriert werden (Zertifikat usw.). Zum Testen eignet sich auch RTSP das Port 554 verwendet. Das kann direkt beim Erstellen des Paketes ausgewählt werden, alternativ kann man auch die .osd Datei bearbeiten und den Link anpassen.
Anstelle von "RTSPS://%SFT_SOFTGRIDSERVER%:322/DefaultApp.sft" wird also "RTSP://%SFT_SOFTGRIDSERVER%:554/DefaultApp.sft" gesetzt.
Soviel zum Thema Applikations Virtualisierung. Ich arbeite an weiteren Posts die den Vorgang des Sequencen und Verteilen von Applikationen beschreiben.
stay tuned,
tom
Um die RAM-Auslastung zu verringern müssen die Recycling Einstellungen für den entsprechenden Applikation Pool im IIS konfiguriert werden.
Als erstes öffnet man den IIS Manager und wechselt zu den “Application Pools”
Um den verantwortlichen Application Pool zu finden kann jeder einzelne Pool durch Rechtsklick / Recycling zum Aufräumen gezwungen werden. Ist der verantwortliche Pool gefunden kann man die Recycling Vorgänge in den Eigenschaften automatisieren. Bsp: Alle 12 Stunden den Recycling-Vorgang starten.
Grüße
dn
Exchange 2010 und Outlook 2010 können das mit Bordmitteln, das Bild wird dabei in der Active Directory gespeichert.
Foto in Active Directory laden
Das Foto wird über die Exchange Management Shell importiert und zwar mit folgendem cmdlet.
Import-RecipientDataProperty -Identity user.name -Picture -FileData ([Byte[]]$(Get-Content -Path "C:\path\to\picture.jpg" -Encoding Byte -ReadCount 0))
Dieses cmdlet enkodiert das Bild und speichert die Daten im Active Directory Attribute “thumbnailPhoto”. Wenn man sich dieses Attribut jetzt ansieht (AC Users and Computers, ADSI Edit) dann sieht man die “Rohdaten”.
Achtung: Das Attribut “thumbnailPhoto” kann eine maximale Größe von 10k haben, das Bild sollte 96x96 Pixel messen um in Outlook optimal dargestellt zu werden.
Durch die Größenbeschränkung von 10k wird ein “überfüllen” der Active Direcotry verhindert, man sollte allerdings die Zunahme des Replikationstraffic bedenken wenn man GAL Fotos einführt, diese Zunahme ist temporär schließlich ändert man das Foto nicht täglich.
Damit ist das Foto zwar im Active Directory hinterlegt, allerdings ist in Outlook noch nichts davon zu sehen.
Schema Änderung
Dafür muss man eine kleine Schemaänderung durchführen, und zwar muss das Attribut “thumbnailPhoto” an den Globalen Catalog Server repliziert werden.
Dafür öffnet man das Active Directory Schema Snap-In in einer MMC und navigiert zum Attribut, in den Eigenschaften wird die Checkbox bei “Replicate this Attribute to the Global Catalog” gesetzt.
Offline Address Book aktualisieren
Jetzt muss nur noch das Offline Adressbuch aktualisiert werden um das Ergebnis gleich zu sehen, alternativ kann man auch warten bis das automatisch geschieht (default: 5 Uhr). Das OAB kann einfach über folgendes cmdlet aktualisiert werden:
Get-OfflineAddressBook | Update-OfflineAddressBook
Outlook lädt aktualisiert das Offlineadressbuch nur einmal in 24h also muss auch dort noch ein Download durchgeführt werden, dann ist das Foto schließlich sichtbar.
Hinweis: Das Offline Adressbuch wird durch die Fotos nicht größer, es wird nur ein Pointer auf das Foto im OAB gespeichert, nicht das Foto selbst. Das heißt allerdings auch dass ein Offline Client das Foto nicht sieht.
tom
]]>TEXT:
Protokollname: Application
Quelle: Microsoft-SharePoint Products-SharePoint Foundation
Datum: 20.07.2010 00:00:01
Ereignis-ID: 2137
Aufgabenkategorie:Integrität
Ebene: Fehler
Schlüsselwörter:
Benutzer: NETZWERKDIENST
Computer: Miami.****
Beschreibung:
SharePoint-Integritätsanalyse: Fehler. Die Datei 'Web.config' weist falsche Einstellungen für das Element 'requestFiltering' auf.
Für das requestFiltering-Element in der Datei 'web.config' muss das Attribut 'allowDoubleEncoding ' auf 'true' festgelegt sein, damit Dateinamen, die das Zeichen + enthalten, unterstützt werden. Außerdem muss es über ein untergeordnetes Element 'requestLimits' verfügen, dessen Attribute 'maxAllowedContentLength' auf '2147483647' festgelegt ist, um Konflikte mit Dateiuploads zu vermeiden.
Stellen Sie sicher, dass das Element 'requestFiltering' in der Datei 'web.config' vorhanden ist, dass das Attribut 'allowDoubleEncoding' auf 'true' festgelegt ist, dass ein untergeordnetes Element 'requestLimits' vorhanden ist und dass der Wert 'maxAllowedContentLength' auf '2147483647' festgelegt ist. Weitere Informationen zu dieser Regel finden Sie unter http://go.microsoft.com/fwlink/?LinkID=163442.
dem wird dieser Fix helfen:
Grüße
dn
In diesem Post werde ich das Upgrade von Exchange 2k3 zu 2010 beschreiben und einige bekannte Fehler und deren Lösung aufzeigen.
Upgrade
Um einen groben Überblick zu bekommen ob die Infrastruktur Exchange 2010 tauglich ist, empfehle ich den “Microsoft Exchange Pre-Deployment Ananlyzer” auszuführen. Dieses Tool führt einige Checks an der Struktur aus.
Sofern das nicht schon passiert ist, muss die Organisation im nativen Modus geschalten werden.
Jetzt muss das Schema geupdatet werden. Dazu startet man vom Schema Master folgende Setup Kommandos von der Exchange CD aus:
Setup /PrepareLegacyExchangePermissions
Setup /PrepareSchema
Setup /PrepareAD [/OrganizationName:YOUR_DOMAIN]
Setup /PrepareDomain
In Exchange Server 2003 wurde für einen Server, der keine Connectoren besitzt ein anderer Pfad für den Versand gesucht. Diese Option wird ab Exchange 2007 nicht mehr unterstützt. Um die Koexistenz zu gewährleisten muss dieses Feature auf allen Exchange 2003 Server deaktiviert werden
Mit folgendem Kommando werden die nötigen Requirements auf dem Exchange Server installiert
Add-WindowsFeature NET-Framework,RSAT-ADDS,Web-Server,Web-Basic-Auth,Web-Windows-Auth,Web-Metabase,Web-Net-Ext,Web-Lgcy-Mgmt-Console,WAS-Process-Model,RSAT-Web-Server,Web-ISAPI-Ext,Web-Digest-Auth,Web-Dyn-Compression,NET-HTTP-Activation,RPC-Over-HTTP-Proxy –Restart
Zudem beim Dienst NetTCPPortSharing den Starttyp auf Automatisch setzen:
Set-Service NetTcpPortSharing -StartupType Automatic
Installation Client Access Rolle
Als erstes wird die Rolle “Client Access” installiert
Wenn der Server z.B. über OWA erreicht werden soll muss noch die externe Adresse angegeben werden (Bsp: mail.contoso.com)
Zertifikate installieren
Der nächste Schritt besteht darin die Zertifikate einzufügen und zu registrieren. Über den Exchange Zertifikatwizzard kann ein neues Exchange Zertifikat erstellt werden:
Jetzt müssen noch alle erforderlichen Optionen angegeben werden bevor die Anforderung erstellt werden kann:
Die Anforderung kann jetzt gespeichert werden. Diese muss dann über die Zertifizierungsstelle eingereicht werden und man erhält sein Zertifikat. Nachdem das Zertifikat ausgestellt wurde kann es über die Console der Anfrage hinzugefügt werden. Jetzt muss man dem Zertifikat noch die entsprechenden Dienste zuweisen:
Installation Hub Transport Rolle
Jetzt wird die Rolle “Hub Transport” installiert.
Das Setup Programm weist darauf hin, dass es einen Connector benötigt um Mails von / zu den Exchange 2003 Servers zu senden. Es muss der Server ausgewählt werden, der zur gleichen Routinggruppe wie der Exchange Server 2010 zählt sofern mehrere 2003 Server in unterschiedlichen Standorten vorhanden sind.
Wenn das Microsoft Filter Pack nicht installiert wurde wird man darauf hingewiesen es nach zu installieren:
Damit Active Sync in einer Exchange 2003 / 2010 Umgebung weiterhin funktioniert, muss die Authentifizierung für die Virtual Directory auf integrierte Windows Authentifizierung geändert werden.
Zuerst muss der Hotfix KB937031 auf den Exchange 2003 Servern installiert werden um die entsprechende Einstellung setzen zu können.
Nachdem der Hotfix auf dem Exchange Server 2003 installiert wurde, lassen sich die Einstellungen für das ActiveSync virtuelle Verzeichnis ändern. Die Authentifizierung kann jetzt auf "Integrierte Windows-Authentifizierung" geändert werden
Installation Mailbox Rolle
Jetzt wird die Mailbox Rolle installiert.
Jetzt verfügt man über ein vollwertige Exchange 2010 Installation. Für den Betrieb des Servers müssen noch einige Einstellungen vorgenommen werden.
Offline Adressbuch
Das offline Adressbuch muss auf den Exchange 2010 verschoben werden. Dies kann über die Console unter den Organisationseinstellungen gemacht werden. Zudem muss die Einstellung für den Webverteilung aktiviert werden. (Ab Outlook 2007 wird das Adressbuch über die Webservices geladen)
Send Connector erstellen
Es wird ein neuer Send Connector erstellt, der für Exchange 2010 fungiert. Danach wird der alte Exchange 2003 Connector gelöscht.
Receive Connector konfigurieren
Damit der Exchange Server Mails annimmt, muss ein neuer Connector erstellt werden, der für den anonymen Zugriff freigeschalten wird.
Kompatibilität Outlook 2003
Outlook 2010, 2007 verwenden Standardmäßig die PRC Verschlüsselung, 2003 nicht. Bei Exchange Server 2010 werden per default nur verschlüsselte RPC Verbindungen angenommen. Dies kann jedoch mit folgendem Befehl über die Shell abgeschaltet werden:
Set-RPCClientAccess – Server –YOURSERVER –EncryptionRequired $false
Öffentliche Ordner, Free / Busy Informationen synchronisieren
Um die Öffentlichen Ordner auf Exchange 2010 zu verschieben müssen diese repliziert werden. Diese Einstellungen werden auf dem Exchange 2003 vorgenommen. Hierzu wird der Exchange Server 2010 als Replikationspartner den Ordnern “Offline Address Book” und “Schedule + Free Busy” hinzugefügt.
Nachdem die Informationen repliziert wurden kann das Replikat von den Exchange 2003 Servern entfernt werden.
Adresslisten konvertieren
Um die Exchange 2003 Adresslisten in Exchange 2010 bearbeiten zu können müssen diese erst konvertiert werden (Exchange 2003 benutzte LDAP Filter). Dies wird über die Shell gemacht.
Die Adresslisten können mit den folgenden Kommandos geupdatet werden:
Bsp: Adressliste Verwaltung die auf die Abteilung gefiltert wird
Set-AddressList "Verwaltung" -IncludedRecpients MailboxUsers
Set-AddressList "Verwaltung" -ConditionalDepartment Verwaltung
Addresspolicy updaten
Auch die Addresspolicy muss geupdatet werden, sonst erhält man folgende Meldung:
Das Update kann über folgenden Befehl gemacht werden:
Set-EmailAddressPolicy “Default Policy” –IncludedRecipients AllRecipients
Die Exchange Installation ist nun komplett und man kann beginnen die Mailboxen zu verschieben.
Wichtig: Nach der Installation sollte der Exchange BPA ausgeführt werden um sämtliche Einstellungen und Funktionen zu verifizieren.
Fehler
Während dem Upgrade bin ich auf mehrere Fehler gestoßen die ich hier kurz samt Lösung erläutere:
Fehler 1
Log Name: Application
Source: MSExchange MailTips
Date: 12.07.2010 15:40:53
Event ID: 14003
Task Category: MailTips
Level: Error
Keywords: Classic
User: N/A
Computer: EX2k10.***
Description:
Unable to create Group Metrics distribution share.
Share: GroupMetrics
Directory: C:\Program Files\Microsoft\Exchange Server\V14\GroupMetrics
Message: 00000842
Um diese Fehlermeldung zu beheben habe ich den Starttyp des Dienstes “Microsoft Echange Service Host” auf Automatic (Delayed Start) gesetzt
Fehler 2
Log Name: Application
Source: MSExchangeSA
Date: 12.07.2010 16:07:45
Event ID: 9323
Task Category: (13)
Level: Warning
Keywords: Classic
User: N/A
Computer: EX2k10.***
Description:
Entry 'Benutzer1' has invalid or expired e-mail certificates. These certificates will not be included in the offline address list for '\oGAL'.
- \Offline-EX2k10
Das bedeutet, dass Benutzer1 Fehlerhafte Zertifikate in AD besitzt. Diese müssen gelöscht werden (vorher in AD die erweiterten Eigenschaften einblenden).
Fehler 3
Log Name: Application
Source: MSExchangeSA
Date: 12.07.2010 16:14:01
Event ID: 9359
Task Category: (13)
Level: Warning
Keywords: Classic
User: N/A
Computer: EX2k10.***
Description:
OALGen truncated or dropped properties for entry 'Discovery Search Mailbox' in address list '\oGAL’ because they exceeded the configured size limits for the version 4 offline address list. The affected MAPI ids are: 8cd8.
- \Offline-EX2k10
Dieser Fehler kann ignoriert werden, er ist ab Design so.
Fehler 4
Log Name: Application
Source: MSExchange ActiveSync
Date: 15.07.2010 09:50:07
Event ID: 1053
Task Category: Configuration
Level: Error
Keywords: Classic
User: N/A
Computer: EX2k10.***
Description:
Exchange ActiveSync doesn't have sufficient permissions to create the "CN=Daniel Nitz,OU=***,OU=****,DC=***,DC=local" container under Active Directory user "Active Directory operation failed on **********. This error is not retriable. Additional information: Access is denied.
Active directory response: 00000005: SecErr: DSID-03151E04, problem 4003 (INSUFF_ACCESS_RIGHTS), data 0
".
Make sure the user has inherited permission granted to domain\Exchange Servers to allow List, Create child, Delete child of object type "msExchangeActiveSyncDevices" and doesn't have any deny permissions that block such operations.
Hier gibt es ein Rechte-Problem. Bei den User wurde wahrscheinlich in AD die Vererbung deaktiviert.
Fehler 5
Fehler beim Download des Offline Adressbuches:
Dieser Fehler kann behoben werden, indem im IIS des Exchange Servers im virtual Directory “OAB” die Einstellung gesetzt wird, dass nicht mehr SSL erzwunden werden muss.
Viel Spaß bei der Migration zu Exchange Server 2010!
Grüße
dn
Wer das Vergnügen hat die beiden genannten Systeme zum kommunizieren zu bewegen wird sich über die üppige Dokumentation freuen die es zu den Vorgängerprodukten gibt… die hilft so gut wie gar nicht weiter.
Ich gehe davon aus das RSA Authentication Manager 7.1 Sp3 bereits installiert wurde, ein Realm bzw. Security Domain eingerichtet wurde. Man meldet sich also an der RSA Security Console an und erstellt einen neuen “Authentication Agent”. Dazu klickt man auf Access, Authentication Agents, Add New.
Jetzt müssen die Felder ausgefüllt werden, also der Hostname des TMG Servers (Array), die IP Adressen die dazu gehören (natürlich nur die vom betreffenden Netzwerk). Bei Agent Type habe ich Standard Agent verwendet und das funktioniert, habe leider keine Dokumentation gefunden aus der hervorgeht welchen Typ man verwenden sollte. Bei “Agent may be Accessed by” kann konfiguriert werden ob sich alle (aktiven) Benutzer über den Authentication Agent anmeldn können oder nur Mitglieder bestimmter Gruppen.
Anschlißend muss man nur noch auf Save klicken und der Authentication Agent ist erstellt.
Jetzt braucht man eine Konfigurationsdatei für TMG Server. Also wieder auf Access, Authentication Agents klicken und dieses mal “Genereate Configuration File” wählen.
Wenn man dann auf “Generate Config File” klickt, erhält man eine Zip Datei die eine Datei sdconf.rec beinhaltet. Diese Datei muss auf allen TMG Array Mitgliedern in folgende Pfade kopiert werden.
Achtung: Die Datei muss unbedingt an beiden Orten vorhanden sein, sonst kommt es zu Fehlern wie: “106: The Web Server is busy. Try again later.”
Die RSA betreffende Konfiguration ist damit eigentlich schon abgeschlossen. Also sehen wir uns die Veröffentlichung am TMG an.
Es wird einfach eine normale Web Veröffentlichung konfiguriert, beim erstellen des Web Listeners ist auf folgendes Acht zu geben:
Die Authentifizierung erfolgt über ein HTML Formular, wenn hier noch “Collect addinoal delegation in the form” ausgewählt wird kann der Benutzer zusätzlich zum Username und RSA Passcode noch sein Active Directory Kennwort eingeben und TMG leitet es an den Web Server weiter. Dafür muss dann bei der Veröffentlichungsregel die Authentication Delegation auf Basic gesetzt werden und der Web Server dahinter muss natürlich Basic Authentication akzeptieren.
Das Integrierte HTML Formular von TMG sieht dann je nach Einstellung so aus. Will man OWA veröffentlichen kann man verwendet man natürlich besser den Assistant “Publish Exchange Web Client Access”. Achtung: Auf den Client Access Servern muss Basic Authentication aktiviert werden (Server Configuration, Client Access, owa).
Achtung: Mutlihomed TMG
Forefront TMG wird in den allermeisten Konfigurationen mit mehreren Netzwerkkarten installiert, ist ja schließlich eine Firewall. Dadurch weiß TMG (genauer gesagt ACEClient) nicht über welche Netzwerkkarte er den RSA Server erreichen kann, man sieht im Event Log die Warnung: “Multihomed host detected; Primary IP assumed is : x.x.x.x”. Die Event ID ist 1012 die Source ACECLIENT.
Das kann man beheben indem man zu Schlüssel HKLM\Software\SDTI einen Schlüssel ACIClient hinzufügt. Dieser bekommt dann einen String Value mit dem Namen “PrimaryInterfaceIP”. Der Wert entspricht der IP Adresse, des TMG, über die der RSA Server erreicht werden kann.
Viele Grüße
tom
]]>Die Verarbeitung scheint sehr gut, das Gerät fühlt sich hochwertig an. Mit 730 Gramm ist das 3G Modell allerdings ziemlich schwer.
Das Display ist sehr scharf, wie es in der Sonne ist kann ich nicht sagen, im Raum ist es jedoch ausreichend hell und klar. Wird das IPad auf die Seite gedreht, dreht sich das Bild mit, sowas kennt man ja schon.
Die Bedienung finde ich innovativ, ist ja auch von Apple ;) Der EBook Reader ist einfach zu bedienen, sonstige Features wie IPod und Web Browser sind natürlich super und bereiten dem Benutzer viel spaß. Sogar Filme kann man mit dem Ding anschauen.
Für mich wäre das Gerät dennoch nichts, ich habe keinen wirklichen Verwendungszweck und nur zum Rumspielen ist Preis (in dem Fall 702€) einfach zu hoch.
Das Beste zum Schluss: als ich den Browser öffnete kam als Startseite… na was schon… Bing zum Vorschein! Da konnte ich mir ein Grinsen nicht verkneifen.
so long,
tom
Auch MAC Clients können mit Exchange 2010 arbeiten. Dafür gibt es entweder den Microsoft Entourage Client oder den integrierten MAC Mail Client. Entourage muss in der Web Services Edition verwendet werden, da Exchange 2010 kein WebDAV mehr unterstützt, die aktuelle Version von MAC Mail (Snow Leopard) macht das von Haus aus.
Will man allerdings einen Anhang größer als ca. 12MB verschicken meckert sowohl Entourage als auch MAC Mail. Entourage bringt folgende Fehlermeldung: “HTTP-Fehler: Die Anforderung kann vom Server nicht verarbeitet werden”.
Man kontrolliert also erstmal die Größenbeschränkungen der betreffenden Mailbox, die der Send und Receive Connectoren und in der Transport Konfiguration, am schnellsten geht das wohl in der Management Shell mit folgenden cmdlets:
Sind die Werte an diesen Stellen ok, dann kann der User mit dem Microsoft Office Outlook Client den Anhang ohne Probleme senden, nur mit Entourage bzw. Mac Mail tritt das Problem auf.
Das Problem liegt am Exchange Web Service, das ist eine ASP.NET Applikation und verwendet daher Konfigurationsdateien aus der IIS Konfiguration. Diese können in weder in der EMS noch in EMC gesehen bzw. geändert werden.
Nun gibt es leider keine ausreichende Dokumentation von Microsoft, also versuche ich hier alles, was in den tiefen des Internet herumschwirrt, zusammenzufassen.
Backup
Achtung: Vor der Bearbeitung von Konfigurationsdateien unbedingt ein Backup der Datei erstellen!!
EWS
Treten die Probleme nur im Zusammenhang mit EWS auf reicht folgende Änderung der Konfiguration am Client Access Server (bzw. an alles CAS wenn mehrere im Einsatz sind):
OWA
Dieses Problem gibt es auch in Outlook Web App, man kann standardmäßig keine Anhänge über 30MB hochladen. Auch hier ist wieder eine Einstellung in der web.config schuld. OWA ist eine ASP.NET Anwendung und die maximale Größe der zu übertragenden Daten wird mit dem Parameter maxRequestLength konfiguriert.
Hier wird also diese Einstellung interessant, in der web.config von OWA ist diese nämlich per Default auf 30000 gesetzt.
Für dieses Problem gibt es sogar einen Artikel im TechNet: Configure Maximum Message Size in Outlook Web App
Tipp: Man kann mit der PowerShell ganz einfach Werte in Byte und wieder Retour konvertieren. Einfach mal 50mb eintippen und versuchen.
Naja, ich hoffe ich kann damit einigen weiterhelfen.
Grüße
tom
]]>Datensicherung ist in Exchange 2010 ein umfangreiches Thema. Für die Widerherstellung von einzelnen Elementen (Mails, Kontakte…) bietet sich z.B. der Dumpster an, dazu aber ein anderes Mal mehr. In diesem Beitrag möchte ich Datensicherung im klassischen Sinn behandeln, also Backup von Servern und Datenbanken.
Backup Software
Exchange 2010 verwendet den Windows eigenen VSS Dienst, kann also nur mit einer Backup Applikation gesichert werden die diesen Service unterstützt. Für Tests eignet sich natürlich Windows Backup von Server 2008R2, will man das Ganze in einer größeren Umgebung betreiben empfiehlt sich der Data Protection Manager.
System State Backup
Jeder Server sollte regelmäßig gesichert werden, dazu gehört ein Backup des System Volumes und des System State. System State Backups enthalten die Registry sowie die Boot Dateien und COM+ Class Registration Datenbank. Je nach installierter Serverrolle (ADDS, IIS…) werden weitere Informationen gesichert.
Mit einem System State Backup kann der Zustand des Servers (und der installierten Rollen/Applikationen) zum Zeitpunkt des Backups widerhergestellt werden.
Single Server Backup
Wenn alle Rollen auf einem Server installiert sind müssen der System State sowie die Volumes mit den Datenbanken und Logdateien gesichert werden.
Backup von Client Access Servern
Auf CA Servern befinden sich keine Daten die speziell gesichert werden müssen, diese Serverrolle sollte ohnehin ausfallsicher designed werden, da der Clientzugriff im Fehlerfall sonst nicht mehr möglich ist. Die Konfiguration kann aus dem System State Backup widerhergestellt werden.
Allerdings sollte man nicht vergessen das IIS Log Verzeichnis (C:\inetpub\logs\LogFiles\W3SVC1) zu überwachen bzw. alte Logs kontinuierlich zu löschen.
Backup von Hub Transport Servern
Es sind keine Daten auf Hub Transport Servern vorhanden ohne die eine Exchange Umgebung nicht widerhergestellt werden könnte, allerdings ist es für spätere Analyse Sinnvoll die Message Tracking Logs sowie die Protocol Logs zu sichern. Diese befinden sich im Exchange Installationsordner unter \Transportroles\Logs und können einfach auf File-Ebene gesichert werden.
Die Konfiguration des Transport Servers wird im Active Directory gespeichert, auch diese Serverrolle sollte ausfallsicher designed werden.
Backup von Edge Transport Servern
Edge Transport Server speicher die Konfiguration im Active Directory, im Fehlerfall kann man einfach den Server neu aufsetzen und die EdgeSync neu einrichten. Alternativ kann man mit Cloned Configuration arbeiten, also die Konfiguration exportieren und auf dem neuen Server wieder importieren, dazu mehr in einem anderen Beitrag. Die Logs die auf Hub Transport Servern gesichert werden sollten befinden sich bei Edge Transport Servern an der selben Stelle und sollten aus dem selben Grund gesichert werden.
Backup von Unified Messaging Servern
Die für die Konfiguration relevanten Informationen werden in der Active Directory gespeichert, einzig die Audio Prompts können auf File- Ebene gesichert werden, diese befinden sich im Exchange Installationsordner unter \UnifiedMessaging\Prompts.
Backup von Mailbox Servern
Auf den Servern auf denen die Mailbox Rolle installiert ist befinden sich die Datenbank und Transaction Log Files, diese müssen auf jeden Fall gesichert werden. Wird eine Sicherung mit Windows Backup durchgeführt muss jeweils das gesamte Volume auf dem die Datenbank bzw. Log Files liegen ausgewählt werden. Von diesen Volumes muss ein “Full VSS" Backup gemacht werden, nur so merkt Exchange dass die Daten gesichert wurden und löscht die entsprechenden Log Files.
Backup der Active Directory
Exchange Server speichert viele Daten und Einstellungen in der Active Directory und ist extrem Abhängig von einer funktionstüchtigen Umgebung. Daher sollten natürlich auch Domain Controller regelmäßig gesichert werden. Hierfür reicht ein System State Backup aus, dieses enthält alle Daten/Einstellungen der AD.
Backups und DAG
Sind die Exchange Server die gesichert werden sollen Mitglieder einer Database Availability Group (DAG) ändern sich die Gründe für eine Datensicherung. Da es bis zu 16 Kopien einer Mailbox innerhalb der DAG geben kann, ist das Backup nicht mehr der einzige Ausweg wenn die aktive Kopie der Datenbank offline geht. Fällt ein Mitglied einer DAG aus, werden die Datenbanken die auf diesem Server aktiv waren vom Server mit der nächst-höheren Priorität übernommen (natürlich muss es eine Kopie der Datenbank dort geben). So ist man bei einem Ausfall eines Mailboxservers gut gerüstet, allerdings kann es auch zu einem Datenbankfehler kommen, dafür gibt es aber folgende alternative zum Backup.
Datenbank Kopien werden standardmäßig aktuell gehalten, d.h. eine Änderung wird sofort an alle Mitglieder der DAG repliziert. Man kann allerdings eine Verzögerung (ReplayLagTime) konfigurieren und so z.B. auf einem Server ältere Versionen der Datenbanken halten. Tritt nun ein Datenbankfehler auf, kann die ältere Datenbank verwendet werden ohne umständliches Restore von Tape oder woher auch immer.
Ein weiterer Effekt des Backups ist das löschen der Log Files, sollte man also auf regelmäßige Backups verzichten muss man wohl oder übel Circular Logging für die Datenbanken aktivieren um ein überlaufen der Festplatten zu verhindern.
Diese neue Möglichkeit der Hochverfügbarkeit bringt sicher viele Vorteile, jedoch sollte man meiner Meinung nach nicht auf ein Backup verzichten. Ich empfehle regelmäßige System State Backups von allen Servern. Die Datenbanken würde ich auf jeden Fall auch sichern und das Backup und Restore Szenario ausreichend testen und dokumentieren!
Soweit mal zum Thema Backup, viele Grüße
tom
Problem 1 – Fehler 7043 (Sharepoint Foundation) im EventLog Anwendung
Lösung: Im Ordner C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\CONTROLTEMPLATES befindet sich die Datei SearchArea.ascx. Diese Datei wird in der Version 2010 nicht benötigt und kann umbenannt werden (Bsp: SearchArea.ascx.old)
Problem 2 – Fehler 7009 und 7000 (Service Control Manager) im EventLog System
Lösung: Es kann passieren, dass der Dienst “Claim to Windows Token Service” beim Systemstart nicht starten kann. Sobald der Start-Typ von “Automatisch” auf “Automatisch (Verzögerter Start)” gesetzt wird, startet der Dienst normal, jedoch ein wenig später als die anderen Dienste.
Problem 3 – Fehler 6398 und 5586 (Sharepoint Foundation) im EventLog Anwendung
Lösung: Sharepoint Zentraladministration öffnen und zum Punkt Sicherheit wechseln. Im Menüpunkt Dienstkonten konfigurieren den richtigen Webanwendungspool auswählen und das entsprechende Konto angeben. Mit OK bestätigen sodass das Konto nochmal registriert wird.
Problem 4: Backup der Sharepoint Farm
Wenn ihr Versucht ein Backup der Sharepoint Farm zu erstellen, bekommt ihr den Hinweis, dass der Verwaltungsdienst angehalten wurde.
ACHTUNG: Es geht auch noch schlimmer: Wenn ihr wie ich eure Sharepoint Farm über das Befehlszeilentool stsadm.exe sichert, sind die Menüelemente auf der Sharepoint Webseite während und nach der Sicherung gesperrt. Wenn ihr die Berechtigungen prüft werdet ihr sehen, dass ihr nicht mehr über ausreichend Berechtigungen verfügt um irgendwas an der Webseite zu ändern bzw. hochzuladen zu löschen usw. Auch könnt ihr die Eigenschaften der Webseite nicht mehr öffnen oder bearbeiten.
Lösung: Das Problem lässt sich durch einen ganz einfachen Handgriff beheben. Nach der Installation ist der Dienst “Sharepoint 2010 Administration” auf Start-Typ Manuell gesetzt und somit nicht aktiv. Ändert das Startverhalten des Dienstes auf Automatisch und ihr könnt wieder normal Backups ziehen und die Steuerelemente aktivieren sich nach der Sicherung wieder.
Viel Spaß beim Upgrade auf Foundation 2010, Grüße
dn
Das ist ein neues Sicherheitsfeature, welches den Browser zwingt die Datei nur zum Download anzubieten.
Das Sicherheitsfeature kann in der Sharepoint Zentraladministration deaktiviert werden.
Anwendungsverwaltung / Webanwendungen verwalten die entsprechende Webanwendungs auswählen, unter Allgemeine Einstellungen kann nun die Option “Dateiverarbeitung durch den Browser” auf Berechtigt gesetzt werden.
Nun können die Dateien wieder direkt aus der Bibliothek geöffnet werden.
Grüße
dn
Beispiel: Der Benutzer NETZWERKDIENST hat keine Berechtigung die Komponente mit der ID 000C101C-0000-0000-C000-000000000046 zu aktivieren
In diesem Fall muss dem Benutzer NETZWERKDIENST lediglich das Benutzerrecht gegeben werden um die jeweilige Komponente zu starten. Als erstes wird die Komponente über das Tool Komponentendienste gesucht.
Wenn ihr die Einstellungen der Komponente nicht ändern könnt, habt ihr selbst nicht die notwendigen Berechtigungen.
Die könnt ihr euch aber selber zuweisen indem ihr in der Registry unter HKEY_CLASSES_ROOT\AppID den Schlüssel mit der ID sucht und in den Berechtigungen der Gruppe Administratoren oder euch selbst den Besitz übertragt und das Recht Vollzugriff gebt.
Danach lassen sich die Einstellungen der Komponente ändern und ihr könnt den jeweiligen Benutzer die erforderlichen Rechte geben.
Grüße
dn
%localappdata%\microsoft\Windows Virtual PC\options.xml
In dieser Datei tauschen wir im Abschnitt dhcp enabled den Wert TRUE durch FALSE.
Nach dieser Änderung kann der Client IP Adressen vom aufgesetzten DHCP Server empfangen.
Grüße
dn
Das neue Theme ist in Bearbeitung, wird in den nächsten Tagen Online sein.
Bis dahin, stay tuned!
]]>Ist ein Edge Transport Server in der Exchange Organisation vorhanden, kann man diese persönlichen Listen direkt an der Edge, also an der ersten Möglichkeit anwenden und so die Effizienz steigern und false positives verringern. Ist die SafeList Aggregation aktiviert werden sichere Mails dem Empfänger direkt zugestellt, ohne von weitern Filter Agents geprüft zu werden. Außerdem werden die blockierten Absender bei der ersten Möglichkeit blockiert.
Sichere Absender sind alle (E-Mail Adressen oder Domains) die in der entsprechenden Liste eingetragen sind. Outlook Kontakte und E-Mail Adressen an die der Benutzer eine Nachricht sendet können optional ausgewählt werden.
Die Informationen die der Benutzer in Outlook konfiguriert werden als sogenannte SafeList Collection auf dem Mailbox Server des Benutzers gespeichert. Eine SafeList Collection kann bis zu 1024 Einträge beinhalten.
Das Update-SafeList cmdlet aktualisiert diese Collection im ActiveDriectory, dort werden die Informationen (Hashes) in den Attributen msExchSafeSenderHash, msExchSafeRecipientHash, und msExchBlockedSendersHash gespeichert.
Über den EdgeSync Service werden die Attribute dann mit der ADLDS Instanz am Edge Transport Server synchronisiert (one-way).
Will man also die SafeList Collection eines einzelnen Users aktualisieren verwendet man “update-safelist mail.box”.
Sollen die Collections aller Mailboxen aktualisiert werden dann kann man das z.B. so machen: Get-Mailbox | Update-SafeList. Um die Edge Synchronisierung anzustoßen (Testumgebung) kann man noch Start-EdgeSychronization verwenden.
Wenn es sich um eine größere Organisation handelt werden mit Get-Mailbox womöglich nicht alle Mailboxen zurückgegeben, dafür eignet sich folgende Kommandos.
Set-AdServerSettings -ViewEntireForest $true
Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails UserMailbox | Update-Safelist
Wenn man diese beiden Kommandos in einer Datei speichert kann man einfach einen geplanten Task erstellen der die SafeList automatisch aktualisiert.
Achtung: Damit die SafeList Aggregation funktioniert muss der Content Filtering Agent am Edge Transport Server laufen. Das kann mit “Get-ContentFilterConfig” einfach überprüft werden.
tomt
]]>TPM: Hierbei wird der Besitzerschlüssel des TPM Bausteins in AD DS gespeichert
BitLocker: Hierbei handelt es sich um den Wiederherstellungsschlüssel für die betreffende Partition
Schritt 1: AD DS zum speichern von TPM Besitzerschlüssel vorbereiten
Als erstes muss AD DS für das speichern des TPM Besitzerschlüssels konfiguriert werden. Sofern Server 2003 als DC verwendet wird, muss vorher noch ein Schema-Update durchgeführt werden. Für die Betriebssysteme Server 2008 und Server 2008 R2 ist dies nicht notwendig, da diese die Erweiterung bereits mitbringen.
Damit der Client den TPM Besitzerschlüssel in AD DS speichern kann, muss das Script Add-TPMSelfWriteACE.vbs auf dem DC ausgeführt werden. Dieses Script setzt die Berechtigungen des Attributs msTPM-OwnerInformation so, dass der Client seinen TPM Schlüssel einfügen kann.
ACHTUNG: Sollte man nicht das Server-Betriebssystem in englischer Sprachversion verwenden, so muss das Script noch angepasst werden: Anstatt die Berechtigung “SELF” zu setzen, muss diese z.B. für Deutsch in “SELBST” ersetzt werden. Sonst läuft das Script nicht erfolgreich durch.
Schritt 2: Setzen der GPO’s
Da nun Active Directory zum speichern von TPM Schlüsseln vorbereitet ist, setzten wir die Gruppenrichtlinien und weisen den Client an, die Wiederherstellungsschlüssel in Active Directory zu speichern.
BitLocker
Computerkonfiguration / Administrative Vorlagen / Windows-Komponenten / BitLocker Laufwerksverschlüsselung / Betriebssystemlaufwerke
”Festlegen, wie BitLocker-geschützte Betriebssystemlaufwerke wiederhergestellt werden können”
Anhand dieser Richtlinie weißen wir den Client an die Wiederherstellungsinformationen in der Active Directory zu speichern. BitLocker kann erst aktiviert werden, sobald die Widerherstellungsinformationen in Active Directory hinterlegt sind.
TPM
Computerkonfiguration / Administrative Vorlagen / System / Trusted Platform Module-Dienste
“TPM-Sicherung in Active-Directory-Domänendienste aktivieren”
Anhand dieser Richtlinie wird der Client angewiesen den TPM Besitzerschlüssel in der Active Directory zu speichern.
Schritt 3: TPM am Client initialisieren
Wenn der TPM am Client initialisiert wird, wird ein Besitzerschlüssel generiert.
In Active Directory werden die Informationen im Attribut msTPM-OwnerInformation mitgeschrieben.
Schritt 4: Verwaltungsprogramm für BitLocker-Schlüssel installieren
Server 2008 liefert eine zusätzliche Registerkarte für Active Directory um BitLocker-Schlüssel anzuzeigen. Vorher muss jedoch das Feature Verwaltungsdienstprogramm für BitLocker aktiviert werden.
Nach der Aktivierung findet man eine neue Registerkarte in den Computerkonten.
Schritt 5: BitLocker aktivieren und Wiederherstellungsschlüssel einsehen
Nun können wir am Client BitLocker für das Volume aktivieren, welches das Betriebssystem enthält.
Nach der Aktivierung kann der Wiederherstellungsschlüssel im jeweiligen Computerkonto in der Registerkarte “BitLocker-Wiederherstellung” eingesehen werden.
Grüße
dn
Im Großen und Ganzen habe ich die Migration genau gleich gemacht. Also WSUS auf dem neuen Server installiert, WSUS Content kopiert und mit "wsutil export datei.cab datei.log" und "wsutil import datei.cab datei.log" die Updates importiert. Allerdings wollte ich die Einstellungen nicht manuell übernehmen, dafür gibt es WSUSMigrate.
Man findet das Tool im WSUS TechCenter unter API Samples and Tools. Installiert man diese, erhält man diverse zusätzliche Tools für WSUS, unter anderm WSUSMigrationImport und WSUSMigrationExport mitsamt kurzem HowTo.
Also habe ich diese Tools auf dem alten sowie auf dem neuen Server installiert und mit "WSUSMigrationExport datei.xml" die Gruppen und Approvals exportiert. Auf dem neuen Server kann man dann mit Parametern entscheiden welche Einstellungen man importieren möchte. Die verfügbaren Parameter für WSUSMigrationImport sind:
Man kann auch entscheiden was mit den Gruppen passieren soll die es auf dem Zielserver eventuell schon gibt, dafür gibt es diese Parameter:
Noch ein Beispiel für den Import Befehl:
"WSUSMigrationImport datei.xml All None" -> Importiert alle Gruppen und Approvals und verändert bestehende Gruppen auf dem Zielserver nicht.
so long!
tomt
Lösung: Damit die Ressource wieder gebucht werden kann, muss in der Registry des PC’s wo Outlook 2010 installiert ist, folgender Schlüssel angelegt werden:
HKCU\Software\Microsoft\Office\14.0\Outlook\Options\Calendar
REG_DWORD
EnableDirectBooking
1 (HEX)
Grüße
dn
Im Unicast Mode tauscht jeder NLB Knoten seine MAC Adresse mit der Cluster MAC Adresse aus, d.h. alle Knoten haben die gleiche “virtuelle” MAC Adresse.
Dieses Konfiguration zwingt den Switch zu “suboptimalem” Verhalten, da die selbe MAC Adresse über mehrere Switchports erreichbar ist, kann der Switch die Adresse nicht “lernen” also sie nicht in seine MAC Address Table aufnehmen und an ein Switchport binden. Alle Pakete an diese MAC Adresse werden vom Switch über alle Ports geflutet. Das führt zu überflüssiger Last am Switch und im gesamten Netzwerk.
Ein weiteres Problem ist dass die einzelnen NLB Knoten so nicht mehr miteinander kommunizieren können, dafür wird eine zusätzliche Netzwerkkarte benötigt. Aus diesem Grund wird Unicast Mode mit nur einer Netzwerkkarte nicht empfohlen.
Das Fluten von Paketen kann durch erstellen eines eigenen VLAN für die NLB Knoten vermindert werden. So werden Pakete nur innerhalb dieses VLANs geflutet und nicht über den ganzen Switch.
Beim Multicast Mode wird jedem Konten eine Multicast MAC Adresse hinzugefügt, so dass alle Knoten mit zwei Layer2 Adressen ausgestattet sind. Das ermöglicht dem Switch das “lernen” der echten MAC Adressen und den einzelnen Knoten eine Kommunikation untereinander.
Damit ein Multicast Cluster auch erreichbar wird müssen statische ARP Einträge am Switch konfiguriert werden, denn Standardmäßig wird die Auflösung von Unicast IPs in Multicast MAC Adressen blockiert. So werden Pakete an die Multicast Adressen nur an die festgelegten Ports weitergeleitet.
Cluster im Multicast Mode können auch mit nur einer Netzwerkkarte betrieben werden, aus Performancegründen und verbessertem Management empfehle ich aber die Verwendung zweier Netzwerkkarten.
Wie bereits oben beschrieben muss im Unicast Mode jeder Knoten zwei Netzwerkkarten besitzen. Im Multicast Mode reicht eine Karte, allerdings ist es eine “Best Practice” zwei zu verwenden.
Als erstes muss das Feature installiert werden, ich habe hier deutsch Server, also heißt das Ding: Netzwerklastenausgleich. Das geht entweder über die GUI, oder mit “servermanagercmd –i nlb”. Auch mit PowerShell kann man Features installieren, und zwar mit dem Add-WindowsFeature cmdlet.
Dann werden die beiden Netzwerkkarten konfiguriert. Eine wird die Netzwerkkarte für das LAN, sie wird mit IP, Gateway und DNS Server konfiguriert. Ich habe sie in LAN umbenannt. Die zweite Netzwerkkarte wird der dedizierte Adapter für NLB. Diese wird nur mit einer IP Adresse konfiguriert.
Ich verwende im LAB 192.168.1.10 als Cluster Adresse. 192.168.1.11 und 192.168.1.12 als Adressen für die Netzwerkkarten “LAN”. Für die NLB Adapter verwende ich 192.168.1.21 und 192.168.1.22.
Wichtig ist dass man auf die Bindings achtet, d.h. der Adapter LAN muss der erste in der Auswahl sein. Die Bindings werden in den Erweiterten Netzwerkeinstellungen konfiguriert.
Jetzt wird mit dem NLB-Manager der Cluster erstellt. Dazu wird auf Cluster und Neu geklickt, dann wird der erste Knoten hinzugefügt:
Wichtig: Der dedizierte NLB Adapter wird verwendet!
Als dedizierte Adresse wird als 192.168.1.21 angezeigt, auf dieser NIC wird NLB aktiviert und die Cluster Adresse gebunden.
Im nächsten Fenster wird die Cluster Adresse festgelegt, ich verwende wie oben beschrieben 192.168.1.10/24.
Der Modus, also Unicast oder Multicast wird im nächsten Fenster konfiguriert. Außerdem wird der FQDN für den Cluster hier gesetzt. Mein Testcluster heißt nlb.ntsystems.it und läuft im Multicast Mode.
Jetzt werden noch die Port Rules konfiguriert, ich akzeptiere vorläufig mal die Standardeinstellungen, dazu aber später mehr.
So, jetzt habe ich NLB mal soweit eingerichtet. Natürlich muss noch der zweite Knoten hinzugefügt werden. Dazu einfach auf den Clusternamen klicken und Host hinzufügen wählen. Wichtig auch hier wieder dass die Netzwerkkarte NLB verwendet wird, also die dedizierte Adresse 192.168.1.22.
Ist der zweite Knoten hinzugefügt und der Status im NLB Manager auf “Converged” oder “Zusammengeführt” ist der Cluster erstellt.
Allerdings ist die Konfiguration damit noch nicht fertig. Die Cluster IP ist noch nicht erreichbar. Das hat zwei Gründe, erstens muss am Switch noch der statische ARP Eintrag erstellt werden (Cisco: arp 192.168.1.10 03bf.c08a.010a). Außerdem muss IP Forwarding noch konfiguriert werden, dazu brauchen wir folgenden netsh Befehl: “netsh int ipv4 set int “NLB” forwarding=enabled”
Als letzter Schritt bei der Konfiguration des Clusters werden die Port Rules konfiguriert. Standardmäßig werden einfach alle Ports (0-65535) egal ob TCP oder UDP an alle Clusterknoten weitergeleitet. Nun um die Angriffsfläche oder( “Attack Surface”) zu verringern und die Konfiguration zu optimieren sollten nur diese Ports weitergeleitet werden die auch wirklich benötigt werden. Ein weiterer Vorteil von einer eigenen Regel für jedes Protokoll ist dass man die Affinität so für jedes Port einstellen kann.
Mein NLB Cluster soll ein Webserver werden, also werde ich nur die Ports 80 und 443 weiterleiten, ich möchte die Affinität für beide Ports “Einfach” haben, es wird also die IP Adresse jedes Clients verwendet um die Affinität zu steuern.
Ich lösche also die Default Port Rule und erstelle zwei neue.
Die Port Rules werden entweder in den Clustereigenschaften konfiguriert, oder direkt beim erstellen des Clusters.
Jetzt erkennen wir einen weiteren Vorteil der Konfiguration mit zwei Netzwerkkarten: Der NLB Manager kann weiterhin mit beiden Knoten kommunizieren, obwohl ich für die Protokolle die verwendet keine Port Rules erstellt habe. Der NLB Manager verwendet für die Konfiguration die dedizierten Adressen.
Hier die einzelnen Schritte nochmal im Überblick.
so long!
tomt
Das Problem hängt hierbei mit der “Windows Internal Database” zusammen.
Lösung: Vor der Installation folgendes Kommando eingeben:
ocsetup.exe "WSSEE" /quiet /norestart /x:" /lv* C:\bak.log
Grüße
dn
Lasst die Leitungen glühen!! :)
]]>Um Programme deinstallieren zu können, öffnen wir die Registrierung. (Üblicherweise Remoteregistrierung von einem Client aus). Unter
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
werden die installierten Programme gelistet.
Wenn man den Wert im Schlüssel “UninstallString” in der Kommandozeile des Servers eingibt, wird der Windows Installer gestartet und deinstalliert das Programm.
Grüße
dn
Inzwischen die Lösung für folgendes Problem:
ActiveSync funktioniert mit Exchange 2010 nicht, Event ID: 1053 Source: MSExchange ActiveSync wird Protokolliert. Aus der Beschreibung des Fehlers erkennt man auch schon das Problem, fehlende Berechtigungen.
Exchange ActiveSync doesn't have sufficient permissions to create the container “CN” under Active Directory …
Active directory response: 00000005: SecErr: DSID-03152492, problem 4003 (INSUFF_ACCESS_RIGHTS), data 0
Make sure the user has inherited permission granted to domain\Exchange Servers to allow List, Create child, Delete child of object type "msExchangeActiveSyncDevices" and doesn't have any deny permissions that block such operations.
Also einfach die in der Fehlermeldung beschriebenen Berechtigungen setzen, oder die Vererbung auf dem Active Directory User Objekt wieder aktivieren.
Um Berechtigungen im Active Directory zu setzen muss unter “View” die Option “Advanced Features” aktiviert werden. Dann wird unter den Eigenschaften des Benutzers der Reiter “Security” angezeigt.
tt
]]>wdsutil /uninitialize-server
Dann den Ordner an seinen neuen Platz verschieben
wdsutil /initialize-server /reminst:Laufwerksbuchstabe\Ordner
Grüße
dn
Um den WSUS content auf einem anderen Volume zu verschieben, reicht es ein einfaches Command auszuführen:
wsusutil.exe movecontent “neuer Pfad” “Pfad für das entstehende LogFile”
Das Tool wsusutil befindet sich unter Program Files\ Update Services \ Tools
Database
Um die Datenbank zu verschieben gibt es 2 Möglichkeiten, einmal über das Management Studio oder über SQLCMD. In diesem Post gehe ich lediglich auf die Methode anhand des Management Studio ein
1) Datenbank über folgenden Pfad öffnen
\\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query
2) Datenbank trennen
Bevor die Datenbank getrennt wird, sollte der Dienst “update services” beendet werden. Die Datenbank SUSDB trennen und bei den Optionen muss noch angegeben werden, dass die Verbindungen mit getrennt werden sollen.
3) Datenbank auf neuem Volume kopieren
4) Datenbank wieder anfügen
Danach kann der Dienst “update services” wieder gestartet werden.
Grüße
dn
Forefront beantwortet somit keine Anfragen und jeglicher Zugriff von allen außer den Management Computern wird blockiert.
Das liegt daran dass Standardmäßig eine Lokale SQL Instanz also Logging Ziel konfiguriert ist, der SQL Dienst aber erst nach den Forefront Diensten startet… Und wenn Forefront nicht Protokollieren kann dann wird der Dienst beendet. Im Eventlog steht:
The Microsoft Forefront TMG Control service terminated with service-specific error %%278540.
Lösen lässt sich das Problem ganz einfach, entweder man stellt auf Logging to File
oder man Konfiguriert die vier oben genannten Dienste für verzögerten Start.
Über die Sinnhaftigkeit dieser Standardkonfiguration muss man wohl nichts mehr sagen…
tom
]]>Um dieses Problem zu beheben muss folgendes an den WDS Diensten verändert werden:
Server 2003 – 2008
In den Eigenschaften des WDS Servers muss der UDP Portbereich zu den Werten 50000 bis 65000 verändert werden.
Server 2008 R2
Wenn als OS Server 2008 R2 verwendet wird, kann auch die Option aktiviert werden, dass WDS automatisch nach verfügbaren WinSock Ports abfragt und nicht den vorkonfigurierten UDP Portbereich verwendet. Dazu muss der Schlüssel UDPPortPolicy unter HKLM\System\CurrentControlSet\Services\WDSServer\Parameters von 1 auf 0 gesetzt werden.
Grüße
dn
Das Problem ist, dass nach der Migration der Domäne die Benutzer-Berechtigungen für die Gruppe “Terminalserver-Lizenzserver” nicht aktualisiert werden.
Um die Benutzerberechtigungen für die bestehenden Benutzer manuell zu setzen müssen der Gruppe Terminalserver-Lizenzserver folgende Berechtigungen zugewiesen werden: “Terminalserver-Lizenzserver lesen” und ”Terminalserver-Lizenzserver schreiben”
Grüße
dn
Heute habe ich meinen Server neu gestartet und musste feststellen, dass er nicht mehr bootet. Als Fehlermeldung wurde angezeigt, dass der Bootloader fehlt (BOOTMGR is missing). Nach ein wenig Recherche über Bing (ehemals Google :) ) bin ich auf 2 Methoden gestoßen um das Problem zu beheben:
Methode 1: Den BCD Speicher neu erstellen
Nachdem Methode 1 bei mir nicht funktionierte und nach mehreren Anläufen über /fixboot usw. sich nichts getan hat, erinnerte ich mich, dass auf der Windows 7 DVD eine Reparaturoption für den Startvorgang enthalten ist.
Nachdem ich den Server mit der Windows 7 DVD gestartet hatte, wählte ich die Option “Startup Repair” aus und lies die Diagnose durchlaufen. Nach 1 Minute und einem Neustart später startete der Server wieder ordnungsgemäß.
ACHTUNG: Das funktioniert nicht für den Microsoft Hyper-V Server. Dieser hat eine andere Bootkonfiguration, die vor dem Start des Betriebssystems den Hypervisor startet.
Grüße
dn
Standardmäßig ist am Edge Transport Server der “Attachment Filter Agent” aktiv, dieser ist dafür verantwortlich, potentiell gefährliche Anhänge zu filtern. Will man also z.B. eine .exe Datei verschicken muss man diesen Agent deaktivieren. Das wird auf dem Edge Transport Server gemacht und zwar per PowerShell.
Disable-TransportAgent -Identity "Attachment Filter agent"
Ich schlage allerdings vor dieses Sicherheitsfeature nicht auszuschalten. Man kann diverse Einstellungen vornehmen, so kann z.B. festgelegt werden dass ein unsicherer Anhang nicht entfernt wird sondern das Mail direkt “rejected” wird.
Man kann die Attachment Filter Einträge über folgendes cmdlets selbst bearbeiten.
Add-AttachmentFilterEntry -Name <FileName> -Type FileName
Add-AttachmentFilterEntry -Name <MIMEContentType> -Type ContentType
Außerdem kann man das Verhalten des Attachment Filter Agent festlegen und zwar über das set-AttachmentFilterListConfig cmdlet
Set-AttachmentFilterListConfig -Action -Reject -RejectResponse "Versenden von Mails mit unsicheren Anhängen nicht erlaubt!"
Genauere Syntax und Infos zu den Parametern findet man im TechNet:
Set-AttachmentFilterListConfig
Add-AttachmentFilterEntry
na dann, schönes Wochenende!
tom
Grüße
dn
1) WSUS auf dem Zielserver installieren
2) Einstellungen manuell vom Quellserver zum Zielserver übernehmen
3) Mit NTBackup das Verzeichnis WSUSContent vom Quellserver sichern (Kopieren ist auch möglich)
4) Daten mit NTBackup auf dem Zielserver in den entsprechenden Ordner wiederherstellen
5) Metadaten vom Quellserver exportieren
6) Metadaten zum Zielserver importieren
Grüße
dn
Nach einiger Zeit wunderte ich mich, dass das Internet nicht mehr funktioniert. Als Gateway betreibe ich eine ISA Server 2006, der Proxy wird über WPAD automatisch konfiguriert.
Windows Server 2008 besitzt für DNS ein neues Sicherheitsfeature, welches WPAD nicht zulässt (DNS Global Query Blocklist).
dnscmd /info /enableglobalqueryblocklist –> zeigt ob das Sicherheitsfeature aktiv ist. 1 = True, 0 False
dnscmd /config /enableglobalqueryblocklist 0 –> schaltet das Sicherheitsfeature aus
Wenn das Sicherheitsfeature abgeschaltet wird, muss der DNS Server noch neu gestartet werden.
Grüße
dn
Als erstes muss die ID der Netzwerkadapter ermittelt werden
wmic nicconfig get Description,SettingID
Danach erhält man eine Liste mit den Adaptern und deren ID
Nun beginnt die Arbeit in der Registry: Zunächst muss der Schlüssel Bind unter
HKEY_LOCAL_MACHINE\system\currentcontrolset\services\lanmanserver\
linkage
geöffnet werden. Hier erhält man eine Liste mit den Netzwerkadaptern und ihren Bindungen zum Protokoll der “Datei und Druckerfreigabe”.
Der nächste Schritt besteht darin, die Bindungen aufzuheben, indem man alle Zeilen wo die entsprechende Adapter-ID vorkommt löscht.
Änderungen werden nach einem Reboot aktiv.
Anbei noch eine Liste mit den Protokollen und ihren Schlüsseln:
File and Printer Sharing: LanmanServer
Client for MS Networks: LanmanWorkstation
Link-Layer Discovery Mapper I/O Driver: lltdio
Link-Layer Topology Discovery Responder: rspndr
TCP/IP v4: tcpip
TCP/IP v6: tcpip6
Grüße
dn
Betroffen sind folgende Produkte:
Microsoft hat dazu den KB-Artikel 974598 und einen Hotfix veröffentlicht.
Um den Server wieder flott zu bekommen, muss die Virtualisierungs-Technologie deaktiviert werden. Danach muss der Server gestartet und der Hitfix installiert werden.
Nachdem der Hotfix installiert wurde, kann die Virtualisierungs-Technologie wieder aktiviert und das System gestartet startet.
Grüße
dn
Um z.B. “LAN-Verbindung 5” in “iSCSI 10” umzubenennen, muss folgender Befehl ausgeführt werden:
netsh interface set interface name=”LAN-Verbindung 5” newname=”iSCSI 10”
Grüße
dn
Wichtig dabei ist dass der Name des Servers sich nicht ändern sollte, kann man eine Änderung nicht verhindern gibt es hier einen KB Artikel der die Vorgehensweise beschreibt. Aber wie gesagt, besser/einfacher ist es den Namen nicht zu ändern.
Nun denn, zuerst gilt es eine Strategie zu wählen, ich habe es so gemacht dass ich die CA gesichert habe, CA deinstalliert, DC heruntergestuft, Server aus der Domain genommen. Neuen Server mit gleichem Namen installiert, zum DC hochgestuft, CA installiert, CA widerhergestellt und läuft.
Also zum ersten Schritt, Sichern einer Zertifizierungsstelle:
Deinstallieren einer Zertifizierungsstelle:
Wiederherstellen einer Zertifizierungsstelle:
Weihnachtliche Grüße
tom
]]>
Um also einen Domain Controller (2008, 2008R2) umzubenennen geht man am besten so vor (Achtung: Ein Neustart ist nötig).
Zuerst wird ein zusätzlicher DNS-Hostname hinzugefügt.
netdom computername altername.domain.local /add:neuername.domain.local
Wichtig ist nun die Replikation mit allen anderen DCs abzuwarten oder manuell anzustoßen (repadmin, AD Sites and Services). Alle DCs müssen die Änderung im Computerkonto mitbekommen, in allen DNS Servern muss der zusätzliche Namen als Ressource Record aufscheinen.
Erst nachdem die Replikation abgeschlossen ist darf man zum nächsten Schritt gehen. Man kann das Ergebnis der Replikation sehen indem man mit ADSI Edit die Eigenschaften des entsprechenden Computerkontos anzeigt, dort muss das Attribut "msDS-AdditionalDnsHostName” den Wert neuername.domain.local haben. Alternativ zu ADSI Edit kann man auch das SnapIn Active Directory Users and Computers verwenden, allerdings muss man dazu unter “View” die “Advanced Features” aktivieren damit man die Attribute sieht.
Ist die Replikatoin erfolgt wird der neue Computername als Primärer gesetzt.
netdom computername altername.domain.local /makeprimary:neuername.domain.local
Nach diesem Schritt ist wiederum die Replikation abzuwarten/anzustoßen. Es ändert sich der Name des Computerobjektes und das Attribut “msDS-AdditionalDnsHostName” bekommt den Wert “altername.domain.local”.
Jetzt muss der Server neu gestartet werden.
Zum Schluss wird der alte Namen noch entfernt.
netdom computername neuername.domain.local /remove:altername.domain.local
Man kommt nicht um den Neustart herum, so funktioniert aber alles reibungslos.
Grüße.
tt
Wichtig zu erwähnen ist dass Forefront TMG nur mehr als 64 Bit Version verfügbar ist, es gibt eine Testversion für 32 Bit Systeme, ist Produktiv allerdings nicht unterstützt.
Die Genauen Systemvoraussetzungen gibt es hier.
Die wichtigsten neuen Features kurz im Überblick:
Startet man das Setup bekommt man mal etwas wirklich cooles, das Preparation Tool. Dieses Tool installiert alle benötigten Serverrollen und Features. Diese sind je nach Installation unterschiedlich:
Forefront TMG services
Forefront TMG management only
Forefront TMG EMS (nur Enterprise Version)
Ist der Preparation Wizard abgeschlossen, kann mit der Installation des TMG begonnen werden.
Die Installation dauert einige Zeit, wenn sie abgeschlossen ist kann man die Management Konsole öffnen und mit der Konfiguration beginnen. Zuerst sind noch mit einfachen Wizards die Netzwerkeinstellungen, Updates und URL Filtering bzw. Web Protection Subscription zu konfigurieren.
Wenn jetzt noch der Web Access Wizard ausgeführt wird kann man gleich noch eine erste Regel erstellen. Man kann auswählen welche URL Kategorien man sperren möchte, ob man Web und HTTPS inspection aktivieren möchte und wenn ja mit welchem Zertifikat. Außerdem kann hier gleich das Caching aktiviert werden.
Alles in allem scheint TMG wirklich ein sehr interessantes Produkt zu werden, das deutlich mehr kann als nur den ISA Server zu ersetzen. In nächster Zeit werde ich sicher noch einiges darüber berichten.
viele Grüße.
tom
Man erstellt also einen neuen “Custom” Receive Conenctor, dem man erst mal einen Namen geben muss (Server Configuration, Hub Transport).
Unter “Local Network Settings” kann man die IP Adresse angeben über welche der Exchange Server am besten mit dem Host reden kann. Wenn man nur eine Netzwerkkarte im Hub Transport Server hat kann man sich diese Einstellung schenken und einfach alle verfügbaren IPv4 Adressen verwenden. Außerdem kann man noch den FQDN eingeben mit dem sich der Exchange Server melden soll.
Unter “Remote Network Settings” wird jetzt der Host (bzw. die Hosts) hinzugefügt der anonym über den Exchange Relayen darf. Wichtig: der Host muss wirklich vertrauenswürdig sein und AntiVirus bzw. Firewall sollen laufen, damit man nicht selbst zur Spamschleuder wird. Man kann einzelne Hosts, IP Bereiche oder ganze Subnets angeben.
Durch klicken auf weiter und wird der Connector erstellt. Jetzt muss man noch die benötigten Berechtigungen setzen. Dazu Rechtsklick auf den Connector und die Eigenschaften öffnen. Unter “Authentication” werden alle Felder deaktiviert, unter “Permission Groups” wird die Gruppe Anonymous Users hinzugefügt.
Das Ganze kann man natürlich auch wieder mit der PowerShell machen, dazu einfach das New-ReceiveConnector cmdlet verwenden. Hier ein Beispiel:
New-ReceiveConnector -Name "SharePoint Relay" -Usage Custom -PermissionGroups AnonymousUsers -Bindings 0.0.0.0:25 -RemoteIpRanges 192.168.1.10,192.168.1.15-192.168.1.18
Jetzt gibt es also den Connector und die angegeben Hosts verwenden diesen, das Relaying funktioniert allerdings noch nicht.
Dazu muss man dem User “NT AUTHORITY\ANONYMOUS LOGON” die Berechtigung “Ms-Exch-SMTP-Accept-Any-Recipient” geben. Diese Aktion kann man nur in der EMS (Exchange Management Shell) durchführen.
Get-ReceiveConnector "SharePoint Relay" | Add-ADPermission -User "NT AUTHORITY\ANONYMOUS LOGON" -ExtendedRights "Ms-Exch-SMTP-Accept-Any-Recipient"
Hat man auch das gemacht funktioniert das Realying.
tt
]]>Um die Domain auf den ersten 2008 R2 DC vorzubereiten muss wie auch schon bei früheren Updates zuerst das AD Schema aktualisiert werden (auf Version 47). Dazu wird auf einem bestehenden DC die Windows Server 2008 R2 CD eingelegt, man muss natürlich mit einem Benutzer mit Schema Admin Rechten anmelden. Im Ordner Support\adprep befinden sich die Dateien adprep.exe und adprep32.exe. Wie der Dateiname schon sagt wird mit adprep.exe die Schemaerweiterung bei x64 Systemen durchgeführt, mit adprep32.exe wird das Schema auf x86 DCs erweitert.
Folgende Parameter werden benötigt:
Jetzt sind Domain und Forest bereit für den neuen DC und der Windows Server 2008R2 kann mit dcpromo hochgestuft werden.
viele Grüße
tt
Vor der Installation des Edge Transport Servers muss die interne Hub Transport Rolle konfiguriert werden. Das heißt Accepted Domains und die Connectoren müssen konfiguriert werden. Hier ein Link zur entsprechenden Technet Seite.
Die Installation des Edge Transport Servers gestaltet sich sehr einfach. Man braucht einen x64 Server 2008 (am besten R2) in der Standard Edition. Dort wird das .net Framework installiert. Außerdem wird ein Verzeichnisdienst benötigt, der Edge Transport Server muss ja wissen welche Empfänger es im Active Directory gibt. Active Direcotry Lightweight Directory Services (ADLDS), der Nachfolger des ADAM, und die entsprechende Verwaltungskonsole werden also auch installiert.
Am schnellsten geht das wohl über die PowerShell:
Nach dem Neustart muss noch der Starttyp eines Dienstes geändert werden, auch wieder in der PowerShell:
Der Server ist jetzt soweit vorbereitet, man muss (wenn nicht schon passiert) noch den DNS Suffix der internen Domain (z.B: domain.local) eintragen.
Da der Server in der DMZ stehen soll, muss auf der Firewall folgendes konfiguriert werden:
Jetzt kann das Exchange 2010 Setup ausgeführt werden, bei dem die “Custom Installation” gewählt wird und dort nur die Edge Transport Rolle und die Management Tools installiert werden. Die Installation ist schnell abgeschlossen, was jetzt noch benötigt wird ist die Synchronisation zwischen Edge Transport und internem Exchange (HUB) Server. Wichtig: Auf dem Edge Transport Server ist keine Konfiguration (Accepted Domains usw.) nötig, diese Einstellungen werden mit der Edge Synchronisierung übernommen.
Auf dem Edge Transport Server ein neues Subscription File erstellt. Es wird einfach New-EdgeSubscription -FileName "C:\filename.xml" in der EMS eingegeben. Die eben erstellte Datei wird auf den Hub Transport Server übertragen, dort wird mit dem selben cmdlet die EdgeSync erstellt. New-EdgeSubscription -FileName "C:\EdgeSubscriptionInfo.xml" -Site "Name-der-AD-Site". Natürlich kann man die EdgeSync auch in der EMC erstellen, dazu in der Organization Configuration die Hub Transport Rolle auswählen, dort auf den Edge Subscription Tab wechseln und New Edge Subscription wählen. Jetzt muss noch der Active Directory Standort gewählt werden und das xml File angegben werden. Auch hier können die Connectoren auf Wunsch automatisch erstellt werden.
Wichtig: Der interne Hub Transport Server muss den Edge Transport Server per DNS Name auflösen können!
Durch die EdgeSync werden die benötigten Connectoren erstellt und die relevanten Einstellungen übernommen. So wird z.B. die Konfiguration des Default Recipient Connector sowie die Accepted Domains vom internen Server übernommen.
Weiterführend kann ich das Exchange 2010 TechCenter empfehlen.
Sehr lesenswert ist auch der Exchange Team Blog, zu finden in der Blogroll.
viele Grüße
tt
“An IIS directory entry couldn't be created. The error message is Access is denied. HResult = -2147024891. It was running the command 'Get-OwaVirtualdirectory'”
Den selben Fehler erhält man wenn man in der Exchange Management Shell den Befehl “Get-OwaVirtualDirectory” ausführt, macht die EMC eigentlich auch, nur mit Bild drum herum :).
Der Grund dafür ist wohl dass Exchange 2010 keine Berechtigungen auf der entsprechenden Website im IIS auf dem 2007 Client Access Server erhält.
Die Lösung: Alle Exchange 2010 Server sollen Mitglied der lokalen Administratoren auf allen Exchange 2007 Servern sein. Also am besten die Gruppe “Exchange Trusted Subsystems” zu den Lokalen Admins auf den Exchange 2007 Server hinzufügen.
Alternativ kann man der Gruppe “Exchange Trusted Subsystems” auch Berechtigungen (Full Control) auf der entsprechenden Website (Default Website) im direkt im IIS geben.
viele Grüße
tt
Ereignistyp: Warnung
Ereignisquelle: Dhcp
Ereigniskategorie: Keine
Ereignis-ID: 1003
Datum: 26.11.2009
Zeit: 11:19:25
Benutzer: Nicht zutreffend
Computer: ****
Beschreibung:
Der Computer konnte die Netzwerkadresse, die durch den DHCP-Server für die Netzwerkkarte mit der Netzwerkadresse ******A98F0 zugeteilt wurde, nicht erneuern. Der folgende Fehler ist aufgetreten:
Das Zeitlimit für die Semaphore wurde erreicht. . Es wird weiterhin im Hintergrund versucht, eine Adresse vom Netzwerkadressserver (DHCP) zu erhalten.
Ereignistyp: Fehler
Ereignisquelle: NETLOGON
Ereigniskategorie: Keine
Ereignis-ID: 5719
Datum: 26.11.2009
Zeit: 11:19:33
Benutzer: Nicht zutreffend
Computer: ****
Beschreibung:
Es steht kein Domänencontroller für die Domäne ***** aus folgendem Grund zur Verfügung:
Es sind momentan keine Anmeldeserver zum Verarbeiten der Anmeldeanforderung verfügbar.
Stellen Sie sicher, dass der Computer mit dem Netzwerk verbunden ist, und versuchen Sie es erneut. Wenden Sie sich an den Domänenadministrator, wenn das Problem weiterhin besteht.
Als erstes habe ich die DNS Struktur gecheckt. Danach mit den beiden Tools dcdiag und netdiag mehrfach Diagnosen gestartet und ausgewertet. Laut den Diagnosetools war alles OK.
Nach ein wenig Recherche habe ich das Problem entdeckt: Es war der Switch.
Auf den Switch ist das STP Protokoll aktiv. Dieses braucht üblicherweise 30-60 Sekunden um den Switchport von Listening und Learning Status auf Forwarding zu bringen. Da die PC’s schneller starten als der Switchport aktiv ist, kann der PC seine IP nicht erneuern bzw. anfordern.
Das Problem kann man umgehen indem man die Client-Switchports auf “PortFast” stellt und somit der Switchport sofort in den Forwarding-Status geht.
Grüße, dn
]]>Windows 7 USB/DVD Download Tool
Der USB Stick muss mindestens 4 GB groß sein. Wie ein USB Stick manuell für die Installation präpariert werden kann, hat Thomas in einen vorhergehenden Post erklärt.
Viel Spaß beim installieren!!
Grüße, dn
Termine:
08.12.2009: Stuttgart
09.12.2009: München
15.12.2009: Düsseldorf
16.12.2009: Berlin
Zur Anmeldung und Agenda über den Link
Grüße, dn
]]>In der folgenden Tabelle werden die Features von Hyper-V V1 und V2 gegenübergestellt.
Neu in V2 ist außerdem:
Grüße, dn
]]>Es gibt 2 Möglichkeiten das Problem zu beheben:
1) Update des Netzwerkkartentreibers
Als allererstes sollte der Netzwerkkartentreiber geupdated werden. In den meisten Fällen erledigt sich das Problem damit. Ich empfehle den Treiber immer von der Support-Webseite des Servers herunterzuladen, nicht vom NIC-Hersteller direkt (Bsp: Server von HP und Netzwerkkarte von Intel). Diese Treiber auf der Support-Webseite des Servers sind getestet und für das System freigegeben.
2) Den Netlogon Service zwingen auf das Netzwerk zu warten
Wenn der aktuelle Netzwerkkartentreiber nichts bringt, kann man den Netlogon-Prozess so zum warten zwingen:
In der Registry muss der Eintrag “TermService” dem Schlüssel “DependOnService” hinzugefügt werden.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon
Nachdem der Server neu gestartet wurde, sollte das Problem behoben sein.
Grüße, dn
]]>Windows 7 RTM Installationsdateien auf einen (vorbereiteten) USB Stick kopieren. In der Datei \Sources\cversion.ini muss der Wert MinClient auf 7100.0 (die entsprechende Build Nr. von der man updaten will) gesetzt werden. Man sollte für so ein Update einige Zeit einplanen, bei mir dauerte es ca. zwei Stunden. Das gilt übrigens auch für unterstützte Updates. Eine normale Windows 7 Installation ist bekanntlich in 20 Minuten abgeschlossen.
Ein Update von x86 auf x64 oder umgekehrt lässt sich so natürlich auch nicht machen, dafür ist immer eine neuinstallation nötig. In diesem Post erklärt Daniel nochmal genau welche Updates unterstützt werden.
Nochmal: ich empfehle dieses Workaround nicht für produktive Systeme, ich habe mein Notebook so aktualisiert und alles läuft wunderbar, aber es ist wie gesagt kein produktiv genutzter PC.
Gruß
tt
1) Commandline mit Administratorrechte öffnen
2) Einen neuen Eintrag dem Bootloader hinzufügen
bcdedit /create /d “Windows 7 zweite Installation” /application osloader
Nachdem dieser Befehl ausgeführt wurde, bekommen wir eine ID
Bsp: {34jhjsk5-34j4-33jj-b6ne-99ggfjej48776395}
3) Nun müssen wir den Bootloader noch sagen wo sich das zweite Betriebssystem befindet (D:)
bcdedit /set {34jhjsk5-34j4-33jj-b6ne-99ggfjej48776395} device partition=C:
bcdedit /set {34jhjsk5-34j4-33jj-b6ne-99ggfjej48776395} osdevice partition=D:
4) Nun fügen wir den Pfad für den Bootloader und dem System Root Verzeichnis hinzu
bcdedit /set {34jhjsk5-34j4-33jj-b6ne-99ggfjej48776395} path \Windows\system32\winload.exe
bcdedit /set {34jhjsk5-34j4-33jj-b6ne-99ggfjej48776395} systemroot \Windows
5) Als letztes stellen wir noch die Reihenfolge der Auflistung der Betriebssysteme fest
bcdedit /displayorder {34jhjsk5-34j4-33jj-b6ne-99ggfjej48776395} /addlast
Noch zur Info: Den Namen, der bei der Betriebssystemauswahl angezeigt wird, könnt ihr mit diesen Command ändern:
bcdedit /set {current} description "Windows 7 erste Installation"
Grüße, dn
]]>Etwas zur Struktur: Als Server setze ich Windows Server 2008 ein, die Server sind auf Hyper-V Servern virtualisiert. Als Speicherort für die Profile benutze ich das DSF Feature von Server 2003 R2.
Zuerst dache ich mir, dass es da Probleme mit dem Netzwerk gibt. Eines wollte ich aber noch versuchen bevor ich mit der Analyse des Netzwerkes starte: Windows-Defender.
Nachdem ich den Windows-Defender auf allen Terminalservern deaktiviert hatte, konnte das Problem nicht mehr reproduziert werden. Anscheinend blockiert der Windows-Defender bei der Anmeldungen bestimmte Vorgänge, die der Server braucht um das User-Profil herunterzuladen.
Grüße, dn
]]>Mein Microsoft Dynamics Server arbeitete immer sehr zuverlässig, das EventLog war frei von den unbeliebten “roten Kreuzen”. Bis an den Tag x, an dem der Dynamics Service seinen Dienst verweigerte und im laufenden Betrieb stoppte. Im EventLog wurden folgende Fehlermeldungen protokolliert:
Der Fehler “Error 1450 in module 1..\server.cpp(498) weißt auf zu wenig Server-Ressourcen hin. Dieser Fehler konnte durch die Korrektur nicht optimaler Einstellungen an der Auslagerungsdatei behoben werden.
Der Fehler “Error 3 in module 244..\server.cpp(351) weißt auf einen TCP-Fehler hin. Durch die Installation der neuesten Soft- und Firmware der Netzwerkkarte konnte ich das Problem beheben.
Nun ist das EventLog wieder sauber und der Server hat bisher seinen Betrieb nicht wieder unterbrochen.
Grüße, dn
]]>Beim Upgrade unterscheiden wir 2 Szenarien:
Custom Install: Das Betriebssystem muss komplett neu installiert werden.
In-Place Upgrade: Das bestehende Betriebssystem kann auf Windows 7 geupdatet werden und übernimmt somit alle vorhandenden Einstellungen bzw. Programme.
Anhand dieser Matrix kann man feststellen in welchen Fällen ein In-Place Upgrade möglich ist.
Quelle der Grafik: http://blogs.technet.com/dmelanchthon/
Grüße, dn
]]>Danach muss die Datenbank mit den folgenden Parameter geöffnet werden: \\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query
Nachdem die Datenbank geöffnet wurde wählt man die Datenbank aus, deren LogFiles verkleinert werden sollen. Nach einem Rechtsklick auf die Datenbank wählt man Tasks / Verkleinern / Dateien
Nun erscheint das Optionsfenster. Hier muss als Dateityp Protokoll ausgewählt werden. Als Information erhält man hier wie groß das aktuelle LogFile und zu wie viel es belegt ist. Im unteren Bereich kann der Speicherplatz neu organisiert werden. (In meinem Fall 2 GB)
Nachdem die Eingaben bestätigt werden, schrumpft das LogFile auf die angegebene Größe zusammen.
Dieser Schritt kann für alle Datenbanken vorgenommen werden, dessen LogFile zu groß ist.
Grüße, dn
]]>Mit Exchange 2010 stellt Microsoft (endlich) eine Möglichkeit vor um die Signaturen zentral zu verwalten und dynamisch zu erstellen. Verwendet wird dazu der seit Exchange 2007 bekannte Disclaimer, dieser wurde erweitert und kennt jetzt HTML Tags und Attribute aus dem Active Directory.
Konfiguriert wird der Disclaimer in der Hub Transport Rolle auf Organisationsebene. Man erstellt eine neue Transport Rule indem man einfach mit rechts auf den Knoten Hub Transport klickt und “New Transport Rule” auswählt.
Nachdem man Namen und Beschreibung vergeben hat, kann per Filter festgelegt werden für welche Mails diese Regel gelten soll. Mehr Details zu den Filtermöglichkeiten: Exchange 2010 Transport Rule Predicates.
Als Action wählt man “Append disclaimer text and fallback to action if unable to apply”. Dort kann ein beliebiger Text eingegeben werden den man mit HTML Tags formatieren und mit Platzhaltern wie %%DisplayName%% personalisieren kann. Neben dem Text kann man auch die Fallback Action festlegen, d.h. was Exchange mit der Nachricht machen soll wenn der Disclaimer nicht angewendet werden kann. Es gibt drei Möglichkeiten:
Einige Details noch im Technet: Understanding Disclaimers
Zum Schluss kann man noch Außnahmen definieren, für welche die Regel nicht zutreffen soll:
Jetzt fehlt noch der klick auf New und die Regel wird erstellt. Es wird ab jetzt also jedem Mail das den Konditionen entspricht der Disclaimer Text angefügt, egal ob es von OWA oder Outlook kommt.
Eine endgültige Lösung stellt diese Funktion nicht dar, denn ein Nachteil des Disclaimers ist dass er am Ende der Nachricht eingefügt wird. Antwortet man also auf ein Email so steht die Signatur (Disclaimer) ganz unten, unter dem zitiertem Mail. Alles in allem ist das meiner Meinung nach ein Schritt in die richtige Richtung, allerdings fehlt noch einiges bis zum Ziel.
]]>Für heute habe ich das Firmware / Treiber Update meiner HP ML 350 G5 Server geplant. Zuerst habe ich mir die neueste Firmware-CD von HP gezogen und diese dann installieren lassen. Alles verlief ohne Probleme.
Danach wollte ich die Treiber updaten und habe bemerkt, dass jede Komponente geupdated wurde, nur der Treiber der Netzwerkkarte (v. 5.0.16.0) nicht.
Das war sehr ärgerlich, denn dieser Treiber war der Wichtigste, denn es gab Netzwerkprobleme mit Microsoft Dynamics.
Folgender Fehler wurde ausgegeben: “HP Virtual Bus Device installation requires a newer version. Version 4.6.16.0 is required.”
Um den Treiber dennoch installieren zu können, muss zuerst auf die Version 4.6.16.0 geupdated werden, dann kann man erst die neueste Version installieren: Link zum Treiber v4.6.16.0
Grüße, dn
PS: Wenn die Netzwerkprobleme mit Dynamics behoben sind, werde ich dazu noch einen Post veröffentlichen. (kleiner Ausflug in die ERP-Software :) )
]]>Im Eventlog wurde ein Fehler protokolliert, dass die RDP-Protokollkomponente “DATA ENCRYPTION” ein Problem verursachte.
Glücklicherweise funktionierte der Zugriff durch AdminMagic noch, sodass ich mit der Fehlerbehebung beginnen konnte.
Um die RDP Verbindung wieder flott zu bekommen muss folgender Registry-Eintrag gelöscht werden:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\TermService\
Parameters\ Certificate
Nach einem Neustart des Servers konnte ich mich wieder via RDP auf dem Server verbinden.
Grüße, dn
]]>Dieser Fehler ergibt sich aus upgedateten Treibern für den Hypervisor durch SP2 und wird nur auf physischen Maschinen protokolliert.
Der Eventlog-Eintrag kann einfach ignoriert werden.
Mit dem Befehl sc delete storflt wird der Dienst storflt gelöscht und der Fehler nicht mehr protokolliert. Dies darf jedoch nur für den Windows Server 2008 gemacht werden, nicht für den Hyper-V Server, da dieser den Service für die virtuellen Maschinen braucht.
Sollte der Service auf einem Hyper-V Server gelöscht werden, bleibt dieser beim Starten mit einem Bluescreen stehen. Durch die “Letzte bekannte Konfiguration” kann der Server aber wieder gestartet werden.
Grüße, dn
]]>Für folgende Aufgaben kann die neue Konsole verwendet werden (Auszug aus technet.microsoft.com)
Die Oberfläche
Die Oberfläche wirkt strukturiert und Übersichtlich.
Die Suche
Häufig verwendete Kriterien lassen sich schnell der Suche hinzufügen.
Neuen Benutzer anlegen
Auf mich wirkt die Oberfläche sehr übersichtlich und durchdacht. Alle Aufgaben lassen sich jedoch nicht abbilden, sodass man auf die Konsole “Active-Directory-Benutzer und Computer” nicht völlig verzichten kann.
Im täglichen AD-gebrauch spricht einer Verwendung der neuen Konsole jedoch nichts dagegen.
Grüße, dn
]]>Im Windows Update Fenster lassen sich die Pakete herunterladen und installieren.
Nachdem das Paket heruntergeladen und installiert wurde, kann es in der Systemsteuerung unter “Region und Sprache” bei “Anzeigesprache” aktiviert werden.
Grüße, dn
]]>2 Hyper-V Server 2008 R2
1 Windows Server 2008 R2 (inkl. iSCSI Target)
Das zentrale Storage wird über iSCSI angebunden. Dafür verwenden wir den Windows Server 2008 R2.
Topologie
Um den Cluster zu erstellen müssen 8 Schritte durchgeführt werden:
Schritt 1 Hyper-V Server und Server 2008 R2 auf den 3 Computern installieren
Die beiden Hyper-V Server werden mit der Standard-Installation installiert. Der Windows Server 2008 R2 wird zusätzlich zum DC heraufgestuft um die Domäne hyper.local bereit zu stellen.
Schritt 2 Firewall deaktivieren
Für den Test habe ich auf den 3 Servern die Firewall deaktiviert, um nicht die entsprechenden Ports öffnen zu müssen.
Schritt 3 Hyper-V Server in Domäne aufnehmen
Als nächstes werden die Hyper-V Server in die Domäne aufgenommen.
Schritt 4 Verwaltungstools auf dem Windows Server installieren
Um den Cluster später steuern zu können müssen wir 2 Konsolen installieren: Clusterverwaltung und die Hyper-V Tools. Die Konsolen können unter den Features aktiviert werden.
Schritt 5 iSCSI Target installieren und konfigurieren
Als iSCSI Target Software habe ich das Tool von StarWind verwendet. Nachdem das Programm installiert wurde, kann man sich unter den Benutzernamen “test”, Password “test” anmelden und das Target entsprechen konfigurieren.
Am iSCSI Target erstellen wir zunächst 2 virtuelle Volumes. 1 Volume wird als Quorumdatenträger für den Cluster verwendet, das andere als Storage für die VHD’s. Wichtig ist dabei, dass die Option “Allow multiple concurrent iSCSI connections (clustering)” verwendet wird, somit können beide Hyper-V Knoten gleichzeitig auf die Volumes zugreifen.
Schritt 6 Hyper-V Server mit den iSCSI Volumes verbinden
Jetzt muss noch die Verbindung zwischen den Hyper-V Server und dem iSCSI Target hergestellt werden. In der Version R2 des Hyper-V Servers wurde eine grafische Oberfläche für den iSCSI-Initiator hinzugefügt. Der Initiator wird mit den Command iscsicpl gestartet. Nachdem wir zugestimmt haben den iSCSI Dienst zu starten, erhalten wir die Oberfläche wo wir die IP Adresse des iSCSI Targets eintragen und uns zunächst nur mit dem Quorum Volume verbinden.
Jetzt muss das Volume noch entsprechend Formatiert werden.
Schritt 7 Cluster einrichten
Nun können wir den Cluster erstellen. Wir verbinden uns auf die Hyper-V Server und aktivieren mit Option 11 die Failoverclusterfeatures.
Nachdem die Features auf beiden Servern aktiviert sind, öffnen wir den Failovercluster-Manager auf dem Windows Server und starten die Clusterkonfiguration.
Nachdem wir beide Hyper-V Server für den Cluster angegeben haben, startet die Konfigurationsüberprüfung. Sofern bis hierhin alle richtig Konfiguriert wurde, sollte der Check keine Fehler aufzeigen.
Nachdem der Cluster vollständig erstellt wurde, werden beide Hyper-V Server im Manager angezeigt.
Da wir den Quorumdatenträger bereits mit beiden Cluster-Knoten verbunden haben, wurde dieser erkannt und schon als Quorumdatenträger konfiguriert.
Jetzt verbinden wir das Storage-Volume mit den beiden Cluster Knoten um auf die VHD’s zuzugreifen. Bevor das Volume benutzt werden kann, muss es noch formatiert werden.
Jetzt aktivieren wir im Failovercluster-Manager die “Cluster Shared Volumes” und erlauben somit gleichzeitigen Zugriff auf die VHD’s.
Um nun das Storage-Volume einzubinden, müssen wir es zunächst dem “Speicher” und dann den “Freigegeben Clustervolumes” (Cluster Shared Volumes) hinzufügen.
Sobald Cluster Shared Volumes verwendet werden, kann man auf diese unter C:\ClusterStorage\ zugreifen. Für jedes Volume wird ein eigener “Ordner” erstellt.
Schritt 7 Virtuelle Maschine erstellen
Als nächstes erstellen wir eine virtuelle Maschine (z.B. Windows XP) und ein virtuelles Netzwerk über die zuvor installierte Hyper-V Konsole auf einem der Hyper-V Server. Die VHD und entsprechende Konfigurationsdatei wird dabei auf dem Storage-Volume erstellt.
Wichtig: Die virtuelle Maschine muss mit dem Netzwerkadapter verbunden werden bevor sie hochverfügbar gemacht wird, sonst kann die Maschine nicht auf den anderen Knoten verschoben werden.
Schritt 8 Virtuelle Maschine hochverfügbar machen
Um die virtuelle Maschine hochverfügbar zu machen, fügen wir einen neuen Dienst hinzu. Dabei muss geachtet werden, dass sich die Maschine im Status beendet oder gespeichert befindet. Ich empfehle die Maschine komplett herunterzufahren um Probleme zu vermeiden.
Wir erhalten danach eine Liste mit den virtuellen Maschinen.
Nachdem wir die Testmaschine ausgewählt haben, startet die Konfiguration um den Host hochverfügbar zu machen.
Die Konfiguration ist soweit abgeschlossen.
Test 1 Quick- und Live-Migration
Quick- und Live-Migration sind beides Verfahren um virtuelle Maschine auf einen anderen Knoten zu verschieben.
Mehr Infos (Whitepapers) zu Live- und Quick-Migration
Live Migration
In meinen Test habe ich für die Live-Migration lediglich 1 Ping verloren.
Quick-Migration
Für den Umzug auf den 2. Knoten durch Quick-Migration gingen 9 Pings an die virtuelle Maschine verloren.
Test 2 Ausfall von einem Hyper-V Server simulieren
Als 2. Test habe ich den Stromstecker des Hyper-V Servers gezogen, der aktuell die virtuelle Maschine hostet. Der Failovercluster hat nach wenigen Sekunden die virtuelle Maschine auf dem 2. Konten neu gestartet.
Grüße,dn
Mit AppLocker kann man den Clientcomputer noch besser schützen, indem man nun sehr viel genauer vorgeben kann welche Anwendungen ein Benutzer ausführen bzw. installieren darf. AppLocker kann über ein Domänen- oder über die lokale-GPO konfiguriert werden.
Wie man AppLocker verwendet zeige ich Anhand von folgendem Beispiel: Benutzern ist es nur erlaubt Applikationen auszuführen, die sich unter %Programfiles% und %Windir% befinden. Benutzer die der Gruppe “Not Restr Access” angehören ist es außerdem erlaubt das Testprogramm “Excel Viewer 2003” aus dem Verzeichnis “C:\Program Files 2” zu starten.
Als erstes öffnet man das GPO und wechselt zur Option “AppLocker”
Für die Option Executable Rules lassen wir die Standardregeln generieren (“Create default Rules”). Nachdem diese konfiguriert sind, findet man 3 Regeln vor:
1. Admins dürfen alle Programme aufrufen
2. User dürfen Programme aus %Windir% starten
3. User dürfen Programme aus “%Programfiles% starten
Jetzt müssen wir eine neue Regel erstellen, die der Benutzergruppe “Not Restr Access” erlaubt unsere Testapplikation zu starten. Über “Create New Rule” wird der entsprechende Wizard gestartet.
Wir wählen die Option “Allow” und beziehen die Regel auf die Gruppe “Not Restr Access”.
Jetzt haben wir 3 Möglichkeiten. Über die Option Publisher kann ein einzelnes signiertes Programm freigegeben oder gesperrt werden, über die Option Path ein ganzer Pfad und über die Option File Hash eine nicht-signierte Applikation. Im unseren Beispiel wählen wir die Option Publisher, da der Excel Viewer von Microsoft zertifiziert ist. Nachdem die Applikation ausgewählt wurde, kann über einen Schieberegler die Genauigkeit der Prüfung von AppLocker eingestellt werden. (Bsp. AppLocker soll nur den Dateinamen, nicht die Dateiversion prüfen)
Wenn nötig können im nächsten Schritt noch Ausnahmen definiert werden. Somit haben wir unsere Regel definiert.
Wichtig: AppLocker ist auf einen Dienst angewiesen der aus Sicherheitsgründen nicht automatisch startet. Damit die Einstellungen greifen, muss der Dienst “Application Identity” gestartet werden. Ich empfehle den Dienst solange im Startmodus “Manuell” zu belassen, bis alle Einstellungen passen.
Wenn wir jetzt den Test machen, können Benutzer aus der Gruppe “Not Restr Access” problemlos den Excel Viewer starten. Benutzer, die nicht dieser Gruppe angehören, erhalten eine Fehlermeldung.
Grüße, dn
]]>Grüße, dn
]]>UnDo Disks – Snapshots für Virtual PC!?
Bei den UnDo Disks handelt es sich um ein Feature das ich in bisherigen Virtual PC Versionen immer vermisste: Man kann den Status einer VM vor einer Änderung sichern und kann auf den Punkt der Sicherung zurückspringen wenn die Änderung nicht so funktioniert wie man sich das vorgestellt hat.
UnDo Disks werden in den Einstellungen der VM aktiviert. Die Virtuelle Maschine muss ausgeschaltet (heruntergefahren) sein damit die Option zur Verfügung steht.
Beim nächsten Start der VM wird eine .vud Datei erstellt, in dieser werden (wie bei einem Snapshot in der Enterprise Umgebung) ab jetzt alle Änderungen gespeichert. Die VHD bleibt unverändert.
In der Zwischenzeit habe ich um eine Änderung zu simulieren einfach mal ein Programm installiert. Man sieht auch gleich dass die .vud Datei größer wird.
Um die Änderungen in die VHD zu übernehmen bzw. diese zu verwerfen muss man die VM wieder schließen (herunterfahren/Ruhezustand) und in den Einstellungen den entsprechenden Punkt auswählen. Ich habe mich entschieden die Änderungen zu verwerfen also wird meine .vud Datei gelöscht. Nach dieser Aktion wird wieder von der VHD gestartet und alles ist so wie es vorher war.
Wenn man Änderungen übernimmt werden diese in die VHD geschrieben.
Lässt man die Undo Disk aktiv und startet die Virtuelle Maschine wieder, wird erneut eine .vud Datei erstellt in der alle Änderungen bis zum Übernehmen oder Verwerfen separat gespeichert werden. Um die Undo Disk zu deaktivieren muss die virtuelle Maschine heruntergefahren werden, im Ruhezustand geht das nicht.
Insgesamt also ein super Feature, spart einem sicher ‘ne Menge Arbeit.
Differencing Disks
Im zweiten Beispiel installiere ich mehrere neue VMs in differenzierenden Disks auf Basis einer bereits bestehenden Maschine.
Wichtig: Differenzierende Virtuelle Maschinen basieren auf einer bereits installierten VM, wenn ich also für eine Testumgebung mehrere VMs brauche kann ich eine bestehende beliebig oft duplizieren und so Zeit sparen. Ich habe die Quell-VM mit sysprep vorbereitet um Probleme mit gleichen SID und Computernamen zu verhindern. Wichtig ist außerdem dass man die Quell-VHD herunterfährt und auf Schreibgeschützt setzt, denn wenn diese geändert wird sind alle erstellten Differenzierenden Disks ungültig.
Update: Wenn man die VMs so dupliziert erhalten alle “Child” VMs die gleiche MAC Adresse. Die einzige Lösung die ich im Moment gefunden habe ist in der .vmc Datei die MAC Adresse zu löschen, dann wird einen neue generiert.
Also kann man sagen um die Quell VM richtig vorzubereiten muss man 3 Punkte beachten:
Man erstellt also eine neue VM über den Button “Create virtual machine” und gibt ihr einen Namen. Bei Add Disk wählt man “Create a Virtual Hard Disk using advanced options” und dann “Differencing Hard Disk”. Der neuen HD kann man einen Namen geben und dann muss man die Quell-VHD (parent) angeben.
Wenige Sekunden später hat man eine neue VM bei der man nur noch die Windows Einstellungen anpassen muss. Der Vorteil ist dass nicht die ganze Quell-VM kopiert wird, sondern nur der Teil ab dem man die Differenzierende HD erstellt. So spart man neben viel Zeit auch noch einiges an Speicherplatz.
viele Grüße!
tt
Voraussetzung für die Verwendung des Windows VPC ist dass die CPU Virtualisierungstechnologien unterstützt.
Mit diesen Tools kann man überprüfen ob Virtualisierung unterstützt wird: Intel, AMD
Die Virtualisierungstechnologien müssen im BIOS noch aktiviert werden, also am besten im Handbuch des Mainboard Herstellers nachschlagen.
Tipp: Bei HP Computern ist die Einstellung unter “Sicherheit” versteckt, nicht unbedingt logisch aber bitte.
Auf die Installation des XP-Mode möchte ich nicht weiter eingehen, den kann man sich selbst herunterladen und mit wenigen Klicks installieren.
Ich habe die Virtuellen Maschinen selbst installiert und die Integration Features und Auto Publish aktiviert, so kann ich in Windows 7 Programme aus meinen virtuellen Vista und XP Maschinen verwenden.
So präsentiert sich der neue Virtual PC, integriert in ein normales Explorer Fenster hat man die Möglichkeit Virtuelle Maschinen und Festplatten zu erstellen, zu bearbeiten oder zu löschen. Durch einen rechtsklick auf die VM kommt man zu den bekannten Einstellungen.
Eine neue virtuelle Maschine wird einfach durch klicken auf “Create virtual machine” erstellt, in den folgenden Dialogen wird der Speicherort für VHD und Konfigurationsdateien festgelegt.
Im nächsten Dialog kann der Arbeitsspeicher festgelegt werden und Networking für die VM aktiviert oder deaktiviert werden.
Abschließend entscheidet man sich für einen VHD Typ (Fix, Dynamisch, Differenzierend) seiner Wahl und klickt auf Create. Ein genauerer Blick lohnt sich auf die Undo Disk Option, bei dieser werden die Änderungen die man in der VM macht in einem separatem File gespeichert. So kann man fehlgeschlagenen Änderungen immer wieder verwerfen. Dazu (und zum Thema Differenzierende Festplatte) gibts einen eigenen Artikel.
Und schon haben wir eine VM erstellt. In den Einstellungen (rechtsklick auf die VM) kann man noch genauere Einstellungen definieren, für mich reicht es aber vorerst das CD Image für die Installation auszuwählen.
Wenn man die VM startet wird von “CD” gestartet und die Windowsinstallation beginnt. Hat man das Betriebssystem installiert, sollte man die Integration Features aktivieren (Klick auf Tools, Enable Integration Features). Mit diesen Features kann man Sound, Zwischenablage, Drucker, Smart Cards und die Laufwerke des Lokalen Computers in der VM verwenden.
Möchte man außerdem die Programme der VM auf dem physikalischen Computer verwenden muss man noch ein Update Installieren und “Auto publish” in den Einstellungen der VM aktivieren.
Update for Windows XP SP3 to enable RemoteApp
Update for Windows Vista SP1 or above to enable RemoteApp
Im Startmenü von Windows 7 werden nun die Programme angezeigt die in den Virtuellen Maschinen installiert sind.
Wichtig: Es muss eine Verknüpfung mit dem Programm und All Users/Startmenü erstellt werden, nur dann werden die Programme korrekt angezeigt. Um ein Virtuelles Programm zu starten muss die Virtuelle Maschine geschlossen sein. Wenn sie sich im Ruhezustand befinden wird sie im Hintergrund automatisch gestartet.
viele Grüße!
tt
Um den mit BitLocker verschlüsselten Datenträger auf Windows Vista bzw. XP verwenden zu können muss der Datenträger zwingend mit FAT formatiert sein. In diesem Legacy-Modus kann mit Vista und XP auf dem Datenträger nur gelesen, nicht geschrieben werden.
Anleitung um BitLocker To Go zu aktivieren
1) Datenträger mit FAT formatieren
2) BitLocker für den Datenträger aktivieren
3) Art des Schutzes wählen (Passwort oder Smart Card)
4) Nun muss gewählt werden, in welcher Form der Wiederherstellungsschlüssel gespeichert wird. Der Wiederherstellungsschlüssel dient dazu den Datenträger zu entschlüsseln, sollte man das Passwort vergessen haben. Man hat hier 2 Möglichkeiten: Den Key speichern oder drucken.
5) Nun kann das Laufwerk verschlüsselt werden
Windows 7
Steckt man den Datenträger nun in den Windows 7 Computer, so erscheint folgende Passwortabfrage bevor auf dem Datenträger lesen und schreiben werden kann.
Windows Vista bzw. XP
Steckt man den Datenträger in einem Vista oder XP Rechner startet das “BitLocker To Go-LeseTool”. Nach Eingabe des Passwortes kann auf dem Datenträger gelesen werden.
Grüße, dn
]]>Es war möglich mit dem Tool von Leo Davidson ein beliebiges Programm mit administrativen Rechten zu starten ohne eine UAC abfrage hervorzurufen. Aber ich musste Mitglied einer Gruppe mit administrativen Rechten sein (z.B. Administratoren), als normaler User funktionierte es nicht. Wenn man also mit in der UAC nur noch “Ja ich will" klicken müsste, dann kann man sie mit dem Code Injection Issue umgehen, wird ein Passwort abgefragt funktioniert das Ganze anscheinend nicht.
Meiner Meinung nach handelt es sich hier also um ein Problem, jedoch ist es in meinen Augen nicht so dramatisch. Im Enterprise Umfeld sollte eh kein User Mitglied in administrativen Gruppen sein und zu Hause wird man wohl kaum (gewollt) seinen eigenen PC abschießen. Trotzdem sollte sich Microsoft das Problem zu Herzen nehmen, denn der Entwickler hat es genau Dokumentiert und laut eigenen Angaben MS schon seit längerem informiert.
Links zu Artikeln Rund um dieses Thema:
Long Zheng 1, 2, Video
Leo Davidson
viele Grüße
tt
WLAN
Auf der rechten Seite der Taskleiste findet sich eine Übersicht der verfügbaren Drahtlosnetzwerke. Die Verbindungen lassen sich mit einen klick auf Connect zügig herstellen.
BitLocker to Go
Mit dieser Erweiterung von BitLocker lassen sich Wechseldatenträger verschlüsseln. Somit sind auch Daten die unterwegs mitgenommen werden geschützt. Einfach den USB Stick anschließen und im BitLocker Menü die Verschlüsselung aktivieren.
Oberfläche
Die Verwaltung zu Oberflächenanpassung wurde sehr viel Übersichtlicher gestaltet. Neue Styles lassen sich einfach auswählen und aktivieren.
Media Center + Media Player 12
Das Media Center wurde überarbeitet. Die Menüs sind klarer strukturiert und die Konfiguration lässt sich in wenigen Schritten beenden.
Der Media Player hat auch ein neues Gesicht bekommen. Die Multimedia-Unterstützung wurde durch zusätzliche Codes für langsame Systeme optimiert.
Die Installation vom USB Stick hat keine halbe Stunde gedauert und schon war Windows 7 betriebsbereit. Auf den ersten Blick macht Windows 7 RTM einen sehr guten Eindruck. Was das Betriebssystem in Sachen Performance und Alltagstauglichkeit leisten kann wird sich in den nächsten Wochen zeigen.
Es wird sicher noch der ein oder andere Post von Thomas und mir diesbezüglich erscheinen.
Grüße, dn
]]>Um RemoteApp Programme mit Zertifikaten zu signieren muss man nicht wie bei den Makros (wie Daniel schreibt) eine Richtlinie für Softwareeinschränkung erstellen, sondern man erstellt ein GPO in dem man den Fingerabdruck des Zertifikates zu den Vertrauenswürdigen RDP-Herausgebern hinzufügt. Die entsprechende Einstellung findet sich als Computer oder Benutzerkonfiguration unter:
Administrative Vorlagen/Windows-Komponenten/Remote Desktop Services/Remotedesktopverbindungs-Client/SHA1-Fingerabdrücke von Zertifikaten angeben, die vertrauenswürdige RDP-Herausgeber darstellen
So wird die Identität des Remotecomputers verifiziert und beim verbinden erhält der Benutzer keine Abfrage ob er dem Herausgeber auch wirklich vertraut.
]]>Alle die Windows 7 E Vorbestellt haben werden eine Vollversion des jeweiligen Produktes erhalten.
Als alternative wird vermutlich eine Browserauswahl beim Start von Windows 7 zur Verfügung stehen, so kann der Benutzer sich für seinen bevorzugten Browser entscheiden.
Der größte Vorteil dieser Aktion ist wohl die Upgrade Funktion die nun auch für uns Europäer verfügbar ist. So kann man von Windows Vista bequem updaten ohne seine Einstellungen zu verlieren. Für Windows XP wird es keine Upgrade Funktion geben, man kann jedoch eine günstigere Upgrade Version kaufen und diese installieren.
Hier gehts zum Artikel von Daniel Melanchthon wo man genaueres nachlesen kann.
]]>Steve Ballmer selbst wird in München die neuen Produkte vorstellen.
Eventtermine
Grüße, dn
Danke an Daniel für die Info.Um die Beta Version des neuen Power Packs herunterzuladen muss man sich auf der Microsoft Connect Seite Registrieren.
Nach dem Download erhält man ein Verzeichnis dass drei Updates, die Release Dokumentation und jeweils eine Batch Datei für Installation und Deinstallation beinhaltet. Die Batch Datei macht nichts anderes als der Reihe nach folgende Updates zu installieren: (es empfiehlt sich die Verwendung der Batch Datei, so erspart man sich einige Reboots :)).
Nach der Installation wird der WHS Connector auf den Clients automatisch aktualisiert. Die neuen Features sind nach dem Update verwendbar.
Für die Integration in das Media Center muss man den Media Center Connector (Start Menü) ausführen.
Nach einem Neustart sind die Bibliotheken des WHS im Media Center verfügbar.
Wann die endgültige Version des Power Pack 3 verfügbar sein wird ist noch nicht bekannt, man spekuliert auf eine Veröffentlichung zeitgleich mit Windows 7, also vermutlich im Oktober.
Viele Grüße!
]]>Wie ich dabei vorgegangen bin erklärt dieser Beitrag
Schritt 1 – SQL Server installieren
Als erstes habe ich mir einen neuen Server auf meiner Hyper-V Umgebung bereitgestellt und auf diesen dann Microsoft SQL Server 2008 installiert.
Schritt 2 – Tabellen erstellen
Um meine EventLogs zu speichern habe ich 2 gleiche Tabelle erstellt. Eine für das temporäre Speichern der EventLogs (“tblTMPLog”) und eine für das dauerhafte Speichern (“tblSecurityObject”). Die temporäre Tabelle wird deshalb verwendet, da die Daten vor dem eigentlichen Speichern noch bereinigt werden.
Schritt 3 – EventLogs exportieren
Um die Event Logs vom Server zu exportieren hilft uns das Tool “DUMPEVT”. Es exportiert Logs vom Server und schreibt sie in ein File. Die Logs werden dabei vom Server nicht gelöscht. Auch merkt sich das Tool welche Logs vom Server schon exportiert wurden, sodass ein Mehrfach-Export nicht passieren kann.
DUMPEVT habe ich heruntergeladen, und unter C:\DUMPEVT entpackt.
Nun kann man sich schon von der Befehlszeile Logs vom Server holen
“C:\DUMPEVT\DUMPEVT.exe /logfile=sec /outfile=C:\DUMPEVT\evtlog.csv
/computer=localhost
Die Logs werden wie angegeben in die Datei evtlog.csv geschrieben
Es ist auch möglich DUMPEVT vom SQL Server aus zu steuern. Dafür muss als erstes das Feature “xp_cmdshell” aktiviert werden (sofern nicht nicht geschehen).
Mit den folgenden Code kann man sich dann die Logs holen
master..xp_cmdshell 'C:\DUMPEVT\DUMPEVT.exe /logfile=sec /outfile=C:\DUMPEVT\evtlog.csv
/computer=localhost'
Schritt 4 – Logs in die SQL Datenbank importieren
Um die Logs in SQL zu importieren wird zunächst die temporäre Tabelle gelöscht und dann über den BULK INSERT Befehl eingelesen.
DELETE FROM tblTMPLog
BULK INSERT tblTMPLog FROM 'c:\dumpevt\evtlog.csv'
WITH (FIELDTERMINATOR = ',')
Schritt 5 – Tabelle bereinigen
Wenn ich jetzt ein SELECT * FROM tblTMPLog ausführe, erhalte ich folgende Ausgabe:
Um die Daten zu bereinigen, entferne ich alle Ereignisse, die nicht die Kategorie “Objektzugriff”, ID “560” aufweisen. Im Field Data werden Sonderzeichen entfernt, die vom Export des Logs entstanden sind.
DELETE FROM tblTMPLog WHERE NOT Category = 'Objektzugriff'
DELETE FROM tblTMPLog WHERE NOT EventID = '560'
Update tblTMPLog Set Data = Replace(Data, ' ', '')
Update tblTMPLog Set Data = Replace(Data, '^', '')
Update tblTMPLog Set Data = Replace(Data, '`', '')
Schritt 6 – Temporäre Tabelle übertragen
Nachdem die Daten bereinigt wurden, kann die temporäre Tabelle in die fixe Tabelle übertragen werden. Wenn nötig, kann man sich an dieser Stelle die Daten noch ein wenig zurechtrücken.
Bsp: Nur die Information “Objektname” wird für das Field Data übertragen.
UPDATE tblSecurityObject
SET Data = SUBSTRING(Data,CHARINDEX('Objektname:', Data)+12,CHARINDEX('Handlekennung:', Data) - CHARINDEX('Objektname:', Data)-12)
WHERE CHARINDEX('Objektname:', Data) > 0
Schritt 7 – Auswertung
Nachdem die Daten sich auf dem SQL Server befinden, kann man diese entsprechend sauber auswerten und speichern.
Bsp: Programm in C# um die SQL Daten anzuzeigen
Viel Spaß beim importieren und auswerten, dn
- Vielen Dank an Robert van den Berg, der in seinem Blog das Thema bereits ähnlich behandelt hat -
]]>Ihr habt einen ISA Server als Firewall und mehrere öffentliche IP Adressen zur Verfügung. Die Adressen werden dem externen Interface des ISA Servers zugewiesen.
Beispiel:
200.200.200.1 –> VPN
200.200.200.2 –> OWA
200.200.200.3 –> Veröffentlichte Webseite
200.200.200.4 –> Sonstiges
Der MX-Reccord der Domäne leitet Mails der IP Adresse 200.200.200.2 weiter. Von der 200.200.200.2 werden die Mails dem internen Mailserver zugestellt. Der Zielverkehr für das externe Netzwerk wird über die erste IP Adresse am externen Interface geleitet. Folglich wird Internetverkehr, sowie Mails über die öffentliche IP 200.200.200.1 geleitet (nach Standardkonfiguration).
Wenn eurer Mailserver selbst die DNS-Auflösung vornimmt und Mails dem Ziel zustellt, tut er das mit der 200.200.200.1
Mailserver führen vermehrt ein Reverse-DNS-Lookup durch, um den Versender zu verifizieren. In dieser Konfiguration stellt das aber ein Problem dar, da die Mails über die 200.200.200.1 versendet werden, der MX aber auf die 200.200.200.2 zeigt. Folglich kann es passieren, dass Mails nicht angenommen werden oder man landet gleich direkt auf der Blacklist.
Um dieses Problem zu beheben hat man 2 Möglichkeiten:
ISA Server unterstützt bis jetzt (aktuelle Version 2006) nicht die Anbindung mehrerer öffentlicher IP Adressen.
Grüße, dn
]]>DirectAccess ist der traditionellen VPN Verbindung sehr ähnlich, bietet jedoch entscheidende Vorteile: Clientcomputer initiieren automatisch eine gesicherte Verbindung zum Ziel. Somit bedarf es keinen Eingriff des Users, denn er ist sofort mit dem Zielnetzwerk verbunden.
DirectAcces baut eine IPv6 Verbindung zum DirectAccess Server auf. Sollte die Firewall den IPv6 Verkehr blocken, so wird IP over HTTPS verwendet. Somit kann also jede Firewall mit geöffneten Web-Ports passiert werden.
Man kann DirectAccess in 3 verschiedene Modi betreiben:
Ein weiterer Vorteil bezieht sich auf das Patch- und Richtlinienmanagement. Befindet sich der Client mehrere Wochen nicht im internen Netzwerk, könnte es unter Umständen sein, dass er in dieser Zeit keine Updates vom Server bezieht. Mit DirectAccess ist der Client ständig in Verbindung mit den internen Servern und kann Updates sowie die aktuellen GPO’s beziehen.
Um DirectAccess benutzen zu können ist zwingend Windows 7, Windows Server 2008 R2 und eine PKI nötig. Der Client muss außerdem der Domäne angehören.
Grüße, dn
]]>Virtuelle Festplatten können direkt in der Datenträgerverwaltung erstellt werden (rechtsklick auf Datenträgerverwaltung, neue virtuelle Festplatte).
Will man Windows 7 auf der zu erstellenden VHD installieren muss man die Festplatte mit fester Größe erstellen.
Windows 7 von einem beliebigem Installationsmedium (USB Stick, DVD) starten und mit Shift-F10 eine Eingabeaufforderung starten. Jetzt muss man die vorhin erstellte VHD mit diskpart einbinden. Dazu wird die VHD mit selet vdisk file=c:\pfad\zur\datei.vhd ausgewält und mit attach vdisk angebunden.
Die Installation von Windows 7 kann jetzt normal fortgesetzt werden, die Warnung dass Windows auf einer virtuellen Festplatte nicht installiert werden kann, ignoriert man einfach.
mfg
tt
Um den USB Stick vorzubereiten verwendet man das Programm diskpart (standartmäßig installiert). Diskpart wird in einer Eingabeaufforderung mit administrativen Rechten gestartet.
Wenn Diskpart gestartet wurde "list disks" ausführen, um die installierten Laufwerke anzuzeigen.
Mit "select disk" wird der USB Stick ausgewählt, dann wird er mit "clean" gelöscht (ACHTUNG: Alle Daten auf dem Stick gehen verloren)
Jetzt wird mit "create partition primary" eine Primäre Partition erstellt die mit "active" als Aktiv gesetzt wird (damit das BIOS davon booten kann). Jetzt fehlt noch das Dateisystem das mit "format fs=fat32 quick" festgelegt wird. Mit "assign" weißt man noch einen Laufwerksbuchstaben zu.
Dieser Prozess kann auch über GUI ausgeführt werden, wichtig ist nur dass am Ende eine primäre, aktive Fat32 Partition auf dem USB Stick vorhanden ist.
Zu Schluss kopiert man noch alle Daten von der Windows 7 DVD auf den USB Stick. So erstellt man einen Bootfähigen Stick, man muss nur noch dem BIOS beibringen davon zu starten und schon kann Windows installiert werden.
Genauere Details zu Diskpart gibts im entsprechenden KB Artikel.
]]>Als erstes wird der aktuelle Stand der IT-Sicherheit ermittelt, das Tool gibt eine nach Priorität geordnete Liste mit Problemen und Verbesserungsmöglichkeiten aus.
Folgende Features sind im Tool enthalten:
Downloaden kann man das Tool hier
Grüße, dn
]]>Die wichtigsten Daten im Überblick:
Bei diesen Daten handelt es sich um die englischen Versionen, andere Sprachen folgen am 1. Oktober und in den Regalen steht Windows 7 ab 22. Oktober.
viele Grüße
tt
Um einen Makro digital zu signieren und das Zertifikat der Domäne zur Verfügung zu stellen bedarf es mehrerer Schritte:
Nun muss nur mehr das Zertifikat den Usern bereit gestellt werden. Wenn man das mit einem GPO macht, muss darauf geachtet werden, dass man die Einstellungen für Computer vornimmt.
Das Zertifikat muss als erstes unter die Vertrauenswürdigen Stammzertifizierungsstellen
Computerkonfiguration > Windows-Einstellungen > Sicherheitseinstellungen > Richtlinien öffentlicher Schlüssel > Vertrauenswürdige Stammzertifizierungsstellen
Bis hierher wird das Zertifikat in den lokalen Zertifikat-Speicher “Vertrauenswürdigen Stammzertifizierungsstellen” geschoben. Das Zertifikat muss aber noch in den Speicher für “Vertrauenswürdige Herausgeber”, sonst erscheinen weiterhin Abfragen. Um das Zertifikat da rein zubekommen muss im vorher konfigurierten GPO eine neue “Richtlinie zur Softwareeinschränkung” erstellt werden.
Computerkonfiguration > Windows-Einstellungen > Sicherheitseinstellungen > Richtlinien öffentlicher Schlüssel > Richtlinien für Softwareeinschränkung
Danach muss unter “Zusätzliche Regeln” eine neue Zertifikatsregel mit den entsprechenden Zertifikat erstellt werden.
Wichtig dabei ist, dass die Sicherheitsstufe “Nicht eingeschränkt” lautet.
Nun wird das Zertifikat an alle Computer unter dem GPO verteilt. Alle digital signierten Makros werden ohne Abfrage ausgeführt.
]]>
und zweitens ein Problemchen über das ich in dieser Woche gestolpert bin:
IIS 7 blockiert aus Sicherheitsgründen sogenannte Double-Escape Sequenzen ("+" "-"). Da die Delta CRL jedoch standardmäßig ein "+" im Namen hat schlägt der Download fehl.
Möchte man die CRL's bzw. Delta CRL's in seiner PKI über http veröffentlichen kann man sich durch abschalten dieser Sicherheitsfunktion für die betreffenden Virtual Directories helfen:
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/virtual Directory" -section:system.webServer/security/requestFiltering -allowDoubleEscaping:true
"virtual Directory" entspricht dem Virtuellen Verzeichnis in dem die Delta CRL veröffentlicht wird.
hier der entsprechende KB Artikel: http://support.microsoft.com/kb/942076
mfg
tt
Es scheint Probleme zu geben, wenn zum Internet Explorer 8 der „Microsoft Software Inventory Analyzer“ installiert wird. Deinstallation des Analyzers hat das Problem behoben.
]]>
Daniel Nitz
arbeitet seit mehreren Jahren als Systemadministrator (IT Leiter) in einem Südtiroler Unternehmen welches auch international tätig ist. Dort hat er die gesamte Infrastruktur neu aufgebaut und dabei auf Skalierbarkeit, Performance und Fehlertoleranz geachtet.
Zertifikate: MCSE+M 2003, MCTS, MCITP, CCNA
Thomas Torggler
arbeitet seit mehreren Jahren in der IT Branche, war einige Zeit als Techniker unterwegs und betreute mehrere Firmen unterschiedlicher Größe. Seit Januar 2009 ist er als Systemadministrator in einem großen Südtiroler Unternehmen tätig.
Zertifikate: MCSA+M 2003, MCTS, MCITP, CCNA
]]>
1. Inhalt des Onlineangebotes
Der Autor übernimmt keinerlei Gewähr für die Aktualität, Korrektheit, Vollständigkeit oder Qualität der bereitgestellten Informationen. Haftungsansprüche gegen den Autor, welche sich auf Schäden materieller oder ideeller Art beziehen, die durch die Nutzung oder Nichtnutzung der dargebotenen Informationen bzw. durch die Nutzung fehlerhafter und unvollständiger Informationen verursacht wurden, sind grundsätzlich ausgeschlossen, sofern seitens des Autors kein nachweislich vorsätzliches oder grob fahrlässiges Verschulden vorliegt.
Alle Angebote sind freibleibend und unverbindlich. Der Autor behält es sich ausdrücklich vor, Teile der Seiten oder das gesamte Angebot ohne gesonderte Ankündigung zu verändern, zu ergänzen, zu löschen oder die Veröffentlichung zeitweise oder endgültig einzustellen.
2. Verweise und Links
Bei direkten oder indirekten Verweisen auf fremde Webseiten ("Hyperlinks"), die außerhalb des Verantwortungsbereiches des Autors liegen, würde eine Haftungsverpflichtung ausschließlich in dem Fall in Kraft treten, in dem der Autor von den Inhalten Kenntnis hat und es ihm technisch möglich und zumutbar wäre, die Nutzung im Falle rechtswidriger Inhalte zu verhindern.
Der Autor erklärt hiermit ausdrücklich, dass zum Zeitpunkt der Linksetzung keine illegalen Inhalte auf den zu verlinkenden Seiten erkennbar waren. Auf die aktuelle und zukünftige Gestaltung, die Inhalte oder die Urheberschaft der verlinkten/verknüpften Seiten hat der Autor keinerlei Einfluss. Deshalb distanziert er sich hiermit ausdrücklich von allen Inhalten aller verlinkten /verknüpften Seiten, die nach der Linksetzung verändert wurden. Diese Feststellung gilt für alle innerhalb des eigenen Internetangebotes gesetzten Links und Verweise sowie für Fremdeinträge in vom Autor eingerichteten Gästebüchern, Diskussionsforen, Linkverzeichnissen, Mailinglisten und in allen anderen Formen von Datenbanken, auf deren Inhalt externe Schreibzugriffe möglich sind. Für illegale, fehlerhafte oder unvollständige Inhalte und insbesondere für Schäden, die aus der Nutzung oder Nichtnutzung solcherart dargebotener Informationen entstehen, haftet allein der Anbieter der Seite, auf welche verwiesen wurde, nicht derjenige, der über Links auf die jeweilige Veröffentlichung lediglich verweist.
3. Urheber- und Kennzeichenrecht
Der Autor ist bestrebt, in allen Publikationen die Urheberrechte der verwendeten Bilder, Grafiken, Tondokumente, Videosequenzen und Texte zu beachten, von ihm selbst erstellte Bilder, Grafiken, Tondokumente, Videosequenzen und Texte zu nutzen oder auf lizenzfreie Grafiken, Tondokumente, Videosequenzen und Texte zurückzugreifen.
Alle innerhalb des Internetangebotes genannten und ggf. durch Dritte geschützten Marken- und Warenzeichen unterliegen uneingeschränkt den Bestimmungen des jeweils gültigen Kennzeichenrechts und den Besitzrechten der jeweiligen eingetragenen Eigentümer. Allein aufgrund der bloßen Nennung ist nicht der Schluss zu ziehen, dass Markenzeichen nicht durch Rechte Dritter geschützt sind!
Das Copyright für veröffentlichte, vom Autor selbst erstellte Objekte bleibt allein beim Autor der Seiten. Eine Vervielfältigung oder Verwendung solcher Grafiken, Tondokumente, Videosequenzen und Texte in anderen elektronischen oder gedruckten Publikationen ist ohne ausdrückliche Zustimmung des Autors nicht gestattet.
4. Datenschutz
Sofern innerhalb des Internetangebotes die Möglichkeit zur Eingabe persönlicher oder geschäftlicher Daten (Emailadressen, Namen, Anschriften) besteht, so erfolgt die Preisgabe dieser Daten seitens des Nutzers auf ausdrücklich freiwilliger Basis. Die Inanspruchnahme und Bezahlung aller angebotenen Dienste ist - soweit technisch möglich und zumutbar - auch ohne Angabe solcher Daten bzw. unter Angabe anonymisierter Daten oder eines Pseudonyms gestattet. Die Nutzung der im Rahmen des Impressums oder vergleichbarer Angaben veröffentlichten Kontaktdaten wie Postanschriften, Telefon- und Faxnummern sowie Emailadressen durch Dritte zur Übersendung von nicht ausdrücklich angeforderten Informationen ist nicht gestattet. Rechtliche Schritte gegen die Versender von sogenannten Spam-Mails bei Verstössen gegen dieses Verbot sind ausdrücklich vorbehalten.
5. Rechtswirksamkeit dieses Haftungsausschlusses
Dieser Haftungsausschluss ist als Teil des Internetangebotes zu betrachten, von dem aus auf diese Seite verwiesen wurde. Sofern Teile oder einzelne Formulierungen dieses Textes der geltenden Rechtslage nicht, nicht mehr oder nicht vollständig entsprechen sollten, bleiben die übrigen Teile des Dokumentes in ihrem Inhalt und ihrer Gültigkeit davon unberührt.
1. Content
The author reserves the right not to be responsible for the topicality, correctness, completeness or quality of the information provided. Liability claims regarding damage caused by the use of any information provided, including any kind of information which is incomplete or incorrect,will therefore be rejected.
All offers are not-binding and without obligation. Parts of the pages or the complete publication including all offers and information might be extended, changed or partly or completely deleted by the author without separate announcement.
2. Referrals and links
The author is not responsible for any contents linked or referred to from his pages - unless he has full knowledge of illegal contents and would be able to prevent the visitors of his site fromviewing those pages. If any damage occurs by the use of information presented there, only the author of the respective pages might be liable, not the one who has linked to these pages. Furthermore the author is not liable for any postings or messages published by users of discussion boards, guestbooks or mailinglists provided on his page.
3. Copyright
The author intended not to use any copyrighted material for the publication or, if not possible, to indicate the copyright of the respective object.
The copyright for any material created by the author is reserved. Any duplication or use of objects such as images, diagrams, sounds or texts in other electronic or printed publications is not permitted without the author's agreement.
4. Privacy policy
If the opportunity for the input of personal or business data (email addresses, name, addresses) is given, the input of these data takes place voluntarily. The use and payment of all offered services are permitted - if and so far technically possible and reasonable - without specification of any personal data or under specification of anonymized data or an alias. The use of published postal addresses, telephone or fax numbers and email addresses for marketing purposes is prohibited, offenders sending unwanted spam messages will be punished.
5. Legal validity of this disclaimer
This disclaimer is to be regarded as part of the internet publication which you were referred from. If sections or individual terms of this statement are not legal or correct, the content or validity of the other parts remain uninfluenced by this fact.
]]>
Exchange: Set SimpleDisplayName on all Mailboxes where this Attribute is empty; change characters like ö to oe; send E-Mail if script fails
1: Import-Module 'C:\Users\daniel nitz\AppData\Roaming\Microsoft\Exchange\RemotePowerShell\ex2k10.domain.local\ex2k10.domain.local.psm1'
2:
3: $Mailboxes = get-Mailbox | where {$_.SimpleDisplayName -eq ""}
4: if($Mailboxes -ne $null)
5: {
6: try {
7: ForEach ($Mailbox in $Mailboxes)
8: {
9: $NameString = $Mailbox.Name
10: if($NameString -match "ü")
11: {
12: $NameString = ($NameString -replace "ü","ue")
13: }
14: if($NameString -match "ä")
15: {
16: $NameString = ($NameString -replace "ä","ae")
17: }
18: if($NameString -match "ö")
19: {
20: $NameString = ($NameString -replace "ö","oe")
21: }
22: Set-Mailbox -Identity $Mailbox.Name -SimpleDisplayName ($NameString + " - COMPANY")
23: }
24: } Catch {
25: Send-MailMessage -to daniel.nitz@domain.local -Subject "Exchange Shell Script Error" -from ex2k10@domain.local -SmtpServer ex2k10.domain.local
26: }
27: }
28:
Exchange: Set Out of Office Assistent on Mailboxes where the “Office” property isn´t empty
1: Import-Module 'C:\Users\daniel nitz\AppData\Roaming\Microsoft\Exchange\RemotePowerShell\ex2k10.domain.local\ex2k10.domain.local.psm1'
2:
3: $Mailboxes = get-Mailbox | where {$_.Office -ne ""}
4: try {
5: $OOFTextExternal = ${E:\OOF-Text\External-Text.txt}
6: $OOFTextInternal = ${E:\OOF-Text\Internal-Text.txt}
7:
8: ForEach ($Mailbox in $Mailboxes)
9: {
10: Set-MailboxAutoReplyConfiguration -Identity $Mailbox.Name -AutoReplyState scheduled -StartTime "2011.01.21T07:00" -EndTime "2011.01.21T19:00" -ExternalAudience All -ExternalMessage $OOFTextExternal -InternalMessage $OOFTextInternal
11: }
12: } Catch { Send-MailMessage -to daniel.nitz@domain.local -Subject "Exchange Shell Script Error" -from ex2k10@domain.local -SmtpServer ex2k10.domain.local
13: }
The default Value for the Path parameter assumes Lync 2013 Resource Kit Tools are installed at C:\Program Files\Microsoft Lync Server 2013\ResKit.
This function requires version 3 of PowerShell as well as the Lync Module for user validation.
Note: Check the related links for a really cool GUI wrapper by MVP Johan Veldhuis.
.\Invoke-SEFAUtil.ps1 -Server ly15.tomt.local -Username thomas@tomt.it
This example invokes SEFAUtil without additional parameters, call forwarding settings for the user thomas@tomt.it are shown.
.\Invoke-SEFAUtil.ps1 -Server ly15.tomt.local -Username thomas@tomt.it -EnableSimulRing +391231234567
This example enables Simul Ring for the user thomas@tomt.it. The destination number for Simul Ring is +391231234567.
.\Invoke-SEFAUtil.ps1 -Server ly15.tomt.local -Username thomas@tomt.it -AddTeamMember user10@tomt.it
This example adds user10@tomt.it to thomas@tomt.it. This will also enable Simul Ring for the user.
.\Invoke-SEFAUtil.ps1 -Server ly15.tomt.local -Username thomas@tomt.it -DelayRingTeam 10
This example set's the delay for Team Calls to 10 seconds for the user thomas@tomt.it
.\Invoke-SEFAUtil.ps1 -Server ly15.tomt.local -Username thomas@tomt.it –DisableTeamCall
This example disables Team Call for thomas@tomt.it
Get-CsUser -OU "OU=users,OU=tomt,DC=tomt,DC=local" | .\Invoke-SEFAUtil.ps1 -Server ly15.tomt.local -Verbose -AddDelegate thomas@tomt.it
This example uses Get-CsUser to get all Lync Users from within the specified Organizational Unit and adds thomas@tomt.it as delegate.
http://www.ntsystems.it/post/Invoke-SEFAUtil-a-PowerShell-wrapper-function.aspx
http://technet.microsoft.com/en-us/library/jj945604.aspx
http://johanveldhuis.nl/en/sefautil-gui/
I uploaded the Script to the PowerShell Gallery, so you can easily download it using:
Save-Script -Name Invoke-SEFAUtil -Path <path>
The latest version of the script can be found here:
]]>Inputs
You can pipe objects with a VMName property, such as returned by Get-VM, to this script.
Outputs
None. This script does not write any objects to the pipeline.
Role
Get-VM does not return anything without administrative rights. Depending on the location of the virtual disk files, administrative permissions might be required to update ACLs.
Example 1
.\Restore-VMPermission.ps1 -VM dc01
This example adds permission the VMId of dc01 to the ACL of all assigned disks for dc01.
Example 2
Get-VM | .\Restore-VMPermission.ps1
This example uses Get-VM to get all VMs on the local machine. It gets all disks for all VMs and adds the required permissions for the VMId of the VM to the ACL of every disk.
I uploaded the Script to the PowerShell Gallery, so you can easily download it using:
Save-Script -Name Restore-VMPermission -Path <path>
Alternatively, the latest version of the script can be found here:
]]>Inputs
None. This script does not take any pipeline input.
Outputs
None. This script does not write any output to the pipeline.
Permissions
The Account used to run this script needs to be member of the RTCUniversalServerAdmins group.
Example 1
.\Start-LyncBackup.ps1 -PoolFqdn lyncpool01.example.com -Path \\SERVER\Share\CSBackup
This example exports Lync config and saves it into a subfolder at \\SERVER\Share\CSBackup
Example 2
.\Start-LyncBackup.ps1 -PoolFqdn lyncpool01.example.com -Path \\SERVER\Share\CSBackup -Retention 10
This example exports Lync config and saves it into a subfolder at \\SERVER\Share\CSBackup. It deletes existing backups in the destination directory if they are older than 10 days.
Notes
author: tto; @torggler
Date: 2013-08-17
Version: 1.1
1.1 Added Retention parameter and some error handling.
1.0: Basics
To-do: Support for 2010, Multiple pools, include Lync file store, autodiscovery
The function writes $true or $false fore each tested object.
This function makes use of Richard Muellers "PowerShell script to check group membership". Check the related link.
Inputs
You can pipe an ADAccount object, such as returned by Get-AdUser or Get-AdComputer, to Test-GroupMembership.
Outputs
Test-GroupMembership returns $true or $false for each tested account.
Example 1
Get-AdUser -Filter * | Test-GroupMemership -GroupName "Domain Users"
This example gets users from Active Directory and tests wether or not they are member of the "Domain Users" security group.
Example 2
Get-AdComputer -Filter * | Test-GroupMemership -GroupName "Domain Computers"
This example gets computers from Active Directory and tests wether or not they are member of the "Domain Computers" security group.
Related Links
Richard Muellers Script in the TechNet ScriptCenter:
http://gallery.technet.microsoft.com/scriptcenter/5adf9ad0-1abf-4557-85cd-657da1cc7df4
The latest version of the script can be found here:
]]>Im folgenden Beispiel ruft Teilnehmer A (+49151xxxxxxxx) Teilnehmer B (+39047xxxxx) an, Teilnehmer B nimmt das Gespräch an. Anschließend hält Teilnehmer B das Gespräch. Die Frage die sich stellt ist natürlich wie signalisiert ein Teilnehmer (B) dem anderen (A) dass er das Gespräch halten möchte?
Bevor ein Gespräch gehalten werden kann, muss dieses aufgebaut werden. Dazu sendet Teilnehmer A eine INVITE Anfrage an Teilnehmer B. Der Header beschreibt die SIP Sitzung, im Body wird mit SDP die Medien Sitzung beschrieben. Die interessanten Felder fasse ich hier zusammen:
Invite Header:
From: <sip:+49151xxxxxxxx@uclab.eu;user=phone>;epid=5075F8584B;tag=1559ef9c1
To: <sip:+39047xxxxx@uclab.eu;user=phone>;epid=ea6d933f37
CSeq: 24467 INVITE
Call-ID: c73279cc-a979-40b4-bb7b-6e261ab0ddc4
Invite Body:
c=IN IP4 192.168.1.100
m=audio 54720 RTP/AVP 0 8 115 13 118 97 101
Der Lync Client des angerufenen Teilnehmers (B) muss die empfangene Anfrage beantworten und macht dies mit einem 200 OK. In diesem schickt er SDP Informationen mit, welche die RTP Sitzung aus seiner Sicht beschreiben:
Ok Header:
From: <sip:+49151xxxxxxxx@uclab.eu;;user=phone>;epid=5075F8584B;tag=1559ef9c1
To: <sip:+39047xxxxx@uclab.eu;user=phone>;epid=ea6d933f37;tag=4f75d0c634
Call-ID: c73279cc-a979-40b4-bb7b-6e261ab0ddc4
CSeq: 24467 INVITE
Ok Body:
c=IN IP4 192.168.1.6
m=audio 8746 RTP/AVP 8 0 13 101
Um eine existierende SIP Sitzung (Dialog) zu ändern, schickt Teilnehmer B ein INVITE bei dem die Werte für Call-ID sowie From und To Tag identisch mit denen aus der bestehenden Sitzung sind. Man spricht in diesem Fall von einem re-Invite. Das Ziel dieses erneuten Invites ist es die RTP Sitzung zu ändern, also schickt der User Agent des Teilnehmer B neue SDP Informationen an Teilnehmer A, diese enthalten die Beschreibung der RTP Sitzung aus sicht von Teilnhemer B.
re-Invite Header:
From: "" <sip:+39047xxxxx@uclab.eu;user=phone>;epid=ea6d933f37;tag=4f75d0c634
To: <sip:+49151xxxxxxxx@uclab.eu;;user=phone>;epid=5075F8584B;tag=1559ef9c1
Call-ID: c73279cc-a979-40b4-bb7b-6e261ab0ddc4
CSeq: 1 INVITE
re-Invite Body:
c=IN IP4 192.168.1.6
m=audio 8746 RTP/AVP 8 0 13 101
a=sendonly
Auch diese Anfrage muss der Lync Client beantworten, in diesem Fall erhält Teilnehmer A die Invite Nachricht, Teilnehmer B möchte das Gespräch halten.
Ok Header:
From: ""<sip:+39047xxxxx@uclab.eu;user=phone>;tag=4f75d0c634;epid=ea6d933f37
To: <sip:+49151xxxxxxxx@uclab.eu;user=phone>;epid=5075F8584B;tag=1559ef9c1
CSeq: 1 INVITE
Call-ID: c73279cc-a979-40b4-bb7b-6e261ab0ddc4
Ok Body:
c=IN IP4 192.168.1.100
m=audio 6190 RTP/AVP 8 13 101
a=recvonly