Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Question
Tuesday, April 25, 2017 10:23 AM
Hello,
My customer needs report of all DHCP scopes and active leases. We have two Windows Server 2012 R2 DHCP servers and they are failover partners for each other.
Report should include all following information:
- Host name
- Leased IP address
- ScopeID
- Scope name (we have over 400 scopes)
I attempted to run following command, but it didn't return scope names :(
Get-DhcpServerv4Scope -Computername dhcp1.domain.local | Get-DhcpServerv4Lease -Computername dhcp1.domain.local
All replies (12)
Friday, April 28, 2017 9:12 AM
Hi,
name is scope name!
Better one:
$scopes = Get-DhcpServerv4Scope -ComputerName 2012r2dc
foreach($scope in $scopes)
{
write-host "The current scope name is:" $scope.name -ForegroundColor Red
$lease = Get-DhcpServerv4Lease -ScopeId $scope.ScopeId
$lease
}
Best regards,
Andy
Please remember to mark the replies as answers if they help.
If you have feedback for TechNet Subscriber Support, contact [email protected].
Tuesday, May 2, 2017 12:53 PM
Hi Andy and thanks,
It outputs the information I need, but I would like to have output to a CSV file and for some reason only 17 first characters of hostname is displayed, rest is replaced by three dots (...)
Wednesday, May 3, 2017 4:25 AM
Hi weedee
>>only 17 first characters of hostname is displayed, rest is replaced by three dots (...)
$lease | select -expandproperty *name* | export-csv /out-file xx.csv
Best regards,
Andy
Please remember to mark the replies as answers if they help.
If you have feedback for TechNet Subscriber Support, contact [email protected].
Wednesday, May 3, 2017 6:31 AM
$scopes = Get-DhcpServerv4Scope -ComputerName SEA-DHCP01
foreach($scope in $scopes)
{
write-host "The current scope name is:" $scope.name -ForegroundColor Red
$lease = Get-DhcpServerv4Lease -ScopeId $scope.ScopeId
$lease | select -expandproperty *name* | export-csv /out-file C:\export.csv
}
It gives me errors:
The current scope name is: Building 1
Export-Csv : Cannot bind parameter 'Delimiter'. Cannot convert value "C:\export.csv" to type "System.Char". E
rror: "String must be exactly one character long."
At line:6 char:67
- $lease | select -expandproperty *name* | export-csv /out-file C:\export.csv
- ~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Export-Csv], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.ExportCsvCommand
The current scope name is: Building 2
Export-Csv : Cannot bind parameter 'Delimiter'. Cannot convert value "C:\export.csv" to type "System.Char". E
rror: "String must be exactly one character long."
At line:6 char:67 - $lease | select -expandproperty *name* | export-csv /out-file C:\export.csv
- ~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Export-Csv], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.ExportCsvCommand
Wednesday, May 3, 2017 6:52 AM
oh,no!
my fault:
$lease | select -expandproperty *name* | export-csv xx.csv
$lease | select -expandproperty *name* | out-file xx.csv
I mean use export-csv or out-file
Best regards,
Andy
Please remember to mark the replies as answers if they help.
If you have feedback for TechNet Subscriber Support, contact [email protected].
Wednesday, May 3, 2017 7:25 AM
Nope, still not working :(
S C:\Windows\system32> $scopes = Get-DhcpServerv4Scope -ComputerName SEA-DHCP01
foreach($scope in $scopes)
{
write-host "The current scope name is:" $scope.name -ForegroundColor Red
$lease = Get-DhcpServerv4Lease -ScopeId $scope.ScopeId
$lease | select -expandproperty *name* | out-file xx.csv
}
The current scope name is: Building 1
select : Multiple properties cannot be expanded.
At line:6 char:14
- $lease | select -expandproperty *name* | out-file xx.csv
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (DhcpServerv4Lease:PSObject) [Select-Object], PSArgumentExcep
tion
+ FullyQualifiedErrorId : MutlipleExpandProperties,Microsoft.PowerShell.Commands.SelectObjectCommand
The current scope name is: Building 2
select : Multiple properties cannot be expanded.
At line:6 char:14
- $lease | select -expandproperty *name* | out-file xx.csv
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (DhcpServerv4Lease:PSObject) [Select-Object], PSArgumentExcep
tion
+ FullyQualifiedErrorId : MutlipleExpandProperties,Microsoft.PowerShell.Commands.SelectObjectCommand
Wednesday, May 3, 2017 8:13 AM
Hi weedee,
$scopes = Get-DhcpServerv4Scope -ComputerName 'DC'
foreach($scope in $scopes)
{
#write-host "The current scope name is:" $scope.name -ForegroundColor Red
$lease = Get-DhcpServerv4Lease -ScopeId $scope.ScopeId
#$lease
}
$pro = @{'name'=$scope.Name;'ipaddress'=$lease.IPAddress;'ScopeId'=$lease.ScopeId;'ClientId'=$lease.ClientId}
$obj = New-Object -TypeName psobject -Property $pro
$obj | Export-Csv c:\DhcpInfo.csv -NoTypeInformation -Append
this above could be better.
Best regards,
Andy
Please remember to mark the replies as answers if they help.
If you have feedback for TechNet Subscriber Support, contact [email protected].
Thursday, May 4, 2017 1:31 PM
Hi weedee,
$scopes = Get-DhcpServerv4Scope -ComputerName 'DC' foreach($scope in $scopes) { #write-host "The current scope name is:" $scope.name -ForegroundColor Red $lease = Get-DhcpServerv4Lease -ScopeId $scope.ScopeId #$lease } $pro = @{'name'=$scope.Name;'ipaddress'=$lease.IPAddress;'ScopeId'=$lease.ScopeId;'ClientId'=$lease.ClientId} $obj = New-Object -TypeName psobject -Property $pro $obj | Export-Csv c:\DhcpInfo.csv -NoTypeInformation -Append
this above could be better.
Best regards,
Andy
Please remember to mark the replies as answers if they help.
If you have feedback for TechNet Subscriber Support, contact [email protected].
Hi Andy!
Otherwise okay, could you modify the script to also display scopes with NO leases?
Friday, May 5, 2017 7:24 AM
Hi,
$scopes = Get-DhcpServerv4Scope -ComputerName 2012r2dc
foreach($scope in $scopes)
{
#write-host "The current scope name is:" $scope.name -ForegroundColor Red
$lease = Get-DhcpServerv4Lease -ScopeId $scope.ScopeId
$lease
}
$pro = @{'name'=$scope.Name;'ipaddress'=$($lease.IPAddress);'ScopeId'=$($lease.ScopeId);'ClientId'=$lease.ClientId;'LeaseExpiryTime'=$lease.LeaseExpiryTime}
$obj = New-Object -TypeName psobject -Property $pro
$obj | Export-Csv c:\fuc123k.csv -NoTypeInformation -Append
add this line:
'LeaseExpiryTime'=$lease.LeaseExpiryTime
Best regards,
Andy
Please remember to mark the replies as answers if they help.
If you have feedback for TechNet Subscriber Support, contact [email protected].
Tuesday, May 9, 2017 10:41 AM
CSV file content does not look right. This is all content there is:
"ScopeId","name","ClientId","ipaddress","LeaseExpiryTime"
"System.Object[]","Scope 1","System.Object[]","System.Object[]","System.Object[]"
Tuesday, May 16, 2017 8:37 AM
Hi weedee,
sorry for the late reply.
>>CSV file content does not look right. This is all content there is
these are objects, you could use select -expandproperty to get all of them in your script.
Best regards,
Andy
Please remember to mark the replies as answers if they help.
If you have feedback for TechNet Subscriber Support, contact [email protected].
Wednesday, June 7, 2017 2:49 AM | 1 vote
Hi,
Was your issue resolved?
If you resolved it using our solution, please "mark it as answer" to help other community members find the helpful reply quickly.
If you resolve it using your own solution, please share your experience and solution here. It will be very beneficial for other community members who have similar questions.
If no, please reply and tell us the current situation in order to provide further help.
Best Regards,
Andy
Please remember to mark the replies as answers if they help.
If you have feedback for TechNet Subscriber Support, contact [email protected].