我正在嘗試創建一個腳本,該腳本應該使用引數運行,并且不帶引數應該為多個串列產生結果: 例如:我有一個函式,在該函式下我將引數作為服務器名稱,這對于獲取結果的單個服務器廣告作業正常。(RestoreFileList -servername XXXXXXXXXXXX1)
如果我不想將引數作為 servername 并且輸出應該導致完整的服務器串列資料集 例如:Restorefilecount
我是否在引數和服務器串列條件之間遺漏了一些應該獲取結果的東西,對此有什么幫助嗎?
腳本 *************
function Restorefilecount()
{
[cmdletbinding()]
param(
[Parameter(position = 0,mandatory = $false)]
[string] $Servername
)
$servername = @()
$servername = ('XXXXXXXX1', 'XXXXXXXXX2', 'XXXXXXXXX3', 'XXXXXXXXXX4')
$result = Invoke-Client -ComputerName $Servername -ScriptBlock {
$Server = HOSTNAME.EXE
$Query = @'
Select @@ServerName AS ServerName , name,(SUBSTRING(NAME ,15,3) * 100 ) / 100 AS
file,state_desc,user_access_desc FROM master.sys.databases where name like 'TKT' ORDER BY 2
'@
Invoke-Sqlcmd -ServerInstance $Server -Database master -Query $Query
}
uj5u.com熱心網友回復:
基于Abraham Zinala的有用評論:
看起來您只是想定義一個引數的默認值:
function Restore-FileCount {
[CmdletBinding()]
param(
[string[]] $Servername = @('XXXXXXXX1', 'XXXXXXXXX2', 'XXXXXXXXX3', 'XXXXXXXXXX4')
)
# ...
$Servername # Output for demo purposes
}
請注意如何將引數型別從 更改為[string]以[string[]]支持值陣列。
偶然變化:
由于您使用
param(...)塊來定義引數(通常更可取),因此無需放置()在函式名稱 (Restorefilecount()) 之后 - 這樣做不會導致語法錯誤,只要兩者之間沒有空格或只有空格(并且),請注意,您可以通過param(...)塊或通過function foo(...);宣告引數 此外,在無引數函式()中永遠不需要 - 請參閱概念about_Functions幫助主題。我
-在您的函式名稱中插入了一個連字符 ( ),以使其符合 PowerShell 的命名約定。我省略
[Parameter(position = 0, mandatory = $false)]了 ,因為此屬性實體指定的內容相當于默認行為(默認情況下所有引數都是非強制性的,并且Position=0隱含$ServerName為第一個(也是唯一的)引數)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/466225.html
標籤:电源外壳 powershell 远程处理
