2014-09-04 51 views
1

在我開始之前,請注意我是Powershell的初學者,所以我提出的一些問題對於更有經驗的人可能看起來非常明顯和愚蠢。Powershell - 運行.ps1不起作用,但通過控制檯本身運行它

我的腳本有問題。如果我複製粘貼到Powershell本身,它沒有問題。但是,將其放入.ps1文件中,並使其在Powershell中執行不起作用。任何人都可以告訴我爲什麼,以及我能做些什麼來使它使用.ps1?這裏的代碼:

$Group = import-csv -path C:\Output\Gruppe.csv 
$DomainUsers = import-csv -path C:\Output\DomainUsers.csv 
$ErrorActionPreference = "SilentlyContinue" 
Get-ADGroupMember –identity Test –recursive | select "samaccountname" | Export-csv –path C:\Output\Gruppe.csv -NoTypeInformation 
Get-ADUser –Filter * -SearchBase 」ou=Domain Users,dc=sfol,dc=local」 | select "samaccountname" | Export-csv –path C:\Output\DomainUsers.csv –NoTypeInformation 
Compare-Object $Group $DomainUsers -property samaccountname -IncludeEqual | where-object {$_.SideIndicator -eq "=="} | select "samaccountname" | Export-csv C:\Output\Difference.csv –NoTypeInformation 
(Get-Content C:\Output\Difference.csv) | % {$_ -replace '"', ""} | out-file -FilePath C:\Output\Difference.csv -Force -Encoding ascii 
$File = "C:\Output\Difference.csv" 
$Time = Get-Date 
ForEach ($User in (Get-Content $File)) 
{ Try { 
     Remove-ADGroupMember -Identity "Test" -Member $User -Confirm:$false -ErrorAction Stop 
     Add-Content c:\Output\Gruppelog.log -Value "$Time - $User slettet fra gruppen" 
    } 
    Catch { 
     Add-Content c:\Output\Gruppelog.log -Value "$Time - $User medlem kunne ikke blive slettet fra gruppen pga: $($Error[0])" 
    } 
} 

我也有另一個問題,我注意到,因爲我正在寫這個問題。該腳本的功能是從OU和組中打印用戶列表。然後使用打印出的兩個文件將OU與組進行比較,並打印出一個新的用戶列表,其中只包含OU和組中存在的用戶。然後它使用新的用戶列表從用戶組中刪除用戶(以便在OU和組中都不存在用戶)。

這個腳本在我第一次運行時運行良好,但如果我繼續將用戶重新添加到組中,再次運行腳本,有時它只會刪除一些用戶。如果我在運行該腳本後執行ctrl + c和CLS,它會正常工作。如前所述,我是一個初學者,所以我只想知道爲什麼它沒有按Ctrl + c或cls第二次不能100%工作。對不起,如果我不善於解釋,並且我不指望你幫助我,因爲它不是問題的一部分。但如果可以的話,我會很感激。

親切的問候,影子

+1

您可能遇到執行策略問題,請在控制檯中嘗試「Set-ExecutionPolicy RemoteSigned」,然後腳本文件應按預期方式運行。請參閱http://technet.microsoft.com/fr-fr/library/ee176961.aspx – Gruntzy 2014-09-04 09:30:05

+0

感謝Gruntzy,我已經這樣做了,所以也許這可以幫助有類似問題的其他人。但是,與此同時,我發現這是因爲在執行「Import-Module ActiveDirectory」時,ActiveDirectory模塊顯然不會永久添加。我認爲它的確如此。在代碼的開頭添加'Import-Module ActiveDirectory'解決了問題。謝謝您的幫助! – ShadowSF96 2014-09-04 10:03:12

回答

0

問題是沒有導入模塊ActiveDirectory。我認爲,當你導入模塊一次,它將留在將來在Powershell中使用。事實並非如此,所以我所做的解決該問題的方法是在代碼的開頭添加Import-Module ActiveDirectory。我還沒有想出我的獎金問題,所以如果任何人都可以提供幫助,那就太好了。

相關問題