С таким кодом:
param
(
[Parameter(Mandatory = $true)]
[string]$TenantId,
[Parameter(Mandatory = $true)]
[System.Uri]$HostUrl,
[Parameter(Mandatory = $true)]
[string]$SiteId,
[Parameter(Mandatory = $true)]
[guid]$WebId,
[Parameter(Mandatory = $true)]
[guid]$ListId,
[Parameter(Mandatory = $true)]
[guid]$UniqueId,
[Parameter(Mandatory = $true)]
[string]$OutFile
)
Connect-MgGraph -Scopes "Sites.FullControl.All" -TenantId $TenantId -ForceRefresh
Get-MgSiteListItemDriveItemContent -ListId $ListId -ListItemId $UniqueId -SiteId "$($HostUrl.DnsSafeHost),$SiteId,$WebId" -OutFile $OutFile
Disconnect-MgGraph
Я хотел бы, чтобы конечный пользователь знал, как получить все необходимые именованные параметры, например. при выполнении этого скрипта я ожидаю что-то вроде этого
cmdlet at command pipeline position 1
Supply values for the following parameters:
TenantId (to get TenantID go to Admin Center - Settings and copy TenantID): xxx
HostUrl (to get HostUrl copy HostUrl from the log files): yyy-yyy
SiteId (SiteId can be obtained directly in SharePoint site): zzz-zzz-zzz
и т. д.
Я знаю, что есть параметр HelpMessage, например.
[Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, HelpMessage = "Site name")]
но я хочу, чтобы это сообщение отображалось, когда конечный пользователь указывает значение.
Можете ли вы уточнить, что вы после? «но я хочу, чтобы это сообщение отображалось, когда конечный пользователь указывает значение». Вы хотите, чтобы он отображался как вопрос/ответ во время работы? Если это так, вы не хотите устанавливать его в качестве обязательного параметра, вы хотите Read-Host
переменные.
Например:
$TenantId = Read-Host "TenantId (to get TenantID go to Admin Center - Settings and Copy TenantID)"
if ($null -eq $TenantId) {
Write-Output "Invalid TenantId supplied, unable to continue."
return
}
И затем вы сделаете это для всех ваших переменных и предпримете действия, как только они будут предоставлены.
Редактировать: Используя ответ, указанный zjg.robin, при выполнении обязательного параметра пользователь может ввести !? чтобы получить справочное сообщение для обязательных параметров. Если вы предпочитаете, чтобы они запрашивались, вам следует использовать методологию «Вопрос/ответ» в отличие от командлета с требуемыми параметрами. Или вы можете предоставить ему оба мира и сделать его настоящим командлетом внутри функции. Затем при вызове скрипта, если параметры не указаны, вы запрашиваете их для таковых и передаете в функцию. На самом деле зависит от ваших конкретных требований.
Я думаю, вы просите что-то похожее на этот пост: stackoverflow.com/questions/5237723/…