0
說,我這個簡單的功能:寫主機和寫輸出繼電器在遠程
Function DoSomething
{
Write-Host "Doing something locally..."
Start-Sleep 5
Return 5
}
現在,說我希望能夠在本地計算機上,但還使用另外一個執行此功能PowerShell遠程處理。問題是Write-Host
不適合這個。事實上,在遠程執行腳本的情況下,我不希望將句子顯示在控制檯上,但我希望收到有關任務進度的信息,所以我這樣做了:
Function DoSomething
{
if ([Environment]::UserInteractive -eq $true)
{
Write-Host "Doing something locally..."
}
else
{
Write-Output "Doing something remotely..."
}
Start-Sleep 5
Return 5
}
就這樣,我能管這樣的功能:
Function Pipable {
Param(
[Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelinebyPropertyName = $true)]
$value
)
Process {
Write-Host $value
}
}
Invoke-Command -ComputerName "MACHINE" -ScriptBlock {
Function DoSomething
{ ... }
DoSomething
} | Pipable
我的問題是,如果我替換調用DoSomething
通過類似:
$value = DoSomething
然後發送因爲我明白的原因,「遠程做某事......」不是通過管道發送的,但它阻止了我想做的事情:
我希望能夠在控制檯上顯示一些信息函數是在本地執行的,但是當它遠程執行時,我希望獲得有關在啓動PSSession的計算機上以自己的方式處理的狀態的信息。寫輸出似乎對此很有用,但是我不能將它用在返回值的函數中,因爲上述原因。
有沒有辦法做到這一點?
小心解釋一下? :-D – ssougnez
Posh中有多個流(1..6)。寫主機不會破壞你的輸出,所以你可以安全地記錄它/管它。 '6>'將寫主機消息重定向到您可以加載和檢查狀態消息的文件。 '*。'將所有內容重定向到一個文件,以防您不想看到任何輸出。 – majkinetor