我正在嘗試使用invoke-Async將SQL腳本部署到多個sql服務器。Invoke-Async在多個服務器上部署SQL腳本。
invoke-async代碼是here。 該腳本使用invoke-sqlcmd2,其代碼爲here。
以下非sql-server-code作品。
$sb = [scriptblock] {param($system) gwmi win32_operatingsystem -ComputerName $system | select csname,caption}
$servers = 'Server1', 'Server2', 'Server3', 'Server4'
$rtn = Invoke-Async -Set $servers -SetParam system -ScriptBlock $sb
$rtn
我調整了一下代碼(下)以適用於SQL服務器。不起作用。很明顯,我錯過了一些東西。任何幫助都非常感謝。謝謝。
$sb = [scriptblock] {param($system) Invoke-SQLCmd2 -ServerInstance $system -ServerInstance 'select name from sys.databases' }
$servers = 'Server1', 'Server2', 'Server3', 'Server4'
$rtn = Invoke-Async -Set $servers -SetParam system -ScriptBlock $sb
$rtn
沒有PowerShell Invoke-Async的默認命令。但有一個功能可用。您應該收到Invoke-Async無法識別爲cmdlet的錯誤。請發佈錯誤 –
我已經下載了一個invoke-sync的副本,正如我在文章中提到的那樣。我沒有收到「Invoke-Async不被識別爲cmdlet」異常。我只是無法使用Invoke-sqlcmd2和Invoke-sync。使用invoke-sqlcmd2爲invoke-async工作嗎? – RaviLobo
Invoke-sqlcmd2也是一個外部函數,默認情況下不會在那裏..如果你想使用它,然後把整個函數定義放在腳本塊中,然後調用它 –