Category: News
To Do – Due Date Selector Not Working
I noticed that when you go to select a due date in To Do from the calendar or even select an option like “tomorrow” instead of displaying the correct date it always shows the date of the day before.
For example, I select 5/20/24 and it displays 5/19/24.
I’ve attached a link to a video showing the issue.
https://drive.google.com/file/d/13_hj9hNBm_PG0p4UMvFoyvlE0AVInROs/view?usp=sharing
I noticed that when you go to select a due date in To Do from the calendar or even select an option like “tomorrow” instead of displaying the correct date it always shows the date of the day before. For example, I select 5/20/24 and it displays 5/19/24. I’ve attached a link to a video showing the issue.https://drive.google.com/file/d/13_hj9hNBm_PG0p4UMvFoyvlE0AVInROs/view?usp=sharing Read More
Service Broker Readers
Hi,
I am using service broker as a means to process events.
I have an activation procedure, that reads a single message, processes that message and then finishes.
My queue has 10 readers.
In the activation procedure I log the SPID and the login time of the session and my expectation would be, that each messages has a unique combination of SPID and login time of the session.
That is true most of the time.
Sometimes however, a sessions seems to be re-used, meaning that more that one message (as per now always three) are processed by the same session (combination of SPID and login time).
Does the service broker recycle readers and if yes, is that something that can be configured/controlled?
Thanks a lot in advance
Chris
Hi,I am using service broker as a means to process events.I have an activation procedure, that reads a single message, processes that message and then finishes.My queue has 10 readers.In the activation procedure I log the SPID and the login time of the session and my expectation would be, that each messages has a unique combination of SPID and login time of the session. That is true most of the time. Sometimes however, a sessions seems to be re-used, meaning that more that one message (as per now always three) are processed by the same session (combination of SPID and login time). Does the service broker recycle readers and if yes, is that something that can be configured/controlled? Thanks a lot in advanceChris Read More
Intune Suite features
Still no online status for devices? Or ability to send keystrokes for secure password input for UAC prompts when on a remote session? Or unattended access for windows devices that are not logged in? Seriously Microsoft…. lots of catching up to do…. please take a look at N-able’s remote support products to get a sense of how far behind this still is. I imagine there is a way to see the device runtime (at least for Windows) but not sure how to do this if there is so if anyone could let me know that would be much appreciated
Still no online status for devices? Or ability to send keystrokes for secure password input for UAC prompts when on a remote session? Or unattended access for windows devices that are not logged in? Seriously Microsoft…. lots of catching up to do…. please take a look at N-able’s remote support products to get a sense of how far behind this still is. I imagine there is a way to see the device runtime (at least for Windows) but not sure how to do this if there is so if anyone could let me know that would be much appreciated Read More
Bookings to Excel via Automate
I have a Booking Page that creates a new row in excel spreadsheet when a new booking is made. I have each column in my table mapped.
What I need is the date & time in separate columns in my table. In Power Automate, it only has options to map startdate and enddate each “jumbles” the appointment start date & time in one column.
Is there a function or expression to make this work?
I have a Booking Page that creates a new row in excel spreadsheet when a new booking is made. I have each column in my table mapped.What I need is the date & time in separate columns in my table. In Power Automate, it only has options to map startdate and enddate each “jumbles” the appointment start date & time in one column.Is there a function or expression to make this work? Read More
Copilot suggestions
Looking for best way to source a research asset library that contains files on different topics. Want to ask demographic or product specific questions and have copilot pull answers.
The asset library sits within our company intranet sharepoint site so it’s more than 2 levels deep.
Also, I have tried to apply a copilot to a client site containing a document library and copilot is not pulling any information on things I know it should be able to find.
Any suggestions would be appreciated.
Thanks!
Looking for best way to source a research asset library that contains files on different topics. Want to ask demographic or product specific questions and have copilot pull answers. The asset library sits within our company intranet sharepoint site so it’s more than 2 levels deep. Also, I have tried to apply a copilot to a client site containing a document library and copilot is not pulling any information on things I know it should be able to find. Any suggestions would be appreciated.Thanks! Read More
Targeted release
Hello
Is there a way to pull out a list of users that have targeted release?
I am looking for a powershell script.
Regards
JFM_12
HelloIs there a way to pull out a list of users that have targeted release?I am looking for a powershell script.RegardsJFM_12 Read More
Make report with all devices, username and last restart date
Hello,
How to make report from Intune/Ms graph for all devices with last resatart date (time)?
Thanks
Hello, How to make report from Intune/Ms graph for all devices with last resatart date (time)? Thanks Read More
Will VBA be obsolete from excel?
We have been receiving news about macros that it will be obsolete soon? Not sure if we should believe it or not? We have a product largely based on macros. if its true, we need to find option.
We have been receiving news about macros that it will be obsolete soon? Not sure if we should believe it or not? We have a product largely based on macros. if its true, we need to find option. Read More
Formula to get address of selected cell on a worksheet
Hi,
I’m looking for a formula to get the currently selected cell within a worksheet.
No VBA or macros since my client has that disabled.Not the last cell edited since an edit may not occur.It can’t be affected by changes of selection on other worksheets.
This is obviously information that Excel tracks and there is no good reason why it wouldn’t be readily available. (I know there is always the possibility of bad reasons they may keep this information inaccessible, but I’m hoping that isn’t the case.)
Any help would be appreciated.
Thank you,
John
Hi, I’m looking for a formula to get the currently selected cell within a worksheet.No VBA or macros since my client has that disabled.Not the last cell edited since an edit may not occur.It can’t be affected by changes of selection on other worksheets.This is obviously information that Excel tracks and there is no good reason why it wouldn’t be readily available. (I know there is always the possibility of bad reasons they may keep this information inaccessible, but I’m hoping that isn’t the case.)Any help would be appreciated. Thank you, John Read More
Lesson Learned #484: Database Performance Monitoring with PowerShell and ReadScale-Out Environments
Today, I handled a service request from our customer seeking additional information on performance monitoring for ReadScale-Out in Azure SQL Database. They needed details on how to find missing indexes, query statistics, and more.
I created this PowerShell script that works for both Elastic Database Pools and standalone databases, executing multiple queries for monitorin
The following PowerShell script connects to a read-only replica, retrieves performance data, and stores it for future analysis. This article will guide you through the steps required to implement this script in your own environment and could be possible to use for Single Azure SQL Database, Azure SQL Elastic Pool or Azure SQL Managed Instance.
Check if the statistics
If number of rows in the statistics is different of rows_sampled.
If we have more than 15 days that the statistics have been updated.
Check if the statistics associated to any index is:
If number of rows in the statistics is different of rows_sampled.
If we have more than 15 days that the statistics have been updated.
Check if MAXDOP is 0
Check if we have missing indexes
Obtain resource usage per database.
Total amount of space and rows per schema and table name
Query stats summary.
Basically we need to configure the parameters:
$server = “xxxxx.database.windows.net” // Azure SQL Server name
$user = “xxxxxx” // User Name
$passwordSecure = “xxxxxx” // Password
$Db = “xxxxxx” // Database Name, if you type the value ALL, all databases will be checked.
$Folder = $true // Folder where the log file will be generated with all the issues found.
DropExisting =value 1 or 0, if the previous files located on Destinatio folder will be deleted every time that you execute the process.
ElasticDBPoolName. PowerShell Script will check all the databases that are associated with this elastic database pool (only for Azure SQL Database).
Create a subfolder with date and time used in every execution
PerfChecker.Log = Contains all the issues found.
Every check done will save two files
Extension .Txt that contains the report of the operation done.
Extension .task that contains a possible mitigation about the issue found.
Script
#—————————————————————-
# Application: ReadScale-Out Performance Checker
# Propose: Inform about performance recomendations for ReadScale-Out
# Checks:
# 1) Check if the statistics
# If number of rows in the statistics is different of rows_sampled.
# If we have more than 15 days that the statistics have been updated.
# 2) Check if we have any auto-tuning recomendations
# 3) Check if the statistics associated to any index is:
# If number of rows in the statistics is different of rows_sampled.
# If we have more than 15 days that the statistics have been updated.
# 4) Check if MAXDOP is 0
# 5) Check if we have missing indexes (SQL Server Instance)
# 6) Obtain resource usage per database.
# 7) Total amount of space and rows per table.
# 8) Query Stats summary
# Outcomes:
# In the folder specified in $Folder variable we are going to have a file called PerfChecker.Log that contains all the operations done
# and issues found. Also, we are going to have a file per database and check done with the results gathered.
# Every time that the process is executed it is created a new subfolder.
#—————————————————————-
#—————————————————————-
#Parameters
#—————————————————————-
param($server = “myserver.database.windows.net”, #ServerName parameter to connect,for example, myserver.database.windows.net
$user = “username”, #UserName parameter to connect
$passwordSecure = “pwd!”, #Password Parameter to connect
$Db = “DBName”, #DBName Parameter to connect. Type ALL to check all the databases running in the server
$Folder = “c:SQLDAta”, #Folder Parameter to save the log and solution files, for example, c:PerfChecker
$DropExisting=1, #Drop (1) the previous file saved in the folder with extensions .csv, .txt, .task !=1 = leave the files
$ElasticDBPoolName = “dbPoolName”) #Name of the elastic DB Pool if you want to filter only by elastic DB Pool.
#——————————————————————————-
# Check the statistics status
# 1.- Review if number of rows is different of rows_sampled
# 2.- Review if we have more than 15 days that the statistics have been updated.
#——————————————————————————-
function CheckStatistics($connection,$FileName, $FileNameLogSolution , $iTimeOut)
{
try
{
$Item=0
logMsg( “—- Checking Statistics health (Started) (REF: https://docs.microsoft.com/en-us/sql/t-sql/statements/update-statistics-transact-sql?view=sql-server-ver15)—- ” ) (1) $true $FileName
$command = New-Object -TypeName System.Data.SqlClient.SqlCommand
$command.CommandTimeout = $iTimeOut
$command.Connection=$connection
$command.CommandText = “SELECT sp.stats_id, stat.name, o.name, filter_definition, last_updated, rows, rows_sampled, steps, unfiltered_rows, modification_counter, DATEDIFF(DAY, last_updated , getdate()) AS Diff, schema_name(o.schema_id) as SchemaName
FROM sys.stats AS stat
Inner join sys.objects o on stat.object_id=o.object_id
CROSS APPLY sys.dm_db_stats_properties(stat.object_id, stat.stats_id) AS sp
WHERE o.type = ‘U’ AND stat.auto_created =’1′ or stat.user_created=’1′ order by o.name, stat.name”
$Reader = $command.ExecuteReader();
while($Reader.Read())
{
if( $Reader.GetValue(5) -gt $Reader.GetValue(6)) #If number rows is different rows_sampled
{
$Item=$Item+1
logMsg(“Possible outdated (Rows_Sampled is less than rows of the table):”.PadRight(100,” “) + ” of ” + ($Reader.GetValue(11).ToString() +”.”+ ($Reader.GetValue(2).ToString() + ” ” + $Reader.GetValue(1).ToString())).PadRight(400,” “)) (2) $true $FileName
logSolution(“UPDATE STATISTICS [” + $Reader.GetValue(11).ToString() +”].[“+ $Reader.GetValue(2).ToString() + “]([” + $Reader.GetValue(1).ToString() + “]) WITH FULLSCAN”) $FileNameLogSolution
}
if( TestEmpty($Reader.GetValue(10))) {}
else
{
if($Reader.GetValue(10) -gt 15) #if we have more than 15 days since the lastest update.
{
$Item=$Item+1
logMsg(“Possible outdated (15 days since the latest update):”.PadRight(100,” “) + ” of ” + ($Reader.GetValue(11).ToString() +”.”+ ($Reader.GetValue(2).ToString() + ” ” + $Reader.GetValue(1).ToString())).PadRight(400,” “)) (2) $true $FileName
logSolution(“UPDATE STATISTICS [” + $Reader.GetValue(11).ToString() +”].[“+ $Reader.GetValue(2).ToString() + “]([” + $Reader.GetValue(1).ToString() + “]) WITH FULLSCAN”) $FileNameLogSolution
}
}
}
$Reader.Close();
logMsg( “—- Checking Statistics health (Finished) —- ” ) (1) $true -$FileName
return $Item
}
catch
{
logMsg(“Not able to run statistics health checker…” + $Error[0].Exception) (2) $true $FileName
return 0
}
}
#——————————————————————————-
# Check missing indexes.
#——————————————————————————-
function CheckMissingIndexes($connection ,$FileName, $FileNameLogSolution , $iTimeOut)
{
try
{
$Item=0
logMsg( “—- Checking Missing Indexes (Started) Ref: https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-db-missing-index-groups-transact-sql?view=sql-server-ver15 —- ” ) (1) $true $FileName
$command = New-Object -TypeName System.Data.SqlClient.SqlCommand
$command.CommandTimeout = $iTimeOut
$command.Connection=$connection
$command.CommandText = “SELECT CONVERT (varchar, getdate(), 126) AS runtime,
CONVERT (decimal (28,1), migs.avg_total_user_cost * migs.avg_user_impact *
(migs.user_seeks + migs.user_scans)) AS improvement_measure,
REPLACE(REPLACE(‘CREATE INDEX missing_index_’ + CONVERT (varchar, mig.index_group_handle) + ‘_’ +
CONVERT (varchar, mid.index_handle) + ‘ ON ‘ + LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(mid.statement,CHAR(10), ‘ ‘), CHAR(13), ‘ ‘),’ ‘,”))) +
‘(‘ + ISNULL (mid.equality_columns,”)
+ CASE WHEN mid.equality_columns IS NOT NULL
AND mid.inequality_columns IS NOT NULL
THEN ‘,’ ELSE ” END + ISNULL (mid.inequality_columns, ”)
+ ‘)’
+ ISNULL (‘ INCLUDE (‘ + mid.included_columns + ‘)’, ”), CHAR(10), ‘ ‘), CHAR(13), ‘ ‘) AS create_index_statement,
migs.avg_user_impact
FROM sys.dm_db_missing_index_groups AS mig
INNER JOIN sys.dm_db_missing_index_group_stats AS migs
ON migs.group_handle = mig.index_group_handle
INNER JOIN sys.dm_db_missing_index_details AS mid
ON mig.index_handle = mid.index_handle
ORDER BY migs.avg_total_user_cost * migs.avg_user_impact * (migs.user_seeks + migs.user_scans) DESC”
$Reader = $command.ExecuteReader()
$bFound=$false
$bCol=$false
$ColName=””
$Content = [System.Collections.ArrayList]@()
while($Reader.Read())
{
#Obtain the columns only
if($bCol -eq $false)
{
for ($iColumn=0; $iColumn -lt $Reader.FieldCount; $iColumn++)
{
$bCol=$true
$ColName=$ColName + $Reader.GetName($iColumn).ToString().Replace(“t”,” “).Replace(“n”,” “).Replace(“r”,” “).Replace(“rn”,””).Trim() + ” || “
}
}
#Obtain the values of every missing indexes
$bFound=$true
$TmpContent=””
for ($iColumn=0; $iColumn -lt $Reader.FieldCount; $iColumn++)
{
$TmpContent= $TmpContent + $Reader.GetValue($iColumn).ToString().Replace(“t”,” “).Replace(“n”,” “).Replace(“r”,” “).Replace(“rn”,””).Trim() + ” || “
}
$Content.Add($TmpContent) | Out-null
}
if($bFound)
{
logMsg( “—- Missing Indexes found —- ” ) (1) $true $FileName
logMsg( $ColName.Replace(“t”,””).Replace(“n”,””).Replace(“r”,””) ) (1) $true $FileName $false
for ($iColumn=0; $iColumn -lt $Content.Count; $iColumn++)
{
logMsg( $Content[$iColumn].Replace(“t”,””).Replace(“n”,””).Replace(“r”,””).Replace(“rn”,””).Trim() ) (1) $true $FileName $false
$Item=$Item+1
}
}
$Reader.Close();
logMsg( “—- Checking missing indexes (Finished) —- ” ) (1) $true $FileName
return $Item
}
catch
{
logMsg(“Not able to run missing indexes…” + $Error[0].Exception) (2) $true $FileName
return 0
}
}
#——————————————————————————-
# Check if the statistics associated to any index is:
# 1.- Review if number of rows is different of rows_sampled
# 2.- Review if we have more than 15 days that the statistics have been updated.
#——————————————————————————-
function CheckIndexesAndStatistics($connection, $FileName, $FileNameLogSolution , $iTimeOut )
{
try
{
$Item=0
logMsg( “—- Checking Indexes and Statistics health (Started) – Reference: https://docs.microsoft.com/en-us/sql/t-sql/statements/update-statistics-transact-sql?view=sql-server-ver15 -” ) (1) $true $FileName
$command = New-Object -TypeName System.Data.SqlClient.SqlCommand
$command.CommandTimeout = $iTimeOut
$command.Connection=$connection
$command.CommandText = “SELECT ind.index_id, ind.name, o.name, stat.filter_definition, sp.last_updated, sp.rows, sp.rows_sampled, sp.steps, sp.unfiltered_rows, sp.modification_counter, DATEDIFF(DAY, last_updated , getdate()) AS Diff, schema_name(o.schema_id) as SchemaName,*
from sys.indexes ind
Inner join sys.objects o on ind.object_id=o.object_id
inner join sys.stats stat on stat.object_id=o.object_id and stat.stats_id = ind.index_id
CROSS APPLY sys.dm_db_stats_properties(stat.object_id, stat.stats_id) AS sp
WHERE o.type = ‘U’ order by o.name, stat.name”
$Reader = $command.ExecuteReader();
while($Reader.Read())
{
if( $Reader.GetValue(5) -gt $Reader.GetValue(6)) #If number rows is different rows_sampled
{
$Item=$Item+1
logMsg(“Possible outdated – (Rows_Sampled is less than rows of the table):”.PadRight(100,” “) + ” of ” + ($Reader.GetValue(11).ToString() +”.”+ $Reader.GetValue(2).ToString() + ” ” + $Reader.GetValue(1).ToString()).PadRight(400,” “)) (2) $true $FileName
logSolution(“ALTER INDEX [” + $Reader.GetValue(1).ToString() + “] ON [” + $Reader.GetValue(11).ToString() +”].[“+ $Reader.GetValue(2).ToString() + “] REBUILD”) $FileNameLogSolution
}
if( TestEmpty($Reader.GetValue(10))) {}
else
{
if($Reader.GetValue(10) -gt 15)
{
$Item=$Item+1
logMsg(“Possible outdated – (15 days since the latest update):”.PadRight(100,” “) + ” of ” + ($Reader.GetValue(11).ToString() +”.”+ $Reader.GetValue(2).ToString() + ” ” + $Reader.GetValue(1).ToString()).PadRight(400,” “)) (2) $true $FileName
logSolution(“ALTER INDEX [” + $Reader.GetValue(1).ToString() + “] ON [” + $Reader.GetValue(11).ToString() +”].[“+ $Reader.GetValue(2).ToString() + “] REBUILD”) $FileNameLogSolution
}
}
}
$Reader.Close();
logMsg( “—- Checking Indexes and Statistics health (Finished) —- ” ) (1) $true $FileName
return $Item
}
catch
{
logMsg(“Not able to run Indexes and statistics health checker…” + $Error[0].Exception) (2) $true $FileName
return 0
}
}
#——————————————————————————-
# Check if MAXDOP is 0
#——————————————————————————-
function CheckScopeConfiguration($connection ,$FileName, $FileNameLogSolution , $iTimeOut)
{
try
{
$Item=0
logMsg( “—- Checking Scoped Configurations —- Ref: https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-scoped-configurations-transact-sql?view=sql-server-ver15” ) (1) $true $FileName
$command = New-Object -TypeName System.Data.SqlClient.SqlCommand
$command.CommandTimeout = $iTimeOut
$command.Connection=$connection
$command.CommandText = “select * from sys.database_scoped_configurations”
$Reader = $command.ExecuteReader();
while($Reader.Read())
{
if( $Reader.GetValue(1) -eq “MAXDOP”)
{
if( $Reader.GetValue(2) -eq 0)
{
logMsg(“You have MAXDOP with value 0” ) (2) $true $FileName
$Item=$Item+1
}
}
}
$Reader.Close();
logMsg( “—- Checking Scoped Configurations (Finished) —- ” ) (1) $true $FileName
return $Item
}
catch
{
logMsg(“Not able to run Scoped Configurations…” + $Error[0].Exception) (2) $true $FileName
return 0
}
}
#—————————————————————-
#Function to connect to the database using a retry-logic
#—————————————————————-
Function GiveMeConnectionSource($DBs)
{
for ($i=1; $i -lt 10; $i++)
{
try
{
logMsg( “Connecting to the database…” + $DBs + “. Attempt #” + $i) (1)
$SQLConnection = New-Object System.Data.SqlClient.SqlConnection
$SQLConnection.ConnectionString = “Server=”+$server+”;Database=”+$Dbs+”;User ID=”+$user+”;Password=”+$password+”;Connection Timeout=60;Application Name=ReadScaleOut Collector;ApplicationIntent=ReadOnly”
$SQLConnection.Open()
logMsg(“Connected to the database..” + $DBs) (1)
return $SQLConnection
break;
}
catch
{
logMsg(“Not able to connect – ” + $DBs + ” – Retrying the connection…” + $Error[0].Exception) (2)
Start-Sleep -s 5
}
}
}
#————————————————————–
#Create a folder
#————————————————————–
Function CreateFolder
{
Param( [Parameter(Mandatory)]$Folder )
try
{
$FileExists = Test-Path $Folder
if($FileExists -eq $False)
{
$result = New-Item $Folder -type directory
if($result -eq $null)
{
logMsg(“Imposible to create the folder ” + $Folder) (2)
return $false
}
}
return $true
}
catch
{
return $false
}
}
#——————————-
#Create a folder
#——————————-
Function DeleteFile{
Param( [Parameter(Mandatory)]$FileName )
try
{
$FileExists = Test-Path $FileNAme
if($FileExists -eq $True)
{
Remove-Item -Path $FileName -Force
}
return $true
}
catch
{
return $false
}
}
#——————————–
#Log the operations
#——————————–
function logMsg
{
Param
(
[Parameter(Mandatory=$true, Position=0)]
[string] $msg,
[Parameter(Mandatory=$false, Position=1)]
[int] $Color,
[Parameter(Mandatory=$false, Position=2)]
[boolean] $Show=$true,
[Parameter(Mandatory=$false, Position=3)]
[string] $sFileName,
[Parameter(Mandatory=$false, Position=4)]
[boolean] $bShowDate=$true
)
try
{
if($bShowDate -eq $true)
{
$Fecha = Get-Date -format “yyyy-MM-dd HH:mm:ss”
$msg = $Fecha + ” ” + $msg
}
If( TestEmpty($SFileName) )
{
Write-Output $msg | Out-File -FilePath $LogFile -Append
}
else
{
Write-Output $msg | Out-File -FilePath $sFileName -Append
}
$Colores=”White”
$BackGround =
If($Color -eq 1 )
{
$Colores =”Cyan”
}
If($Color -eq 3 )
{
$Colores =”Yellow”
}
if($Color -eq 2 -And $Show -eq $true)
{
Write-Host -ForegroundColor White -BackgroundColor Red $msg
}
else
{
if($Show -eq $true)
{
Write-Host -ForegroundColor $Colores $msg
}
}
}
catch
{
Write-Host $msg
}
}
#——————————–
#Log the solution
#——————————–
function logSolution
{
Param
(
[Parameter(Mandatory=$true, Position=0)]
[string] $msg,
[Parameter(Mandatory=$false, Position=3)]
[string] $sFileName
)
try
{
Write-Output $msg | Out-File -FilePath $sFileName -Append
}
catch
{
Write-Host $msg
}
}
#——————————–
#The Folder Include “” or not???
#——————————–
function GiveMeFolderName([Parameter(Mandatory)]$FolderSalida)
{
try
{
$Pos = $FolderSalida.Substring($FolderSalida.Length-1,1)
If( $Pos -ne “” )
{return $FolderSalida + “”}
else
{return $FolderSalida}
}
catch
{
return $FolderSalida
}
}
#——————————–
#Validate Param
#——————————–
function TestEmpty($s)
{
if ([string]::IsNullOrWhitespace($s))
{
return $true;
}
else
{
return $false;
}
}
#——————————–
#Separator
#——————————–
function GiveMeSeparator
{
Param([Parameter(Mandatory=$true)]
[System.String]$Text,
[Parameter(Mandatory=$true)]
[System.String]$Separator)
try
{
[hashtable]$return=@{}
$Pos = $Text.IndexOf($Separator)
$return.Text= $Text.substring(0, $Pos)
$return.Remaining = $Text.substring( $Pos+1 )
return $Return
}
catch
{
$return.Text= $Text
$return.Remaining = “”
return $Return
}
}
Function Remove-InvalidFileNameChars {
param([Parameter(Mandatory=$true,
Position=0,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true)]
[String]$Name
)
return [RegEx]::Replace($Name, “[{0}]” -f ([RegEx]::Escape([String][System.IO.Path]::GetInvalidFileNameChars())), ”)}
function Replace-SpacesInRange {
param (
[string]$InputString)
# Replace matched spaces with a single space
$OutputString = ($InputString -replace “s+”,” “)
return $OutputString
}
#——————————————————————————-
# Check the rows, space used, allocated and numbers of tables.
#——————————————————————————-
function CheckStatusPerTable($connection ,$FileName, $iTimeOut)
{
try
{
logMsg( “—- Checking Status per Table —- ” ) (1) $true $FileName
$Item=0
$command = New-Object -TypeName System.Data.SqlClient.SqlCommand
$command.CommandTimeout = $iTimeOut
$command.Connection=$connection
$command.CommandText = “SELECT s.Name + ‘.’ + t.name,
SUM(p.rows) AS RowCounts,
SUM(a.total_pages) * 8 AS TotalSpaceKB,
SUM(a.used_pages) * 8 AS UsedSpaceKB,
(SUM(a.total_pages) – SUM(a.used_pages)) * 8 AS UnusedSpaceKB
FROM
sys.tables t
INNER JOIN
sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN
sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
INNER JOIN
sys.allocation_units a ON p.partition_id = a.container_id
LEFT OUTER JOIN
sys.schemas s ON t.schema_id = s.schema_id
WHERE t.is_ms_shipped = 0
AND i.OBJECT_ID > 255
GROUP BY
s.Name + ‘.’ + t.name”
$Reader = $command.ExecuteReader();
$StringReport = “Table “
$StringReport = $StringReport + “Rows “
$StringReport = $StringReport + “Space “
$StringReport = $StringReport + “Used “
logMsg($StringReport) (1) $false $FileName -bShowDate $false
while($Reader.Read())
{
$Item=$Item+1
$lTotalRows = $Reader.GetValue(1)
$lTotalSpace = $Reader.GetValue(2)
$lTotalUsed = $Reader.GetValue(3)
$lTotalUnUsed = $Reader.GetValue(4)
$StringReport = $Reader.GetValue(0).ToString().PadRight(100).Substring(0,99) + ” “
$StringReport = $StringReport + $lTotalRows.ToString(‘N0’).PadLeft(20) + ” “
$StringReport = $StringReport + $lTotalSpace.ToString(‘N0’).PadLeft(20) + ” “
$StringReport = $StringReport + $lTotalUsed.ToString(‘N0’).PadLeft(20)
logMsg($StringReport) (1) $false $FileName -bShowDate $false
}
$Reader.Close();
return $Item
}
catch
{
$Reader.Close();
logMsg(“Not able to run Checking Status per Table…” + $Error[0].Exception) (2)
return 0
}
}
#—————————————————————————————-
# Check query stats and obtain execution count, cpu_time, logical_reads, etc.. per query
#—————————————————————————————
function CheckQueryStats($connection ,$FileName, $iTimeOut)
{
try
{
logMsg( “—- Checking Query Stats —- ” ) (1) $true $FileName
$Item=0
$command = New-Object -TypeName System.Data.SqlClient.SqlCommand
$command.CommandTimeout = $iTimeOut
$command.Connection=$connection
$command.CommandText = “SELECT
qs.execution_count,
qs.total_worker_time AS cpu_time,
qs.total_logical_reads AS avg_logical_reads,
qs.total_logical_writes AS avg_logical_writes,
qs.total_physical_reads AS avg_physical_reads,
qs.total_elapsed_time AS avg_elapsed_time,
st.text AS query_text
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st”
$Reader = $command.ExecuteReader();
$StringReport = “Execution Count “
$StringReport = $StringReport + “CPU Time “
$StringReport = $StringReport + “Logical Reads “
$StringReport = $StringReport + “Logical Writes “
$StringReport = $StringReport + “Physical Writes “
$StringReport = $StringReport + “Elapsed Time “
$StringReport = $StringReport + “TSQL “
logMsg($StringReport) (1) $false $FileName -bShowDate $false
while($Reader.Read())
{
$Item=$Item+1
$TSQL = $Reader.GetValue(6).ToString().Trim()
$cleanedString = Replace-SpacesInRange -InputString $TSQL
$StringReport = $Reader.GetValue(0).ToString(‘N0’).ToString().PadLeft(20) + ” “
$StringReport = $StringReport + $Reader.GetValue(1).ToString(‘N0’).PadLeft(20) + ” “
$StringReport = $StringReport + $Reader.GetValue(2).ToString(‘N0’).PadLeft(20) + ” “
$StringReport = $StringReport + $Reader.GetValue(3).ToString(‘N0’).PadLeft(20) + ” “
$StringReport = $StringReport + $Reader.GetValue(4).ToString(‘N0’).PadLeft(20) + ” “
$StringReport = $StringReport + $Reader.GetValue(5).ToString(‘N0’).PadLeft(20) + ” “
$StringReport = $StringReport + $cleanedString
logMsg($StringReport) (1) $false $FileName -bShowDate $false
}
$Reader.Close();
return $Item
}
catch
{
$Reader.Close();
logMsg(“Not able to run Checking Query Stats..” + $Error[0].Exception) (2)
return 0
}
}
#——————————————————————————-
# Show the performance counters of the database
#——————————————————————————-
function CheckStatusPerResource($connection,$FileName, $iTimeOut)
{
try
{
logMsg( “—- Checking Status per Resources —- ” ) (1) $true $FileName
$Item=0
$command = New-Object -TypeName System.Data.SqlClient.SqlCommand
$command.CommandTimeout = $iTimeOut
$command.Connection=$connection
$command.CommandText = “select end_time, avg_cpu_percent, avg_data_io_percent, avg_log_write_percent, avg_memory_usage_percent, max_worker_percent from sys.dm_db_resource_stats order by end_time desc”
$Reader = $command.ExecuteReader();
$StringReport = “Time “
$StringReport = $StringReport + “Avg_Cpu “
$StringReport = $StringReport + “Avg_DataIO “
$StringReport = $StringReport + “Avg_Log “
$StringReport = $StringReport + “Avg_Memory “
$StringReport = $StringReport + “Max_Workers”
logMsg($StringReport) (1) $false $FileName -bShowDate $false
while($Reader.Read())
{
$Item=$Item+1
$lTotalCPU = $Reader.GetValue(1)
$lTotalDataIO = $Reader.GetValue(2)
$lTotalLog = $Reader.GetValue(3)
$lTotalMemory = $Reader.GetValue(4)
$lTotalWorkers = $Reader.GetValue(5)
$StringReport = $Reader.GetValue(0).ToString().PadLeft(20) + ” “
$StringReport = $StringReport + $lTotalCPU.ToString(‘N2’).PadLeft(10) + ” “
$StringReport = $StringReport + $lTotalDataIO.ToString(‘N2’).PadLeft(10)
$StringReport = $StringReport + $lTotalLog.ToString(‘N2’).PadLeft(10)
$StringReport = $StringReport + $lTotalMemory.ToString(‘N2’).PadLeft(10)
$StringReport = $StringReport + $lTotalWorkers.ToString(‘N2’).PadLeft(10)
logMsg($StringReport) (1) $false $FileName -bShowDate $false
}
$Reader.Close();
return $Item
}
catch
{
logMsg(“Not able to run Checking Status per Resources…” + $Error[0].Exception) (2) $true $FileName
return 0
}
}
function sGiveMeFileName{
Param([Parameter(Mandatory=$true)]
[System.String]$DBAccess,
[Parameter(Mandatory=$true)]
[System.String]$File)
try
{
return $FolderV + $DBAccess + $File
}
catch {
return “_UnKnow.csv”
}
}
try
{
Clear
#——————————–
#Check the parameters.
#——————————–
if (TestEmpty($server)) { $server = read-host -Prompt “Please enter a Server Name” }
if (TestEmpty($user)) { $user = read-host -Prompt “Please enter a User Name” }
if (TestEmpty($passwordSecure))
{
$passwordSecure = read-host -Prompt “Please enter a password” -assecurestring
$password = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($passwordSecure))
}
else
{$password = $passwordSecure}
if (TestEmpty($Db)) { $Db = read-host -Prompt “Please enter a Database Name, type ALL to check all databases” }
if (TestEmpty($Folder)) { $Folder = read-host -Prompt “Please enter a Destination Folder (Don’t include the last ) – Example c:PerfChecker” }
$DbsArray = [System.Collections.ArrayList]::new()
#——————————–
#Variables
#——————————–
$CheckStatistics=0
$CheckIndexesAndStatistics=0
$CheckMissingIndexes=0
$CheckScopeConfiguration=0
$CheckStatusPerResource=0
$CheckStatusPerTable=0
$CheckQueryStats=0
$TotalCheckStatistics=0
$TotalCheckIndexesAndStatistics=0
$TotalCheckMissingIndexes=0
$TotalCheckScopeConfiguration=0
$TotalCheckStatusPerResource=0
$TotalCheckStatusPerTable=0
$TotalCheckQueryStats=0
#——————————–
#Run the process
#——————————–
$timestamp = Get-Date -Format “yyyyMMddHHmmss”
$Folder = $Folder +”” + $timestamp + “”
logMsg(“Creating the folder ” + $Folder) (1)
$result = CreateFolder($Folder) #Creating the folder that we are going to have the results, log and zip.
If( $result -eq $false)
{
logMsg(“Was not possible to create the folder”) (2)
exit;
}
logMsg(“Created the folder ” + $Folder) (1)
$sFolderV = GiveMeFolderName($Folder) #Creating a correct folder adding at the end .
$LogFile = $sFolderV + “PerfChecker.Log” #Logging the operations.
logMsg(“Deleting Operation Log file”) (1)
$result = DeleteFile($LogFile) #Delete Log file
logMsg(“Deleted Operation Log file”) (1)
logMsg(“——————– Header Filter details ————–“) (1)
logMsg(” ServerName: ” + $server) (1)
logMsg(” DB Filter : ” + $DB) (1)
logMsg(” Folder : ” + $Folder) (1)
logMsg(” Delete Files: ” + $DropExisting) (1)
logMsg(” Elastic DB Pool Name: ” + $ElasticDBPoolName) (1)
logMsg(“——————– Footer Filter details ————–“) (1)
if( $DropExisting -eq 1)
{
foreach ($f in ((Get-ChildItem -Path $sFolderV)))
{
if($f.Extension -in (“.txt”) -or $f.Extension -in (“.task”) )
{
logMsg(“Deleting Operation file: ” + $f.FullName) (1)
$result = DeleteFile($f.FullName)
logMsg(“Deleted Operation file: ” + $f.FullName) (1)
}
}
}
if($Db -eq “ALL”)
{
$SQLConnectionSource = GiveMeConnectionSource “master” #Connecting to the database.
if($SQLConnectionSource -eq $null)
{
logMsg(“It is not possible to connect to the database”) (2)
exit;
}
$commandDB = New-Object -TypeName System.Data.SqlClient.SqlCommand
$commandDB.CommandTimeout = 6000
$commandDB.Connection=$SQLConnectionSource
if(TestEmpty($ElasticDBPoolName))
{
$commandDB.CommandText = “SELECT name from sys.databases where database_id >=5 order by name”
}
else
{
$commandDB.CommandText = “SELECT d.name as DatabaseName FROM sys.databases d inner join sys.database_service_objectives dso on d.database_id = dso.database_id WHERE dso.elastic_pool_name = ‘” + $ElasticDBPoolName + “‘ ORDER BY d.name”
}
$ReaderDB = $commandDB.ExecuteReader();
while($ReaderDB.Read())
{
[void]$DbsArray.Add($ReaderDB.GetValue(0).ToString())
logMsg(“Database Name selected:” + $ReaderDB.GetValue(0).ToString()) (1)
}
$ReaderDB.Close();
$SQLConnectionSource.Close()
}
else
{
$DbsArray.Add($DB)
}
for($iDBs=0;$iDBs -lt $DbsArray.Count; $iDBs=$iDBs+1)
{
logMsg(“Connecting to database..” + $DbsArray[$iDBs]) (1)
$SQLConnectionSource = GiveMeConnectionSource($DbsArray[$iDBs]) #Connecting to the database.
if($SQLConnectionSource -eq $null)
{
logMsg(“It is not possible to connect to the database ” + $DbsArray[$iDBs] ) (2)
exit;
}
logMsg(“Connected to database..” + $DbsArray[$iDBs]) (1)
$CheckStatistics=0
$CheckIndexesAndStatistics=0
$CheckMissingIndexes=0
$CheckScopeConfiguration=0
$CheckStatusPerResource=0
$CheckStatusPerTable=0
$CheckQueryStats=0
$FileName=Remove-InvalidFileNameChars($DbsArray[$iDBs])
$CheckStatistics = CheckStatistics $SQLConnectionSource ($sFolderV + $FileName + “_CheckStatistics.Txt”) ($sFolderV + $FileName + “_CheckStatistics.Task”) (3600)
$CheckIndexesAndStatistics = CheckIndexesAndStatistics $SQLConnectionSource ($sFolderV + $FileName + “_CheckIndexesStatistics.Txt”) ($sFolderV + $FileName + “_CheckIndexesStatistics.Task”) (3600)
$CheckMissingIndexes = CheckMissingIndexes $SQLConnectionSource ($sFolderV + $FileName + “_CheckMissingIndexes.Txt”) ($sFolderV + $FileName + “_CheckMissingIndexes.Task”) (3600)
$CheckScopeConfiguration = CheckScopeConfiguration $SQLConnectionSource ($sFolderV + $FileName + “_CheckScopeConfiguration.Txt”) ($sFolderV + $FileName + “_CheckScopeConfiguration.Task”) (3600)
$CheckStatusPerResource = CheckStatusPerResource $SQLConnectionSource ($sFolderV + $FileName + “_ResourceUsage.Txt”) (3600)
$CheckStatusPerTable = CheckStatusPerTable $SQLConnectionSource ($sFolderV + $FileName + “_TableSize.Txt”) (3600)
$CheckQueryStats=CheckQueryStats $SQLConnectionSource ($sFolderV + $FileName + “_QueryStats.Txt”) (3600)
$TotalCheckStatistics=$TotalCheckStatistics+$CheckStatistics
$TotalCheckIndexesAndStatistics=$TotalCheckIndexesAndStatistics+$CheckIndexesAndStatistics
$TotalCheckMissingIndexes=$TotalCheckMissingIndexes+$CheckMissingIndexes
$TotalCheckScopeConfiguration=$TotalCheckScopeConfiguration+$CheckScopeConfiguration
$TotalCheckStatusPerResource = $TotalCheckStatusPerResource + $CheckStatusPerResource
$TotalCheckStatusPerTable = $TotalCheckStatusPerTable + $CheckStatusPerTable
$TotalCheckQueryStats=$TotalCheckQueryStats+$CheckQueryStats
logMsg(“Closing the connection and summary for….. : ” + $DbsArray[$iDBs]) (3)
logMsg(“Number of Issues with statistics : ” + $CheckStatistics ) (1)
logMsg(“Number of Issues with statistics/indexes : ” + $CheckIndexesAndStatistics ) (1)
logMsg(“Number of Issues with Scoped Configuration : ” + $CheckScopeConfiguration ) (1)
logMsg(“Number of Issues with Missing Indexes : ” + $CheckMissingIndexes ) (1)
logMsg(“Number of Resource Usage : ” + $CheckStatusPerResource ) (1)
logMsg(“Number of Tables Usage : ” + $CheckStatusPerTable ) (1)
logMsg(“Number of Query stats : ” + $CheckQueryStats ) (1)
$SQLConnectionSource.Close()
}
Remove-Variable password
logMsg(“ReadScale-Out Performance Collector Script was executed correctly”) (3)
logMsg(“Total Number of Issues with statistics : ” + $TotalCheckStatistics ) (1)
logMsg(“Total Number of Issues with statistics/indexes : ” + $TotalCheckIndexesAndStatistics ) (1)
logMsg(“Total Number of Issues with Scoped Configuration : ” + $TotalCheckScopeConfiguration ) (1)
logMsg(“Total Number of Issues with Missing Indexes : ” + $TotalCheckMissingIndexes ) (1)
logMsg(“Total Number of Resource Usage : ” + $TotalCheckStatusPerResource ) (1)
logMsg(“Total Number of Tables Usage : ” + $TotalCheckStatusPerTable ) (1)
logMsg(“Total Number of Query Stats : ” + $TotalCheckQueryStats ) (1)
}
catch
{
logMsg(“ReadScale-Out Performance Collector Script was executed incorrectly ..: ” + $Error[0].Exception) (2)
}
finally
{
logMsg(“ReadScale-Out Performance Collector Script finished – Check the previous status line to know if it was success or not”) (2)
}
Disclaimer: This script is provided as an example and should be used at the user’s own risk. It must be thoroughly tested before being used in a production environment.
Microsoft Tech Community – Latest Blogs –Read More
Custom training loop, how to do regression for Dlarray type data, I want to do image to image regression,
The code for the model gradient solution I defined is as follows:
function [gradients1,gradients2,gradients3,state1,state2,state3,loss] = modelGradients(dlnet1,dlnet2,dlnet3,dlX1,dlX2,dlY)
[T1,T2,T3,state1] =forward(dlnet1,dlX1);
[t1,t2,t3,state2] =forward(dlnet2,dlX2);
Tt1=T1+t1;
Tt2=T2+t2;
Tt3=T3+t3;
dlX3=cat(3,Tt1,Tt2,Tt3);
[T4,state3] = forward(dlnet3,dlX3);
t4=forward(dlnet1,dlX1,’Outputs’,’resize-output-size’);
Tt4=T4+t4;
loss = mse(Tt4,dlY);%L1loss
[gradients1,gradients2,gradients3]=dlgradient(loss,dlnet1.Learnables,dlnet2.Learnables,dlnet3.Learnables);
end
How to do regression mapping for Dlarray data。
I want to add a regression before “loss = mse(Tt4,dlY);%L1loss”The code for the model gradient solution I defined is as follows:
function [gradients1,gradients2,gradients3,state1,state2,state3,loss] = modelGradients(dlnet1,dlnet2,dlnet3,dlX1,dlX2,dlY)
[T1,T2,T3,state1] =forward(dlnet1,dlX1);
[t1,t2,t3,state2] =forward(dlnet2,dlX2);
Tt1=T1+t1;
Tt2=T2+t2;
Tt3=T3+t3;
dlX3=cat(3,Tt1,Tt2,Tt3);
[T4,state3] = forward(dlnet3,dlX3);
t4=forward(dlnet1,dlX1,’Outputs’,’resize-output-size’);
Tt4=T4+t4;
loss = mse(Tt4,dlY);%L1loss
[gradients1,gradients2,gradients3]=dlgradient(loss,dlnet1.Learnables,dlnet2.Learnables,dlnet3.Learnables);
end
How to do regression mapping for Dlarray data。
I want to add a regression before “loss = mse(Tt4,dlY);%L1loss” The code for the model gradient solution I defined is as follows:
function [gradients1,gradients2,gradients3,state1,state2,state3,loss] = modelGradients(dlnet1,dlnet2,dlnet3,dlX1,dlX2,dlY)
[T1,T2,T3,state1] =forward(dlnet1,dlX1);
[t1,t2,t3,state2] =forward(dlnet2,dlX2);
Tt1=T1+t1;
Tt2=T2+t2;
Tt3=T3+t3;
dlX3=cat(3,Tt1,Tt2,Tt3);
[T4,state3] = forward(dlnet3,dlX3);
t4=forward(dlnet1,dlX1,’Outputs’,’resize-output-size’);
Tt4=T4+t4;
loss = mse(Tt4,dlY);%L1loss
[gradients1,gradients2,gradients3]=dlgradient(loss,dlnet1.Learnables,dlnet2.Learnables,dlnet3.Learnables);
end
How to do regression mapping for Dlarray data。
I want to add a regression before “loss = mse(Tt4,dlY);%L1loss” how to find regression for dlarray type data MATLAB Answers — New Questions
how can I connect more than two inputs to my narx model? why is the scope showing only a dot?
% Solve an Autoregression Problem with External Input with a NARX Neural Network
% Script generated by Neural Time Series app
% Created 11-Apr-2024 12:53:07
%
% This script assumes these variables are defined:
%
% input – input time series.
% output – feedback time series.
X = tonndata(input,false,false);
T = tonndata(output,false,false);
% Choose a Training Function
% For a list of all training functions type: help nntrain
% ‘trainlm’ is usually fastest.
% ‘trainbr’ takes longer but may be better for challenging problems.
% ‘trainscg’ uses less memory. Suitable in low memory situations.
trainFcn = ‘trainlm’; % Levenberg-Marquardt backpropagation.
% Create a Nonlinear Autoregressive Network with External Input
inputDelays = 1:4;
feedbackDelays = 1:4;
hiddenLayerSize = 10;
net = narxnet(inputDelays,feedbackDelays,hiddenLayerSize,’open’,trainFcn);
% Choose Input and Feedback Pre/Post-Processing Functions
% Settings for feedback input are automatically applied to feedback output
% For a list of all processing functions type: help nnprocess
% Customize input parameters at: net.inputs{i}.processParam
% Customize output parameters at: net.outputs{i}.processParam
net.inputs{1}.processFcns = {‘removeconstantrows’,’mapminmax’};
net.inputs{2}.processFcns = {‘removeconstantrows’,’mapminmax’};
% Prepare the Data for Training and Simulation
% The function PREPARETS prepares timeseries data for a particular network,
% shifting time by the minimum amount to fill input states and layer
% states. Using PREPARETS allows you to keep your original time series data
% unchanged, while easily customizing it for networks with differing
% numbers of delays, with open loop or closed loop feedback modes.
[x,xi,ai,t] = preparets(net,X,{},T);
% Setup Division of Data for Training, Validation, Testing
% For a list of all data division functions type: help nndivision
net.divideFcn = ‘dividerand’; % Divide data randomly
net.divideMode = ‘time’; % Divide up every sample
net.divideParam.trainRatio = 80/100;
net.divideParam.valRatio = 5/100;
net.divideParam.testRatio = 15/100;
% Choose a Performance Function
% For a list of all performance functions type: help nnperformance
net.performFcn = ‘mse’; % Mean Squared Error
% Choose Plot Functions
% For a list of all plot functions type: help nnplot
net.plotFcns = {‘plotperform’,’plottrainstate’, ‘ploterrhist’, …
‘plotregression’, ‘plotresponse’, ‘ploterrcorr’, ‘plotinerrcorr’};
% Train the Network
[net,tr] = train(net,x,t,xi,ai);
% Test the Network
y = net(x,xi,ai);
e = gsubtract(t,y);
performance = perform(net,t,y)
% Recalculate Training, Validation and Test Performance
trainTargets = gmultiply(t,tr.trainMask);
valTargets = gmultiply(t,tr.valMask);
testTargets = gmultiply(t,tr.testMask);
trainPerformance = perform(net,trainTargets,y)
valPerformance = perform(net,valTargets,y)
testPerformance = perform(net,testTargets,y)
% View the Network
view(net)
% Plots
% Uncomment these lines to enable various plots.
%figure, plotperform(tr)
%figure, plottrainstate(tr)
%figure, ploterrhist(e)
%figure, plotregression(t,y)
%figure, plotresponse(t,y)
%figure, ploterrcorr(e)
%figure, plotinerrcorr(x,e)
% Closed Loop Network
% Use this network to do multi-step prediction.
% The function CLOSELOOP replaces the feedback input with a direct
% connection from the output layer.
netc = closeloop(net);
netc.name = [net.name ‘ – Closed Loop’];
view(netc)
[xc,xic,aic,tc] = preparets(netc,X,{},T);
yc = netc(xc,xic,aic);
closedLoopPerformance = perform(net,tc,yc)
% Multi-step Prediction
% Sometimes it is useful to simulate a network in open-loop form for as
% long as there is known output data, and then switch to closed-loop form
% to perform multistep prediction while providing only the external input.
% Here all but 5 timesteps of the input series and target series are used
% to simulate the network in open-loop form, taking advantage of the higher
% accuracy that providing the target series produces:
numTimesteps = size(x,2);
knownOutputTimesteps = 1:(numTimesteps-5);
predictOutputTimesteps = (numTimesteps-4):numTimesteps;
X1 = X(:,knownOutputTimesteps);
T1 = T(:,knownOutputTimesteps);
[x1,xio,aio] = preparets(net,X1,{},T1);
[y1,xfo,afo] = net(x1,xio,aio);
% Next the the network and its final states will be converted to
% closed-loop form to make five predictions with only the five inputs
% provided.
x2 = X(1,predictOutputTimesteps);
[netc,xic,aic] = closeloop(net,xfo,afo);
[y2,xfc,afc] = netc(x2,xic,aic);
multiStepPerformance = perform(net,T(1,predictOutputTimesteps),y2)
% Alternate predictions can be made for different values of x2, or further
% predictions can be made by continuing simulation with additional external
% inputs and the last closed-loop states xfc and afc.
% Step-Ahead Prediction Network
% For some applications it helps to get the prediction a timestep early.
% The original network returns predicted y(t+1) at the same time it is
% given y(t+1). For some applications such as decision making, it would
% help to have predicted y(t+1) once y(t) is available, but before the
% actual y(t+1) occurs. The network can be made to return its output a
% timestep early by removing one delay so that its minimal tap delay is now
% 0 instead of 1. The new network returns the same outputs as the original
% network, but outputs are shifted left one timestep.
nets = removedelay(net);
nets.name = [net.name ‘ – Predict One Step Ahead’];
view(nets)
[xs,xis,ais,ts] = preparets(nets,X,{},T);
ys = nets(xs,xis,ais);
stepAheadPerformance = perform(nets,ts,ys)
% Deployment
% Change the (false) values to (true) to enable the following code blocks.
% See the help for each generation function for more information.
if (false)
% Generate MATLAB function for neural network for application
% deployment in MATLAB scripts or with MATLAB Compiler and Builder
% tools, or simply to examine the calculations your trained neural
% network performs.
genFunction(net,’myNeuralNetworkFunction’);
y = myNeuralNetworkFunction(x,xi,ai);
end
if (false)
% Generate a matrix-only MATLAB function for neural network code
% generation with MATLAB Coder tools.
genFunction(net,’myNeuralNetworkFunction’,’MatrixOnly’,’yes’);
x1 = cell2mat(x(1,:));
x2 = cell2mat(x(2,:));
xi1 = cell2mat(xi(1,:));
xi2 = cell2mat(xi(2,:));
y = myNeuralNetworkFunction(x1,x2,xi1,xi2);
end
if (false)
% Generate a Simulink diagram for simulation or deployment with.
% Simulink Coder tools.
gensim(net);
end% Solve an Autoregression Problem with External Input with a NARX Neural Network
% Script generated by Neural Time Series app
% Created 11-Apr-2024 12:53:07
%
% This script assumes these variables are defined:
%
% input – input time series.
% output – feedback time series.
X = tonndata(input,false,false);
T = tonndata(output,false,false);
% Choose a Training Function
% For a list of all training functions type: help nntrain
% ‘trainlm’ is usually fastest.
% ‘trainbr’ takes longer but may be better for challenging problems.
% ‘trainscg’ uses less memory. Suitable in low memory situations.
trainFcn = ‘trainlm’; % Levenberg-Marquardt backpropagation.
% Create a Nonlinear Autoregressive Network with External Input
inputDelays = 1:4;
feedbackDelays = 1:4;
hiddenLayerSize = 10;
net = narxnet(inputDelays,feedbackDelays,hiddenLayerSize,’open’,trainFcn);
% Choose Input and Feedback Pre/Post-Processing Functions
% Settings for feedback input are automatically applied to feedback output
% For a list of all processing functions type: help nnprocess
% Customize input parameters at: net.inputs{i}.processParam
% Customize output parameters at: net.outputs{i}.processParam
net.inputs{1}.processFcns = {‘removeconstantrows’,’mapminmax’};
net.inputs{2}.processFcns = {‘removeconstantrows’,’mapminmax’};
% Prepare the Data for Training and Simulation
% The function PREPARETS prepares timeseries data for a particular network,
% shifting time by the minimum amount to fill input states and layer
% states. Using PREPARETS allows you to keep your original time series data
% unchanged, while easily customizing it for networks with differing
% numbers of delays, with open loop or closed loop feedback modes.
[x,xi,ai,t] = preparets(net,X,{},T);
% Setup Division of Data for Training, Validation, Testing
% For a list of all data division functions type: help nndivision
net.divideFcn = ‘dividerand’; % Divide data randomly
net.divideMode = ‘time’; % Divide up every sample
net.divideParam.trainRatio = 80/100;
net.divideParam.valRatio = 5/100;
net.divideParam.testRatio = 15/100;
% Choose a Performance Function
% For a list of all performance functions type: help nnperformance
net.performFcn = ‘mse’; % Mean Squared Error
% Choose Plot Functions
% For a list of all plot functions type: help nnplot
net.plotFcns = {‘plotperform’,’plottrainstate’, ‘ploterrhist’, …
‘plotregression’, ‘plotresponse’, ‘ploterrcorr’, ‘plotinerrcorr’};
% Train the Network
[net,tr] = train(net,x,t,xi,ai);
% Test the Network
y = net(x,xi,ai);
e = gsubtract(t,y);
performance = perform(net,t,y)
% Recalculate Training, Validation and Test Performance
trainTargets = gmultiply(t,tr.trainMask);
valTargets = gmultiply(t,tr.valMask);
testTargets = gmultiply(t,tr.testMask);
trainPerformance = perform(net,trainTargets,y)
valPerformance = perform(net,valTargets,y)
testPerformance = perform(net,testTargets,y)
% View the Network
view(net)
% Plots
% Uncomment these lines to enable various plots.
%figure, plotperform(tr)
%figure, plottrainstate(tr)
%figure, ploterrhist(e)
%figure, plotregression(t,y)
%figure, plotresponse(t,y)
%figure, ploterrcorr(e)
%figure, plotinerrcorr(x,e)
% Closed Loop Network
% Use this network to do multi-step prediction.
% The function CLOSELOOP replaces the feedback input with a direct
% connection from the output layer.
netc = closeloop(net);
netc.name = [net.name ‘ – Closed Loop’];
view(netc)
[xc,xic,aic,tc] = preparets(netc,X,{},T);
yc = netc(xc,xic,aic);
closedLoopPerformance = perform(net,tc,yc)
% Multi-step Prediction
% Sometimes it is useful to simulate a network in open-loop form for as
% long as there is known output data, and then switch to closed-loop form
% to perform multistep prediction while providing only the external input.
% Here all but 5 timesteps of the input series and target series are used
% to simulate the network in open-loop form, taking advantage of the higher
% accuracy that providing the target series produces:
numTimesteps = size(x,2);
knownOutputTimesteps = 1:(numTimesteps-5);
predictOutputTimesteps = (numTimesteps-4):numTimesteps;
X1 = X(:,knownOutputTimesteps);
T1 = T(:,knownOutputTimesteps);
[x1,xio,aio] = preparets(net,X1,{},T1);
[y1,xfo,afo] = net(x1,xio,aio);
% Next the the network and its final states will be converted to
% closed-loop form to make five predictions with only the five inputs
% provided.
x2 = X(1,predictOutputTimesteps);
[netc,xic,aic] = closeloop(net,xfo,afo);
[y2,xfc,afc] = netc(x2,xic,aic);
multiStepPerformance = perform(net,T(1,predictOutputTimesteps),y2)
% Alternate predictions can be made for different values of x2, or further
% predictions can be made by continuing simulation with additional external
% inputs and the last closed-loop states xfc and afc.
% Step-Ahead Prediction Network
% For some applications it helps to get the prediction a timestep early.
% The original network returns predicted y(t+1) at the same time it is
% given y(t+1). For some applications such as decision making, it would
% help to have predicted y(t+1) once y(t) is available, but before the
% actual y(t+1) occurs. The network can be made to return its output a
% timestep early by removing one delay so that its minimal tap delay is now
% 0 instead of 1. The new network returns the same outputs as the original
% network, but outputs are shifted left one timestep.
nets = removedelay(net);
nets.name = [net.name ‘ – Predict One Step Ahead’];
view(nets)
[xs,xis,ais,ts] = preparets(nets,X,{},T);
ys = nets(xs,xis,ais);
stepAheadPerformance = perform(nets,ts,ys)
% Deployment
% Change the (false) values to (true) to enable the following code blocks.
% See the help for each generation function for more information.
if (false)
% Generate MATLAB function for neural network for application
% deployment in MATLAB scripts or with MATLAB Compiler and Builder
% tools, or simply to examine the calculations your trained neural
% network performs.
genFunction(net,’myNeuralNetworkFunction’);
y = myNeuralNetworkFunction(x,xi,ai);
end
if (false)
% Generate a matrix-only MATLAB function for neural network code
% generation with MATLAB Coder tools.
genFunction(net,’myNeuralNetworkFunction’,’MatrixOnly’,’yes’);
x1 = cell2mat(x(1,:));
x2 = cell2mat(x(2,:));
xi1 = cell2mat(xi(1,:));
xi2 = cell2mat(xi(2,:));
y = myNeuralNetworkFunction(x1,x2,xi1,xi2);
end
if (false)
% Generate a Simulink diagram for simulation or deployment with.
% Simulink Coder tools.
gensim(net);
end % Solve an Autoregression Problem with External Input with a NARX Neural Network
% Script generated by Neural Time Series app
% Created 11-Apr-2024 12:53:07
%
% This script assumes these variables are defined:
%
% input – input time series.
% output – feedback time series.
X = tonndata(input,false,false);
T = tonndata(output,false,false);
% Choose a Training Function
% For a list of all training functions type: help nntrain
% ‘trainlm’ is usually fastest.
% ‘trainbr’ takes longer but may be better for challenging problems.
% ‘trainscg’ uses less memory. Suitable in low memory situations.
trainFcn = ‘trainlm’; % Levenberg-Marquardt backpropagation.
% Create a Nonlinear Autoregressive Network with External Input
inputDelays = 1:4;
feedbackDelays = 1:4;
hiddenLayerSize = 10;
net = narxnet(inputDelays,feedbackDelays,hiddenLayerSize,’open’,trainFcn);
% Choose Input and Feedback Pre/Post-Processing Functions
% Settings for feedback input are automatically applied to feedback output
% For a list of all processing functions type: help nnprocess
% Customize input parameters at: net.inputs{i}.processParam
% Customize output parameters at: net.outputs{i}.processParam
net.inputs{1}.processFcns = {‘removeconstantrows’,’mapminmax’};
net.inputs{2}.processFcns = {‘removeconstantrows’,’mapminmax’};
% Prepare the Data for Training and Simulation
% The function PREPARETS prepares timeseries data for a particular network,
% shifting time by the minimum amount to fill input states and layer
% states. Using PREPARETS allows you to keep your original time series data
% unchanged, while easily customizing it for networks with differing
% numbers of delays, with open loop or closed loop feedback modes.
[x,xi,ai,t] = preparets(net,X,{},T);
% Setup Division of Data for Training, Validation, Testing
% For a list of all data division functions type: help nndivision
net.divideFcn = ‘dividerand’; % Divide data randomly
net.divideMode = ‘time’; % Divide up every sample
net.divideParam.trainRatio = 80/100;
net.divideParam.valRatio = 5/100;
net.divideParam.testRatio = 15/100;
% Choose a Performance Function
% For a list of all performance functions type: help nnperformance
net.performFcn = ‘mse’; % Mean Squared Error
% Choose Plot Functions
% For a list of all plot functions type: help nnplot
net.plotFcns = {‘plotperform’,’plottrainstate’, ‘ploterrhist’, …
‘plotregression’, ‘plotresponse’, ‘ploterrcorr’, ‘plotinerrcorr’};
% Train the Network
[net,tr] = train(net,x,t,xi,ai);
% Test the Network
y = net(x,xi,ai);
e = gsubtract(t,y);
performance = perform(net,t,y)
% Recalculate Training, Validation and Test Performance
trainTargets = gmultiply(t,tr.trainMask);
valTargets = gmultiply(t,tr.valMask);
testTargets = gmultiply(t,tr.testMask);
trainPerformance = perform(net,trainTargets,y)
valPerformance = perform(net,valTargets,y)
testPerformance = perform(net,testTargets,y)
% View the Network
view(net)
% Plots
% Uncomment these lines to enable various plots.
%figure, plotperform(tr)
%figure, plottrainstate(tr)
%figure, ploterrhist(e)
%figure, plotregression(t,y)
%figure, plotresponse(t,y)
%figure, ploterrcorr(e)
%figure, plotinerrcorr(x,e)
% Closed Loop Network
% Use this network to do multi-step prediction.
% The function CLOSELOOP replaces the feedback input with a direct
% connection from the output layer.
netc = closeloop(net);
netc.name = [net.name ‘ – Closed Loop’];
view(netc)
[xc,xic,aic,tc] = preparets(netc,X,{},T);
yc = netc(xc,xic,aic);
closedLoopPerformance = perform(net,tc,yc)
% Multi-step Prediction
% Sometimes it is useful to simulate a network in open-loop form for as
% long as there is known output data, and then switch to closed-loop form
% to perform multistep prediction while providing only the external input.
% Here all but 5 timesteps of the input series and target series are used
% to simulate the network in open-loop form, taking advantage of the higher
% accuracy that providing the target series produces:
numTimesteps = size(x,2);
knownOutputTimesteps = 1:(numTimesteps-5);
predictOutputTimesteps = (numTimesteps-4):numTimesteps;
X1 = X(:,knownOutputTimesteps);
T1 = T(:,knownOutputTimesteps);
[x1,xio,aio] = preparets(net,X1,{},T1);
[y1,xfo,afo] = net(x1,xio,aio);
% Next the the network and its final states will be converted to
% closed-loop form to make five predictions with only the five inputs
% provided.
x2 = X(1,predictOutputTimesteps);
[netc,xic,aic] = closeloop(net,xfo,afo);
[y2,xfc,afc] = netc(x2,xic,aic);
multiStepPerformance = perform(net,T(1,predictOutputTimesteps),y2)
% Alternate predictions can be made for different values of x2, or further
% predictions can be made by continuing simulation with additional external
% inputs and the last closed-loop states xfc and afc.
% Step-Ahead Prediction Network
% For some applications it helps to get the prediction a timestep early.
% The original network returns predicted y(t+1) at the same time it is
% given y(t+1). For some applications such as decision making, it would
% help to have predicted y(t+1) once y(t) is available, but before the
% actual y(t+1) occurs. The network can be made to return its output a
% timestep early by removing one delay so that its minimal tap delay is now
% 0 instead of 1. The new network returns the same outputs as the original
% network, but outputs are shifted left one timestep.
nets = removedelay(net);
nets.name = [net.name ‘ – Predict One Step Ahead’];
view(nets)
[xs,xis,ais,ts] = preparets(nets,X,{},T);
ys = nets(xs,xis,ais);
stepAheadPerformance = perform(nets,ts,ys)
% Deployment
% Change the (false) values to (true) to enable the following code blocks.
% See the help for each generation function for more information.
if (false)
% Generate MATLAB function for neural network for application
% deployment in MATLAB scripts or with MATLAB Compiler and Builder
% tools, or simply to examine the calculations your trained neural
% network performs.
genFunction(net,’myNeuralNetworkFunction’);
y = myNeuralNetworkFunction(x,xi,ai);
end
if (false)
% Generate a matrix-only MATLAB function for neural network code
% generation with MATLAB Coder tools.
genFunction(net,’myNeuralNetworkFunction’,’MatrixOnly’,’yes’);
x1 = cell2mat(x(1,:));
x2 = cell2mat(x(2,:));
xi1 = cell2mat(xi(1,:));
xi2 = cell2mat(xi(2,:));
y = myNeuralNetworkFunction(x1,x2,xi1,xi2);
end
if (false)
% Generate a Simulink diagram for simulation or deployment with.
% Simulink Coder tools.
gensim(net);
end neural network, narx, input MATLAB Answers — New Questions
A quatity is being solved by a self consistent integration
How to find Z from the below equation
here mathcal{P} means the principal value integration. I was tried in the following way, but couldn’t figure out how to solve this,
A = 2000; a = 500; tolerance = 10^-4; Z = 0;
for i = 1 : 10
result = integral(@(x) (x.^2.*((A^2+Z^2)./(A^2+((x.^2+a^2)))) .* (sqrt(x.^2+a^2).*(x.^2+a^2-Z^2)).^(-1)), 0,A, ‘PrincipalValue’, true);
new_Z = sqrt(result);
if abs(new_Z – Z) < tolerance
Z = new_Z;
break;
end
Z = new_Z;
end
disp(new_Z);
Thank you in advance!How to find Z from the below equation
here mathcal{P} means the principal value integration. I was tried in the following way, but couldn’t figure out how to solve this,
A = 2000; a = 500; tolerance = 10^-4; Z = 0;
for i = 1 : 10
result = integral(@(x) (x.^2.*((A^2+Z^2)./(A^2+((x.^2+a^2)))) .* (sqrt(x.^2+a^2).*(x.^2+a^2-Z^2)).^(-1)), 0,A, ‘PrincipalValue’, true);
new_Z = sqrt(result);
if abs(new_Z – Z) < tolerance
Z = new_Z;
break;
end
Z = new_Z;
end
disp(new_Z);
Thank you in advance! How to find Z from the below equation
here mathcal{P} means the principal value integration. I was tried in the following way, but couldn’t figure out how to solve this,
A = 2000; a = 500; tolerance = 10^-4; Z = 0;
for i = 1 : 10
result = integral(@(x) (x.^2.*((A^2+Z^2)./(A^2+((x.^2+a^2)))) .* (sqrt(x.^2+a^2).*(x.^2+a^2-Z^2)).^(-1)), 0,A, ‘PrincipalValue’, true);
new_Z = sqrt(result);
if abs(new_Z – Z) < tolerance
Z = new_Z;
break;
end
Z = new_Z;
end
disp(new_Z);
Thank you in advance! integration, fsolve MATLAB Answers — New Questions
Deleted SharePoint folders keep reappearing
We are having problems with a number of folders in a SharePoint site accessing via a link in OneDrive which seem to have multiple lives. When we delete them from one user’s laptop (OneDrive app) or Via the web ui, then other user’s laptops recreate the soon after. This happens whether or not there are files in the folders.
I have today had to re-delete 100s of folders. Each time I do, another user’s laptop puts them back again. Sometimes the recreated folders are tagged with the user’s laptop name as a tag eg: FolderName-ComputerName – I think this is when the original FolderName was already re-created by another user’s laptop.
No sync errors are reported on the user’s laptops.
There is no “odd” configuration. All the users are “Members” of the site.
We’ve had this happen for one or two folders in the past but in the last two days it’s gone crazy.
Any clues about what’s happening and how to stop it?
We are having problems with a number of folders in a SharePoint site accessing via a link in OneDrive which seem to have multiple lives. When we delete them from one user’s laptop (OneDrive app) or Via the web ui, then other user’s laptops recreate the soon after. This happens whether or not there are files in the folders.I have today had to re-delete 100s of folders. Each time I do, another user’s laptop puts them back again. Sometimes the recreated folders are tagged with the user’s laptop name as a tag eg: FolderName-ComputerName – I think this is when the original FolderName was already re-created by another user’s laptop.No sync errors are reported on the user’s laptops.There is no “odd” configuration. All the users are “Members” of the site.We’ve had this happen for one or two folders in the past but in the last two days it’s gone crazy.Any clues about what’s happening and how to stop it? Read More
Migration of Inactive Users
Hi Team,
We recently received a new request for Migration of Inactive Users from Source Microsoft365 tenant to Destination Microsoft 365 tenant we need to automate this migration can anybody recommend the best way to achieve this.
Need to Migrate the Mailbox Data and OneDrive Data of Users
Hi Team,We recently received a new request for Migration of Inactive Users from Source Microsoft365 tenant to Destination Microsoft 365 tenant we need to automate this migration can anybody recommend the best way to achieve this.Need to Migrate the Mailbox Data and OneDrive Data of Users Read More
Request for Information: Auto-Refresh Feature for Microsoft Teams Side Panel Content
I hope this message finds you well. I am reaching out to express my gratitude for the continuous support provided in integrating the Microsoft Teams application into our meetings. The functionality has been exceptional, enhancing our collaborative experiences seamlessly.
Currently, we are exploring further enhancements to our custom applications, specifically focusing on the side panel within Microsoft Teams meetings. Our aim is to ensure that the content remains dynamically updated, offering attendees real-time access to relevant information.
In this regard, I am keen to inquire about the availability of an auto-refresh or manual refresh feature within the Microsoft Teams side panel. Such functionality would greatly benefit our attendees, allowing them to stay up-to-date with meeting app content even as organizers make updates.
Could you kindly provide insight into whether such features exist within the Microsoft Teams platform? Additionally, any guidance or best practices on implementing dynamic content updates within the side panel would be highly appreciated.
Thank you once again for your ongoing support and assistance. We look forward to your prompt response and further collaboration in optimizing our Microsoft Teams experience.
Warm regards,
Sukesh PK.
I hope this message finds you well. I am reaching out to express my gratitude for the continuous support provided in integrating the Microsoft Teams application into our meetings. The functionality has been exceptional, enhancing our collaborative experiences seamlessly. Currently, we are exploring further enhancements to our custom applications, specifically focusing on the side panel within Microsoft Teams meetings. Our aim is to ensure that the content remains dynamically updated, offering attendees real-time access to relevant information. In this regard, I am keen to inquire about the availability of an auto-refresh or manual refresh feature within the Microsoft Teams side panel. Such functionality would greatly benefit our attendees, allowing them to stay up-to-date with meeting app content even as organizers make updates. Could you kindly provide insight into whether such features exist within the Microsoft Teams platform? Additionally, any guidance or best practices on implementing dynamic content updates within the side panel would be highly appreciated. Thank you once again for your ongoing support and assistance. We look forward to your prompt response and further collaboration in optimizing our Microsoft Teams experience. Warm regards, Sukesh PK. Read More
Constant Noninteractive sign in attempts from Microsoft IPs
In noninteractivesigninlogs, we’re seeing a bunch of attempts made to sign in to our admin accounts rejected with error codes 500131 and 500133 coming from 4.231.207.170 and 2a01:111:f400:fe13::100 (Microsoft datacentre IPs), device type “Windows 10”, Resources are ComplianceAuthServer/Office 365 Exchange Online.
What are we seeing here, is this a misconfiguration on the Microsoft side, or an attack?
In noninteractivesigninlogs, we’re seeing a bunch of attempts made to sign in to our admin accounts rejected with error codes 500131 and 500133 coming from 4.231.207.170 and 2a01:111:f400:fe13::100 (Microsoft datacentre IPs), device type “Windows 10”, Resources are ComplianceAuthServer/Office 365 Exchange Online.What are we seeing here, is this a misconfiguration on the Microsoft side, or an attack? Read More
Inactive Users PST Migration from Tenant to Tenant M365
Is there a way I can migrate an inactive PST to another Office 365 tenant? Any suggestions on how I can move PST files to another tenant using eDiscovery?
Is there any PowerShell script that can upload the PST directly into another Tenant data life cycle management Import job for PST.
can AZ copy -copy the data from eDiscovery Export Key to Target Tenant SAS URL.
Is there a way I can migrate an inactive PST to another Office 365 tenant? Any suggestions on how I can move PST files to another tenant using eDiscovery? Is there any PowerShell script that can upload the PST directly into another Tenant data life cycle management Import job for PST.can AZ copy -copy the data from eDiscovery Export Key to Target Tenant SAS URL. Read More
Editable forms after entering data
Hello to everyone.
I haven’t used MS Access for things other than database management in over 10 years. Recently, I’ve found the need to create some data management forms for different projects. Therefore, I apologize if my question seems simple and old, but I have failed to find videos/tutorials explaining what I’m looking for specifically.
The idea is to have a form for different users to enter their respective information. When first entered, ALL of these forms will be incomplete due to the nature of the associated processes. What I’d like is for the users to be able to lookup the forms they had filled out originally and complete them whenever they acquire the missing information.
Each form would have a way to be identified in a unique fashion using the workplace’s ID system, so that part is a non-issue.
Any help would be greatly appreciated.
Hello to everyone. I haven’t used MS Access for things other than database management in over 10 years. Recently, I’ve found the need to create some data management forms for different projects. Therefore, I apologize if my question seems simple and old, but I have failed to find videos/tutorials explaining what I’m looking for specifically. The idea is to have a form for different users to enter their respective information. When first entered, ALL of these forms will be incomplete due to the nature of the associated processes. What I’d like is for the users to be able to lookup the forms they had filled out originally and complete them whenever they acquire the missing information. Each form would have a way to be identified in a unique fashion using the workplace’s ID system, so that part is a non-issue. Any help would be greatly appreciated. Read More
Enrolling shared or kiosk Windows devices?
Hi,
We need to deploy a number of shared Windows computers and Kiosk computers. I have found plenty of information on how to build profiles and manage them within Intune, but what I can’t seem to find is any information on how to get them Into Intune. It seems pretty straight forward to bring a laptop into Intune that will be used by a specific user, but not a device that will be shared by multiple users.
Can anyone point me towards some step-by-step procedures or video demonstrations for how to bring a hybrid joined device into Intune that isn’t registered to a specific user?
Thanks in advance!
Hi, We need to deploy a number of shared Windows computers and Kiosk computers. I have found plenty of information on how to build profiles and manage them within Intune, but what I can’t seem to find is any information on how to get them Into Intune. It seems pretty straight forward to bring a laptop into Intune that will be used by a specific user, but not a device that will be shared by multiple users. Can anyone point me towards some step-by-step procedures or video demonstrations for how to bring a hybrid joined device into Intune that isn’t registered to a specific user? Thanks in advance! Read More