スクリプト内の変数にコマンドを直接格納し、そのスクリプトの後半で同じコマンドを呼び出すとします。Powershell:スクリプト中に変数全体にコマンドを保存します。
私はこのようにそれを行うことを試み:その方法と
$command = Invoke-Command -ComputerName $Computer -Credential $Credential -ScriptBlock{(Get-CimInstance Win32_SoftwareFeature -Filter "productname LIKE 'Microsoft SQL Server% %Setup (English)'").ProductName}
Invoke-Expression $command
問題は、スクリプトコードの最初の行に遭遇初めてです、それはそのコードを実行しようとします。スクリプトのその時点で、私は残りの変数を割り当てていません
これは、スクリプトでPSExecを実行しようとしているところで特に問題です。私は約10のコマンドを変数にラップし、後でスクリプトのさまざまな点で呼び出したいと思います。
$CreateSymbolicLink = .\PsExec\PsExec.exe \\$computer -u username -p password -accepteula -h -i 1 cmd "/c mklink /D C:\Applications \\server\Share"
Invoke-Expression $CreateSymbolicLink
しかし、スクリプトが最初から実行するときに変数が定義されていないとき、それは実際に私がやってからそれを避けるためにしようとしていた、PSEXECを実行します。
どうすればこの問題を解決できますか?私はSet-Variableコマンドレットを使用しようとしましたが、これもコマンドを実行しているように見えます。
$コマンド= {Invoke-Command -ComputerName $ Computer-クレデンシャル$ Credential -ScriptBlock {(Get-CimInstance Win32_SoftwareFeature -Filter "productname LIKE 'Microsoft SQL Server%セットアップ(英語)'))。ProductName}'および'&$ command'です。 – PetSerAl