2013-07-11 44 views
0

奇怪的問題我今天看到,我不明白。 在ISE或Pshell中手動運行腳本和作爲工作有什麼區別嗎? 如果我運行它手動代碼不會引發錯誤 - 運行平穩:Powershell OnlyInJobError

Get-ChildItem "\\SERVER\S$\ROOT\DIR" -Recurse | Where {$_.creationtime -lt (Get-Date).AddDays(-35)} | Remove-Item -Force -Include *.conf 

但是,如果我通過工作運行它,讓它的$錯誤導出到txtfile發生這種情況: 是權利我的跑步機不同於預定作業的權利?

Get-ChildItem : Zugriff verweigert 
In Zeile:81 Zeichen:1 
+ Get-ChildItem "\\SERVER\S$\ROOT\DIR" -Recurse | Where 
{$_.creati ... 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (:) [Get-ChildItem], UnauthorizedA 
    ccessException 
    + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.Pow 
    erShell.Commands.GetChildItemCommand 

Zugriff verweigert =拒絕訪問

哦,完全忘了告訴我的Windows權限。 通常我連接的服務器對每個人都是阻塞的 - 除了使用證書ofc登錄。但不知何故,我的手動powershell腳本能夠刪除和創建文件? 在「工作模式」中,它失去了能力。

編輯: 與Test-Path命令行開關相同。手動它表明我是真的還是假的。通過工作它會拋出一個錯誤。

編輯 - 同樣的問題完全不同的命令行開關:

$username = "Administrator" 
$password = cat C:\securestring.txt | convertto-securestring 
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $password 

New-PSDrive -Name Z -PSProvider FileSystem -Root \\Server\ROOT -Credential $cred -Persist 

test-path 'Z:' 

Remove-PSDrive -Name Z -PSProvider FileSystem 

這工作!

這不:

$jobname  = "Test5" 
$JobTrigger  = New-JobTrigger -Daily -At "00:18 PM" 
$MyOptions  = New-ScheduledJobOption -ContinueIfGoingOnBattery -HideInTaskScheduler -RunElevated 
Register-ScheduledJob -name "$jobname" -scriptblock { 


$username = "Administrator" 
$password = cat C:\securestring.txt | convertto-securestring 
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $password 

New-PSDrive -Name Z -PSProvider FileSystem -Root \\Server\ROOT -Credential $cred -Persist 

test-path 'Z:' 

Remove-PSDrive -Name Z -PSProvider FileSystem 

} -trigger $JobTrigger –ScheduledJobOption $MyOptions 
+0

「如果我通過作業運行」?怎麼樣 ?開始工作,使用任務計劃程序,還有其他的東西? –

+0

@Kayasax Register-ScheduledJob -name「test」-scriptblock {$ SCRIPT} -trigger $ JobTrigger -ScheduledJobOption $ MyOptions – XXInvidiaXX

回答

0

嗯,它不完全是我原來的問題的答案,但我能夠通過使用invoke-command和test-path並通過-arg給出參數來解決我的問題。

Invoke-Command -ComputerName $FTPADRESS -ArgumentList $DIRECTORY -ScriptBlock {param ($DIR) 
        $check = Test-Path -Path "\\SERVER\ROOT\$DIR" 
        if ($check -ne $true) {New-Item -ItemType directory -Path "\\SERVER\ROOT\$DIR"} 
                       } 

與得到的兒童項目相同。

0

你可能有SYSTEM帳戶下運行的工作。使用-Credential參數來提供您的帳戶憑據(無論您以交互方式成功運行命令時使用哪個帳戶登錄)。

順便說一句,Register-ScheduledJob使用任務計劃程序。您可以在任務計劃程序中檢查作業的屬性,以查看它配置爲運行的帳戶。

+0

這就是讓我感到奇怪的原因。我甚至沒有以管理員身份登錄。通常我不應該能夠測試到服務器的路徑。但只要我一直手動做所有事情,它就可以工作。證書沒有改變任何東西 - 即使是使用DomainAdmin證書 - 因爲這一臺服務器不是我們域的成員。 ~~檢查了任務計劃程序。在那裏沒有什麼特別的東西......屬性都是我定義它們的方式。 – XXInvidiaXX

+0

但是它在哪個帳戶下運行?您應該在任務的「屬性」的「常規」選項卡上看到該圖標。 –

+0

有寫我的個人帳戶。但我以管理員的身份嘗試過 - 同樣的問題 – XXInvidiaXX