簡體   English   中英

Powershell腳本在Windows 2008 R2上運行良好,但在Windows 2012 R2上不執行任何操作

[英]Powershell script runs fine on Windows 2008 R2 but does nothing on Windows 2012 R2

我是Powershell的新手,我不確定該如何處理我遇到的以下問題。

我使用以下腳本將SQL BAK文件從服務器復制到NAS。 我認為這是一項安全措施,以確保我在服務器外部具有SQL BAK文件的副本。 該腳本的工作方式非常簡單。 只需創建一個SQL作業,並確保選擇“ Type:Powershell”,安排該作業並保存更改-o! 您的BAK文件將被遠程復制到NAS。 該腳本可以在Windows 2008 R2上正常運行,但不能在Windows 2012上運行。

當我在Windows 2012 R2服務器上運行SQL作業時,該作業報告其運行成功。 但是,當我檢查NAS文件夾時,沒有文件被復制。 我檢查日志,並且日志報告作業也成功運行。

param
(
[Parameter(Position=0, Mandatory=$true)] [string]$SrcFolder,
[Parameter(Position=1, Mandatory=$true)] [string]$TgtFolder
)

##copy

robocopy $SrcFolder i:\sqlbackups $TgtFolder \as2\sqlbackups\SERVERNAME /e /copy:dat /log+:i:aslog\log.txt

##set exit code
$exit = $lastexitcode -band 24

exit $exit

因此,我繼續戴上故障排除帽,以確定此腳本為何無法復制文件。 我首先檢查一下是否可以在沒有Powershell語法的情況下運行robocopy cmd。 因此,我打開了一個命令(admin)shell,然后像這樣運行了以下命令。

robocopy i:\sqlbackups \as2\sqlbackups\SERVERNAME /e /copy:dat 

如我所料,此命令運行正常,沒有任何問題。

因此,我繼續下一步,將powershell腳本復制到Windows powershell ISE。 我運行了腳本,並提示了以下內容。

命令管道位置1上的cmdlet為以下參數提供值:SrcFolder:

我以前從未見過這種情況,我懷疑它與Windows 2012 R2有關。 我希望該腳本能夠像Windows 2008 R2一樣運行而沒有任何提示。 誰知道我該如何解決?

它在ISE中提示的原因是因為您具有不提供的強制性參數。 它將在2008 R2 / PowerShell 2.0上執行相同的操作。

我認為這與為什么在2012 R2上無法正常運行無關。 聽起來您正在嘗試直接從SQL Server運行此操作,因此我必須假定2個不同的操作系統指示您有2個不同的SQL Server實例正在運行。

因此,我懷疑該作業是以2個不同的用戶身份運行的,其中一個用戶可以訪問NAS,而另一個用戶沒有訪問權限。

這里有些猜測,但是如果您有更多詳細信息,我將更新答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM