我已經撰寫了以下函式來復制遠程服務器上的檔案
Function deploy-file{
PARAM(
[Parameter(Mandatory=$true,Position=0)][STRING]$cred,
[Parameter(Mandatory=$true,Position=1)][STRING]$server,
[Parameter(Mandatory=$true,Position=2)][STRING]$destdir,
[Parameter(Mandatory=$true,Position=3)][STRING]$file
)
$parameters = @{
Name = $server
PSProvider = "FileSystem"
Root = $destdir
Credential = $cred
}
new-psdrive @parameters
$d=$server ":\"
copy-item $file $d -force
remove-psdrive $server -ErrorAction SilentlyContinue
}
現在,我從主檔案中呼叫上述函式,如下所示:
$sn=abc.com
$server=($sn -split "\.")[0]
$destdir = 'e:\folder'
$file = 'file.zip'
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $usr, $pa
deploy-file $cred $server $destdir $file
憑據沒有問題。
我的腳本繼續運行,甚至沒有拋出任何錯誤。腳本有什么問題?
uj5u.com熱心網友回復:
使用 a將檔案復制到遠程主機PSSession如下:
function Deploy-File {
[cmdletbinding()]
param(
[Parameter(Mandatory, Position=0)]
[securestring] $cred,
[Parameter(Mandatory, Position=1)]
[string] $server,
[Parameter(Mandatory, Position=2)]
[string] $destdir,
[Parameter(Mandatory, Position=3)]
[string] $file
)
try {
[IO.FileInfo] $file = Get-Item $file
$session = New-PSSession -ComputerName $server -Credential $cred
Copy-Item -Path $file -Destination $destdir -ToSession $session
}
catch {
$PSCmdlet.ThrowTerminatingError($_)
}
finally {
if($session) {
Remove-PSSession $session
}
}
}
通過查看您的代碼,除了我們確定不正確的內容之外,很難判斷出什么可能會失敗,引數$cred被限制[string]在它實際應該是的時間[securestring]。這樣做會使您的 PS Credential 物件無法使用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/448718.html
標籤:视窗 电源外壳 powershell 远程处理
下一篇:在vs代碼中使用win32API
