Skip to main content

Powercli New-Datastore script to mount NFS datastores

One of the pain points of building out a ESXi host is usually when you are presenting your NFS storage to an ESXi host. A few datastore is a easy task but when you have to
present 10+ for each of your host it can be a pain. At this point you either have host profiles to help you or you start using powercli to help automate the task.

I will talk through how I will be using the command "new-datastore" cmdlet. The easier way to just add one datastore is to run to command:

new-datastore -nfs -Name Datastore_Name -Path /vol/abc -nfshost IP_Of_NFS_Server

Name - the name that you want to use to help identify the datastore in ESXi host
Path - the export path from your NFS server
Nfshost - ip address of your nfs server

new-datastore -nfs -Name nfsdatastore -path /vol/nfsdatastore -nfshost

So you could write a command for each new datastore you wish to add to a host in to a powershell script as shown below:

new-datastore -nfs -Name nfsdatastore01 -path /vol/nfsdatastore01 -nfshost
new-datastore -nfs -Name nfsdatastore02 -path /vol/nfsdatastore02 -nfshost
new-datastore -nfs -Name nfsdatastore03 -path /vol/nfsdatastore03 -nfshost

As we are scripting we should try to store all datastore information in a csv file so that we just loop the command and pull in the required variables from the csv.

Steps to creating the script using powercli version 6.0.0

- Create a csv with the following headings "nfshost", "path" & "name" and save it as a csv, example datastores.csv.
nfshost = your NFS server IP address
path = path to the export of your NFS datastore
name = name you wish to give the datastore in ESXi host

- We now can build the script and below is the script that I have built

Explanation of the script

Line 1 - We are storing the path to the csv file to a variable named $DatastoreCSVPath.

Line 2 - We are using "import-csv" cmdlet to import our CSV file from variable $DatastoreCSVPath to a new variable $DatastoresConf.

Line 3 to 6 - We will use the "foreach" loop method to help us loop through the data stored in variable $DatastoresConf". Line 5 is the main script of the work and you can see I am using the cmdlet "new-datastore".

Three key values are needed which are "Name", "Path" and "Nfshost" to complete a mount of a datastore. We have stored those values in the variable $Datastore as an array of objects now. To use them we would need to reference them by VariableName.ValueName. So with my example it would be $ or $datastore.path or $datastore.nfshost as those are the only three value names/headers I have used in my csv file.

Line 5 - Command
New-Datastore -Nfs -Name $Datastore.Name -Path $Datastore.Path -Nfshost $Datastore.NfsHost

As you can see I have called the right fields values to the right place within the command I have issued.

That's it. This script is just a really basic one and there can be loads more added to it such as error checking, logging, mounting the datastore as read only etc.

Using script saves time and helps reduce human errors and is repeatable. Go have a play with it.


Popular posts from this blog

Rolling back a version of ESXi

There is an option in VMware where after you have performed an major upgrade of ESXi you can roll back to your previous version. The benefit of this is that you would not need to reinstall your ESXi and its configuration if you had issues with the new software. I had to do this on one occassion in my lab where I upgraded from 6.5 to 6.7 and my VMs would not run because the CPU was not supported in 6.7. Please remember if you are using ISO method to upgrade ESXi please ensure you select "Upgrade ESXi, preserve VMFS datastore". Selecting "Install ESXi, preserve VMFS datastore" does not mean preserving datastore means retaining ESXi as it will still do a clean install of ESXi. This method does not work for vSphere 7.0 as there are changes to the partitions on the boot device. Below are the steps to roll back to a previous version which is quite straight forward. As always perform an backup of your host configuration before you upgrade or rollback ( KB2042141 ). I have

Configuring ESXi 6 host to send logs to Syslog Server

In my previous post I talked about configuring VMware Syslog server for Windows which is installed and enabled by default on installation of vCenter 6 for Windows. I will now describe the basic configuration that is required on an ESXi 6 host to be able to send logs out to a syslog server using my vCenter as the example. 1) Navigate to your ESXi host within vCenter. Go to "Manage" tab and select "Settings" followed by "Advanced System Settings". Look for the settings "" and highlight this settings. Click the pencil icon to edit the configuration for this setting. 2) You can now add the host name or ip address of your syslog server/s. You can enter just hostname or IP address, use udp://hostname:514 or ssl://hostname:1514 to be more specific on the port and protocol to be used. If you have multiple hosts then you use the comma (,) to separate each server i.e. udp://,udp:// 3)We n

Custom ESXi Image - ISO using PowerCLI

There comes a time when you have purchased a new hardware to run your ESXi software and discover that the installable base media provided by VMware does not include the drivers or the drivers are out of date. In the world of Windows (Plug and Play) it would discover the hardware and prompt you to provide the drivers so that Windows would install/update the drivers for the hardware. For ESXi if the drivers are not present during load time then the hardware will possibly not work. VMware uses VIB (vSphere Installation Bundle) as a way for vendors to distribute their drivers. To install these VIBs you can either use Update Manager or command line (esxcli). Now this is all good but it does mean you have to first install the base ESXi then use one of the steps above to install/update the drivers.   Some people might feel that it is OK to update the drivers using the above methods but what if it was the network card that was the new hardware and you needed new drivers. Without the net